MATLAB 标准线性规划

标准形式

\[ minz = \sum_{j=1}^n c_jx_j\\ s.t.\quad \sum_{j=1}^n a_{ij}x_j \leq b_i\\ s.t.\quad \sum_{j=1}^n a_{ij}x_j = b_i \]

  • 目标函数是最小值,不是最小值要化为最小值

  • 约束条件有两类,一类是小于等于,另一类是等于

linprog函数

\[ [x,fval]=lingrog(c,A,b,Aeq,Beq,LB,UB) \]

  • x 为最优解, fval 为最优的目标函数值

  • c 为目标函数系数,列向量

  • A为小于等于的系数矩阵,b为小于等于值列向量

  • Aeq,Beq为等于约束,含义同上

  • LB为 \(x_i\) 的下界,UB为上界,列向量

  • 注意后面的参数可以省略,中间如果有条件用不到,需要用【】占位

实例

\[ max\,z=2x_1+3x_2-5x_3\\ s.t.\begin{cases} x_1+x_2+x_3=7\\ 2x_1-5x_2+x_3 \geq 10\\ x_1,x_2,x_3 \geq 0 \end{cases} \]

c = [-2;-3;5];
A = [-2 5 -1];
b = -10;
Aeq = [1 1 1];
beq = 7;
LB = [0;0;0];
[x,fval] = linprog(c,A,b,Aeq,beq,LB);
disp(x);
disp(-fval);

在这里插入图片描述


本文章使用limfx的vsocde插件快速发布