Matlab线性规划问题模型代码

线性规划问题的基本内容

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

其基本形式可以归纳为:
\[ \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\) 为自变量取值范围的上限矩阵。


Matlab模型代码

调用形式

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

Matlab程序

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

猜你喜欢

转载自www.cnblogs.com/gshang/p/11486534.html