matlab及lingo软件处理线性规划
一、matlab线性规划求解
其矩阵形式为:
常用的是linprog形式,求解线性规划问题
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
其中x表示x优化的取值,fval表示优化后目标函数的值,c为目标函数x的系数矩阵,A为等式约束x的系数,Aeq为非等式约束的自变量x的系数,vlb和vub是x自变量的约束上界和下界。
例:
c=[-10,-6,-4];
A=[1,1,1;10,4,5;2,2,6];
b=[100;600;300];
Aeq=[];beq=[];vlb=[0,0,0];vub=[];
[x,fval]=linprog(c,A,b,beq,beq,vlb,vub)
其中,linprog只能求局部最小值优化,全局求最小值可用模拟退火法、差分进化法等,求最大值加负号求解
二、lingo求解线性规划问题
lingo可用来求解线性规划及非线性规划问题
例:
model:
max=10*x1+6*x2+4*x3;
x1+x2+x3<=100;
10*x1+4*x2+5*x3<=600;
2*x1+2*x2+6*x3<=300;
@gin(x1);@gin(x2);@gin(x3);
end
较matlab程序简明易行,其优点还在于它的求解界面
其中Reduced Cost 表示当系数为多少时,可以取值相应x
Dual Price 表示增加一个单位值时,最终结果上升多少
灵敏度分析,表示x波动范围,系数波动范围,规划不变