线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题。
其基本形式可以归纳为:
\[ \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
来源:博客园
作者:GShang
链接:https://www.cnblogs.com/gshang/p/11486534.html