在MATLAB优化工具箱中,可用linprog函数求解线性规划问题。linprog函数的语法格式为:
x = linprog (f, A, b):求解问题 min f'*x,约束条件为A*x <= b。
x = linprog (f, A, b, Aeq, beq):求解上面的问题,但增加等式约束,即Aeq*x = beq。若没有不等式约束,则令A=[ ],b=[ ]。
x = linprog (f, A, b, Aeq, beq, lb, ub):定义设计变量x的下界lb和上界ub,使得x始终在该范围内。若没有等式约束,则令Aeq=[ ],beq=[ ]。
x = linprog (f, A, b, Aeq, beq, lb, ub, options):用options指定的优化参数进行最小化。
[x, fval] = linprog (...):返回解x处的目标函数值fval。
[x, fval, exitflag, output] = linprog (...):返回exitflag值,描述函数计算的退出条件,返回包含优化信息的输出参数output。
[x,fval, exitflag, output, lambda] = linprog (...):将解x处的Lagrange乘子返回到lambda参数中。
在上述语法格式中,lambda参数为解x处包含Lagrange乘子的结构。它有以下一些字段:
Lower:下界lb。
Upper:上界ub。
Ineqlin:线性不等式。
Eqlin:线性等式。
exitflag参数表示算法终止的原因,下面列出不同值对应的退出原因:
1:函数在解x处收敛。
0:迭代次数超过options.MaxIter。
-2:没有找到可行点。
-3:问题无界。
-4:执行算法时遇到NaN。
-5:原问题和对偶问题都不可行。
-7:搜索方向太小,不能继续前进。