线性规划问题

1.1线性规划的基本式如下


在Matlab中,线性规划问题一般是求解的最小值,如果需要求解最大值,那么只需要对目标值加上一个负号即可。

%其中的c和x为n维列向量。A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量
[x,fval]=linprog(c,A,b)
[x,fval]=linprog(c,A,b,Aeq,beq)
[x,fval]=linprog(a,A,b,Aeq,beq,lb,ub)
  • 例题


f=[-2; -3; 5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
x, y=-y

1.2转化为线性规划问题

目标值变成min|x1|+|x2|+|x3|,那么可以利用,对于任意的x,存在u,v>0满足x=u-v,|x|=u+v,事实上,取u=(x+|x|)/2,v=(|x|-x)/2,就可以满足

1.2.1例题



 a=0;hold on
while a<0.05
    c=[-0.05,-0.27,-0.19,-0.185,-0.185];
    A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];
    b=a*ones(4,1);
    Aeq=[1,1.01,1.02,1.045,1.065];
    beq=1; LB=zeros(5,1);
    [x,Q]=linprog(c,A,b,Aeq,beq,LB);
    Q=-Q; plot(a,Q,'*k');
    a=a+0.001;
end
xlabel('a'),ylabel('Q')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。