数学建模 匈牙利算法求解整数规划基本原理与编程实现
投資問(wèn)題(0-1規(guī)劃)
匈牙利算法求解0-1規(guī)劃問(wèn)題
解答:
項(xiàng)目之間是互斥關(guān)系,所以使用x1+x2+x3=1;
項(xiàng)目5是以項(xiàng)目1為先驗(yàn)條件,所以x5<=x1,意味著x1=1時(shí),x5=1或0 ,但x1=0時(shí),x5=0
案例- 互斥約束問(wèn)題
1)當(dāng)兩個(gè)約束條件是互斥時(shí),新建立一個(gè)約束條件y(0-1)
2)如果M取無(wú)窮大的數(shù),此時(shí)就能讓其中一項(xiàng)約束失去作用
3)這道題是說(shuō)存在一個(gè)約束 4x1+5x2<=200和另一個(gè)約束3x1+5x2<=180,這兩個(gè)約束互斥,所以引入一個(gè)新的約束M
互斥約束的推廣
p-q=yi相加:在p個(gè)約束條件中選擇q個(gè)
案例-固定費(fèi)用問(wèn)題
解答:
可變成本就是成本,利潤(rùn)=售價(jià)-可變成本
最終:
這里還存在一個(gè)問(wèn)題:如果不租用每個(gè)產(chǎn)品對(duì)應(yīng)的生產(chǎn)線,則不能夠生產(chǎn)相應(yīng)的產(chǎn)品
所以要引入M1(無(wú)窮大的數(shù)),檢驗(yàn)x1,x2,x3是否有生產(chǎn)
案例-指派問(wèn)題
解答:
1)因?yàn)槊恳粋€(gè)人可以選擇四項(xiàng)工作中的一個(gè),共有四個(gè)人,則一共有4*4=16項(xiàng)
所以,要使用二維數(shù)組的樣式xij來(lái)表示第i個(gè)人是否做第j項(xiàng)工作
指派問(wèn)題標(biāo)準(zhǔn)形式
數(shù)學(xué)模型
非標(biāo)準(zhǔn)形式的指派問(wèn)題
增加新的約束或新的約束條件
1)
最大化指派問(wèn)題:不是成本和時(shí)間最小化指派問(wèn)題,而是利潤(rùn)最大化
使用最大元素-所有的值=新的指派系數(shù)
2)
人數(shù)和工作數(shù)不等,代價(jià)為0,xii的值為0
3)
一個(gè)人可做多件工作,幾個(gè)相同的人,不做任何限制
4)
某工作一定不能由某人做,若x13=0,則設(shè)x13<=0
指派問(wèn)題的匈牙利解法的一般步驟
1)系數(shù)矩陣:每個(gè)人做每項(xiàng)工作所需要付出的代價(jià)
2)aij->bij
變?yōu)樗械男泻退械牧兄挥幸粋€(gè)1,其余元素全為0,意味著整個(gè)矩陣的秩=4
第一步:
第二步:
1)獨(dú)立0元素:行和列都不相等的0元素
2)
只有一個(gè)0元素的行,劃掉所在列
只有一個(gè)0元素的列,劃掉所在行
1)
如果還有0元素沒(méi)有畫(huà)圈,就找到最少的0元素的行或列
2)
畫(huà)圈數(shù)目=矩陣的階,指派問(wèn)題的最優(yōu)解已找到
第三步:
直線數(shù)l=畫(huà)圈的數(shù)目m
第四步:
行減去min,列加上min,之后再回到第二步,去重復(fù)過(guò)程
匈牙利解法的實(shí)例1
解答:
第一步
第二步:
記住反復(fù)做
最后:
輸出的矩陣:圈為1,其余為0
最優(yōu)解=1所對(duì)應(yīng)的原始矩陣元素相加
匈牙利解法的實(shí)例2
解答:
第一步和第二步:
第三步:
第四步:
加減最小得到新的指派矩陣,再重復(fù)第二步
重復(fù)第二步:
最優(yōu)解=2+4+1+8=15
指派問(wèn)題的matlab程序
1)向量方便后期計(jì)算
2)for循環(huán),使所有的行取值為1,所有的列取值為1
總結(jié)
以上是生活随笔為你收集整理的数学建模 匈牙利算法求解整数规划基本原理与编程实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Delete..In.. 删除语句的优化
- 下一篇: 演示IPFS的一个完整的流程以及针对部分