Matlab 列舉法求解0 1型整數規劃

2021-09-24 00:08:52 字數 1284 閱讀 6594

例:利用列舉法求解下面的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...