matlab解決線性的整數規劃問題與0 1規劃問題

2021-09-26 18:17:50 字數 1539 閱讀 1571

在各種優化問題中,有一類特殊的優化問題與其他問題有顯著不同,它就是整數規劃問題,現在我們來看線性的整數規劃如何在matlab中得到求解,我們需要的是intlinprog函式(intlinprog可分解為int lin prog,即integer +linear+ programming,『整數』 『線性』 『規劃』)。

在整數規劃的問題上更進一步,增加約束條件,約定整數自變數的下限為0,上限為1,即將問題進一步約束成為了0-1規劃問題。

1.我們先看這類問題的標準形式:

2.再來看函式的呼叫格式

與線性規劃函式linprog函式的呼叫基本相同,不同之處在於多了乙個intcon引數

這個引數,限定了在自變數矩陣x中哪些量是整數,例如:比如x1和x3是整數變數,那麼intcon=[1,3];

各個矩陣的含義參考專欄之前的「matlab解決有約束的線性規劃」一文

【例】

【求解】

f=[8 1];

a=[-1 -2;-4 -1;2 1];

b=[14 -33 20];

lb=zeros(2,1);

intcon=[2];

[x,fval,exitflag,output]=intlinprog(f,intcon,a,b,,,lb,)

執行結果

x =

6.5000

7.0000

fval =

59.0000

【例】

【求解】

f=[-6 -2 -3 -5];  %求解最大值,需要在目標函式前面加個符號,轉化為求極小值問題

a=[-3 5 -1 -6;2 1 1 -1;1 2 4 5];

b=[-4 3 10]';

intcon=[1 2 3 4];

lb=zeros(4,1); %限定下限

ub=ones(4,1); %限定上限

[x,fval,exitflag,output]=intlinprog(f,intcon,a,b,,,lb,ub);

x,-fval %因為目標函式加了負號,因此顯示結果時也要加負號

【結果】

x =

1.0000

01.0000

1.0000

ans =

14.0000

混合整數線性規劃問題 Matlab

一般來說可以使用 x演算法計算正實數範圍內的線性規劃問題,但是在實際生活中我們常常會遇到帶有相關整數要求的線性規劃問題,我們稱之為整數線性規劃問題,而更複雜的情況下,問題中既有實數又需要整數,這時我們將只能通過分支定界法來進行對最優化問題的近似求解。matlab中有這樣的函式,可以輕易求解這類混合整...

非線性整數規劃 Matlab 隨機取樣計算法

matlab求下列整數 目標函式f,約束條件g function f,g mengte x f x 1 2 x 2 2 3 x 3 2 4 x 4 2 2 x 5 2 8 x 1 2 x 2 3 x 3 x 4 2 x 5 g 1 sum x 400 g 2 x 1 2 x 2 2 x 3 x 4 ...

matlab解決有約束的線性規劃問題

在 matlab解決有約束的二次規劃問題 中,提到了線性規劃問題 linear programming 而線性規劃問題實際與二次規劃問題十分相似,現在在matlab中實現求解 這是用於求解問題的linprog 函式文件 同樣使用乙個例子說明這個函式的呼叫方法 例 求解如下線性規劃問題 分析 對比幫助...