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\\
\]