1.(整數規劃)規劃中的變數(部分或全部)限制為整數,主要用到bintprog函式和intlinprog函式。
1.1指派問題:
ex:
c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 58 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];2.(0-1規劃)0− 型整數規劃是整數規劃中的特殊情形,它的變數的取值僅為 0 或 1。(具體情況見intlinprog函式)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整數規劃,但他也可以處理整數規劃問題。
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...