MATLAB标准线性规划

标准形式

m i n z = j = 1 n c j x j s . t . j = 1 n a i j x j b i s . t . j = 1 n a i j x j = b i 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 , f v a l ] = l i n g r o g ( c , A , b , A e q , B e q , L B , U B ) [x,fval]=lingrog(c,A,b,Aeq,Beq,LB,UB)

  • x 为最优解, fval 为最优的目标函数值
  • c 为目标函数系数,列向量
  • A为小于等于的系数矩阵,b为小于等于值列向量
  • Aeq,Beq为等于约束,含义同上
  • LB为 x i x_i 的下界,UB为上界,列向量
  • 注意后面的参数可以省略,中间如果有条件用不到,需要用【】占位

实例

m a x z = 2 x 1 + 3 x 2 5 x 3 s . t . { x 1 + x 2 + x 3 = 7 2 x 1 5 x 2 + x 3 10 x 1 , x 2 , x 3 0 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);

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43575267/article/details/89605712
今日推荐