Matlab中intlinprog函數的用法總結


Matlab中 intlinprog函數用法簡介

1.簡介

intlinprog是matlab中用於求解混合整數線性規划(Mixed-integer linear programming)的一個函數,用法基本和linprog差不多

Matlab中,該模型的標注寫法如下

\[min\ f\,^Tx\;\; \\ s.t. \begin{equation} \left\{ \begin{array}{**lr**} x(intcon)\ are \ integers \\ A \cdot x \leq b \\ Aeq\cdot x =beq\\ lb \leq x \leq ub \end{array} \right. \end{equation} \]

\[f,x,b,beq,lb,ub,intcon是向量;A和Aeq是矩陣 \]

2.基本語法

2.1 x=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)

與linprog相比,多了參數intcon,代表了整數決策變量所在的位置

例如

\[x_1和x_3是整數變量 \\ 則有,intcon=[1,3] \]

3.實例

示例1,求解整數規划

\[max\ z=5x_1+8x_2 \\ s.t. \begin{equation} \left\{ \begin{array}{**lr**} x_1+x_2\leq6\\ 5x_1+9x_2\leq45\\ x_1,x_2\geq0,且x_1,x_2為整數 \end{array} \right. \end{equation} \]

求解代碼

f=[-5 -8];
A=[1 1;5 9];
b=[6 45];
lb=zeros(2,1);
intcon=[1 2];
[x,fval]=intlinprog(f,intcon,A,b,[],[],lb,[]);
x,fval=-fval

所得結果為:

\[x_1=0,x_2=5\\ z=40 \]

示例2,求解0-1規划

\[max\ z =6x_1+2x_2+3x_3+5x_4\\ s.t. \begin{equation} \left\{ \begin{array}{**lr**} 3x_1-5x_2+x_3+6x_4\geq4\\ 2x_1+x_2+x_3-x_4\leq3\\ x_1+2x_2+4x_3+5x_4\leq10\\ x_j=0或1,j=1,2,3,4 \end{array} \right. \end{equation} \]

求解代碼:

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]=intlinprog(f,intcon,A,b,[],[],lb,ub);
x,fval=-fval

所得結果為:

\[x_1=1\\ x_2=0\\ x_3=1\\ x_4=1\\ z=14\\ \]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM