matlab解决一类问题,几类可以神奇转化为线性规划的问题matlab求解.PDF

几类可以神奇转化为线性规划的问题matlab求解.PDF

几类可以神奇转化为线性规划的问题 matlab 求解

有些有约束的“伪线性规划” 问题可以巧妙转化成线性规划的问题得以求解。实在太巧秒了。

1.第一类问题(含绝对值的“伪线性规划” 问题):

则上面的优化问题转化为:

程序:

c=[1,2,3,4,1,2,3,4];

Aeq=[1,‐1,‐1,1,‐1,1,1,‐1;1,‐1,1,‐3,‐1,1,‐1,3;1,‐1,‐2,3,‐1,1,2,‐3];

beq=[0;1;‐1/2];

lb=zeros(8,1);

uv0=ones(8,1);

options = optimset('LargeScale', 'off', 'Simplex', 'on','Diagnostics','on','MaxIter',1000);

[uv,fval,exitflag,output,lambda]=linprog(c,[],[],Aeq,beq,lb,[],uv0,options)

解得 u1,u2,u3,u4,v1,v2,v3,v4 分别为:1/4,0,0,0,0,0,0,1/4,即 x1,x2,x3,x4 的值分别为:1/4,0,0,‐

1/4 时,最小者为 1.25

用 Lingo 验证结果:

model:

min=@abs(x1)+2*@abs(x2)+3*@abs(x3)+4*@abs(x4);

x1‐x2‐x3+x4=0;

x1‐x2+x3‐3*x4=1;

x1‐x2‐2*x3+3*x4=‐1/2;

@free(x1);@free(x2);@free(x3);@free(x4);

end

Objective value:        1.250000

Variable       Value

X1       0.2500000

X2        0.000000

X3        0.000000

X4      ‐0.2500000

与 matlab 求得结果一致。

2.第二类问题(含取最大或最小值的“伪线性规划”问题):

现令 x0=max{x1‐x2+x3 ,x1+x2,x1‐x3},故有

x0>=x1‐x2+x3,x0>=x1+x2,x0>=x1‐x3

故上面的规划问题转换为:

程序:

clear;

clc;

c=[1,0,0,0];

Aeq=[0,1,1,‐1;0,2,‐1,0];

beq=[1;2];

A=[0,1,‐2,1;‐1,1,‐1,1;‐1,1,1,0;‐1,1,0,‐1];

b=[1;0;0;0];

lb=zeros(3,1);

xx0=[‐inf;0;0;0];

options = optimset('LargeScale', 'off', 'Simplex', 'on','Diagnostics','on','MaxIter',1000);

[x,fval,exitflag,output,lambda]=linprog(c,A,b,Aeq,beq,lb,[],xx0,options)

求得结果:x1,x2,x3 分别为:1,0,0 时,取得最优解为 1。

用 Lingo 验证结果:

model:

sets:

object/1..3/: f;

endsets

f(1) = x1‐x2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值