例:利用列舉法求解下面的0-1型整數規劃:
0-1型整數規劃是整數規劃中的特殊情形,變數僅取0或1。本題的求解方法為列舉法,檢查變數取值為0或1的每一種組合,比較目標函式值以求最優解。另外,本題也可用linprog
命令來求解。
(1)列舉法
m檔案:
a=[1,2,-1;1,4,1;1,1,0;4,0,1];
x=zeros(3,8);
b=[2;4;3;6];
c=[3,-2,5];
z=zeros(1,8);
x(:,1)=[0;0;0];
x(:,2)=[0;0;1];
x(:,3)=[0;1;0];
x(:,4)=[0;1;1];
x(:,5)=[1;0;0];
x(:,6)=[1;0;1];
x(:,7)=[1;1;0];
x(:,8)=[1;1;1];
z=c*x;
while
(1)
[m n]=find(z==max(z)); if
a*x(:,n)>=b
z(n)=0;
else
x=x(:,n)
zmax=z(n)
break;
end
end
執行結果:
>> yunchou5213(對應的m檔名)
x =101
zmax =
8(2)linprog
命令求解
使用linprog
命令求解時,只要將目標函式的係數乘以
-1,轉換為
min問題,並限制變數的上下限為1和
0 m檔案:
f=[-3;2;-5];
a=[1 2 -1;1,4,1;1,1,0;4,0,1];
b=[2;4;3;6];
aeq=;
beq=;
lb=[0;0;0];
up=[1;1;1];
[x,fval]=linprog(f,a,b,aeq,beq,lb,up)
執行結果:
>> yunchou521 (對應的m檔名)
x =101
fval =
-8由於此問題為max問題,而linprog
命令所求得的解是按照min問題求得的,因此最優解為8。
Matlab 列舉法求解指派問題
例 有乙份中文說明書,需譯成英 日 德 俄四種文字,分別記作e,j,g,r,現有甲 乙 丙 丁四人,他們將中文說明書翻譯成不同語種的說明書所需時間如下表所示。問應指派何人去完成何工作,使所需時間最少?人員任 務ej gr甲2 15134乙 1041415丙9 141613丁 78119 指派問題是0...
暴力求解 列舉法
0 9全排列 輸入正整數n,按從小到大的順序輸出所有形如abcde fghij n的表示式,其中a j恰好為數字0 9的乙個排列,n為2到79 樣例輸入 62 樣例輸出 79546 01283 62 94736 01528 62剛開始想用堆疊來實現0到9全排列,還有五個for迴圈也可以,但是想到st...
matlab利用牛頓法求解非線性方程01
在如下鏈結中,本人看到了牛頓法求解非線性方程的乙個程式,給人耳目一新的感覺。但不知何故,本人未能執行該博主寫的程式,於是我對原程式做了一定修改,程式得以執行,如下 牛頓法程式 function gen newton f,x,tol f為函式,x0為初值,tol為指定允差,如果預設,預設為1e 6 i...