matlib解決幾類規劃問題(線性)

2021-07-16 07:28:39 字數 2156 閱讀 4690

1.(整數規劃)規劃中的變數(部分或全部)限制為整數,主要用到bintprog函式和intlinprog函式。

1.1指派問題:

ex:

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);

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);

[x,y]=bintprog(c,,,a,b);

x=reshape(x,[5,5]),y

顯示為

x =

0     0     0     0     1

0 0 1 0 0

0 1 0 0 0

0 0 0 1 0

1 0 0 0 0

1.2.intlinprog 函式,用於進行整數規劃和整數非整數的混合規劃。

使用形式如下:

x = intlinprog(f,intcon,a,b)

x = intlinprog(f,intcon,a,b,aeq,beq)

x = intlinprog(f,intcon,a,b,aeq,beq,lb,ub)

x = intlinprog(f,intcon,a,b,aeq,beq,lb,ub,options)

x = intlinprog(problem)

[x,fval,exitflag,output] = intlinprog(_)

其中,f為規劃目標,intcon為包含整數變數下標的向量。a、b為不等式約束條件,aeq、beq為等式約束條件,lb、ub為規劃變數的上下限,有關其他幾項引數的具體介紹可以在任意版本matlab中輸入help linprog回車來檢視,這裡只介紹與linprog函式有所不同的intcon引數。

包含整數變數下標的向量,顧名思義,就是你的規劃變數,其中哪一項是整數,intcon裡就加上哪一項。如x2,x3是整數,intcon=[2 3],具體見幫助文件。

ex:

f=[300 450 0 950 300 300 0 200 0 1000];

ic_13=[1,2,3,4,5,6,7,8,9,10];

a=[-210 -300 0 -190 -220 -210 -170 -205 0 -200;

0 -85 0 -50 -70 0 -50 -40 0 0;

-50 -65 0 -45 -40 -40 0 -40 0 0;

-30 0 0 0 0 -30 0 0 0 -100;

0 0 0 0 0 -40 -40 0 0 0;

-30 0 0 0 0 -30 0 -45 0 0;

-20 0 0 0 0 0 -30 0 0 0];

b=[-636;-131;-64;-22;-80;-81;-50];

lb=zeros(10,1);

ub=ones(10,1);

[x,fval]= intlinprog(f,ic_13,a,b,,,lb,ub)

這個例子是說明intlinprog函式可以處理0-1整數規劃,但他也可以處理整數規劃問題。

2.(0-1規劃)0− 型整數規劃是整數規劃中的特殊情形,它的變數的取值僅為 0 或 1。(具體情況見intlinprog函式)

3.(多目標規劃)具體見fgoalattain函式,注意weight和power。我在做多目標的0-1規劃時發現此函式並不行???

4.(線性規劃)具體見linprog函式

總結:其實上述函式的形式是差不多的,讀者要親自試試即可!!

下面是補充的其他規劃問題

5.(非線性規劃)具體見fmincon函式

6.最大最小化問題見函式fminimax函式

目標函式的最大化和最小化問題,但是在某些情況下,則要求最大值的最小化才有意義。例如城市規劃中需要確定急救中心、消防中心的位置,可取的目標函式應該是到所有地點最大距離的最小值,而不是到所有目的地的距離和為最小。

DP入門 動態規劃初步 幾類子串行問題

動態規劃初步 子串行問題,本文包括 最大連續子串行和,最大 長 上公升子串行,最大 長 公共子串行 找出一維陣列中和最大的連續子串行,狀態轉移方程如下 su m ma x a i s um,a i 例題 hdu 1003 max sum 最大連續子串行和 注 此題由於要輸出和最大序列的起始位置和終止...

輪廓線動態規劃問題

好久木有更新了,感覺都有點陌生了,上個月因為各種奇怪的事情都沒有好好刷過題,做過的題也沒好好總結,so,這個月再好好努力!題目傳送 uva 11270 tiling dominoes 基礎的輪廓線動態規劃。ac include include include include include incl...

裝配線問題 動態規劃

裝配線問題 public class forth,通過裝配線上每個站所需時間 int b newint 一條裝配線上的 i 站到另一條裝配線上的 i 1 站所需的時間 int g newint 開始進入裝配線所需的時間 int e newint 出裝配線所需的時間 int dp newint 2 6...