Matlab线性规划问题模型代码

匿名 (未验证) 提交于 2019-12-02 23:59:01

线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题。

其基本形式可以归纳为:
\[ \min _{x} f^{T} x \]

\[ \text { s.t. }\left\{\begin{array}{l}{A x \leq b} \\ {\text {Aeq} \cdot x=b e q} \\ {l b \leq x \leq u b}\end{array}\right. \]

其中:

\(f\) 为目标函数中的系数矩阵,\(x\) 为自变量。

\(A\) 为不等式约束的系数矩阵,\(b\) 为不等式约束的右端系数矩阵。

\(Aeq\) 为等式约束的系数矩阵,\(beq\) 为等式约束的右端系数矩阵。

\(lb\) 为自变量取值范围的下限矩阵,\(ub\) 为自变量取值范围的上限矩阵。


     [x,fval] = linprog(f,A,b)     [x,fval] = linprog(f,A,b,Aeq,beq)     [x,fval] = linprog(f,A,b,Aeq,beq,lb,ub) 
  • f 为目标函数中的系数矩阵

  • A 为不等式约束系数矩阵(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)

  • b 为不等式约束右端系数矩阵(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)

  • Aeq 为等式约束系数矩阵

  • beq 为等式约束右端系数矩阵

  • lb 为自变量取值范围的下限矩阵

  • ub 自变量取值范围的上限矩阵

在调用时,若不存在等式或者不等式约束时,可以将其输入用 [] 空矩阵表示。

  • x 自变量的取值矩阵
  • fval 目标函数取值


\[ \min z=2 x_{1}+3 x_{2}+x_{3} \]

\[ \left\{\begin{array}{l}{x_{1}+4 x_{2}+2 x_{3} \geq 8} \\ {3 x_{1}+2 x_{2} \geq 6} \\ {x_{1}, x_{2}, x_{3} \geq 0}\end{array}\right. \]

 f = [2;3;1]; A = [1,4,2;3,2,0]; b = [8;6]; lb = zeros(3,1); [x,fval] = linprog(f,-A,-b,[],[],lb,[]) 
 Optimization terminated.  x =      0.8066     1.7900     0.0166   fval =      7.0000  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!