整數規划


整數規划

到整數規划了,可以說是線性規划的特殊情況,當然不能將整數規划的解直接取整得到。

解法有很多:

  • 分支定界法

  • 割平面(圖解法)

  • 隱枚舉法

  • 匈牙利法

  • 蒙特卡洛法

這里主要講計算機如何進行函數調用,哈哈!!!

 

0-1指派問題

模型:分配 n 人去做 n 項工作,每人做且僅做一項工作,若分配第 i 個人做第 j 項工作,需要花費 單位時間,

問如何分配使得工人花費的總時間最少。

變量 第 i 個人是否做第 j 項工作。

 

 

使用MATLAB解決決策問題,都需要轉為一維決策向量,而lingo卻不需要!扎心不。

函數調用:

 

看上去A,b這兩個不等式在0-1指派問題中好像並沒有用到,最重要的是等式表達式Aeq,beq如何將二維決策轉為一維決策問題。其實很巧妙,就是上面的約束條件中的兩個等式,上下界是第3個等式。

直接上矩陣給你看看吧:

 

舉個栗子P17:

 
        
clc, clear
c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5
   8 4 2 3 5;9 10 6 9 10];
c=c(:); a=zeros(10,25); intcon=1:25;
for i=1:5
   a(i,(i-1)*5+1:5*i)=1;
   a(5+i,i:5:25)=1;
end
b=ones(10,1); lb=zeros(25,1); ub=ones(25,1);
x=intlinprog(c,intcon,[],[],a,b,lb,ub);

intcon 指的是整數變量的下標,這里5個變量(25個變量)均為整數。

混合整數規划

P18

這里的0-1部分就不是二維的啦,可以簡單的套公式咯!!!

clc, clear
f=[-3;-2;-1]; intcon=3; %整數變量的地址
a=ones(1,3); b=7;
aeq=[4 2 1]; beq=12;
lb=zeros(3,1); ub=[inf;inf;1]; %x(3)為0-1變量
x=intlinprog(f,intcon,a,b,aeq,beq,lb,ub)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM