Matlab\Lingo:数模09-线性规划模型

例子

在这里插入图片描述
我们由上可以得到线性规划式子:
在这里插入图片描述
要如何解呢?

不同算法(lingo)

可以使用lingo软件:
在这里插入图片描述
在这里插入图片描述
结果为14,x1为4,x2为2。

然而,mac上没有lingo软件,用Matlab行不行?可以。

不同算法(Matlab)

翻阅资料,我找到了Matlab的写法。我们首先要了解线性规划问题的MATLAB标准型,为:
在这里插入图片描述

我们可以使用

[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub]

解这类问题。

x表示所解出的值,是一个按列排序的矩阵。

fval为目标函数值得结果。

f表示目标函数中未知数的系数。

A表示不等式中,位置数的系数,是一个多维数组或一维数组。

b表示不等式右边的值,也是一个矩阵。

Aeq表示等式中未知数的系数(矩阵)。

beq表示等式右边的数。

lb表示未知数取值的下限。

ub表示未知数取值的上限。

对于

在这里插入图片描述

代码如下:

disp('max(0) or min(1)?');
Judge=input('Judge=');
f=[2,3];
A=[1,2;4,0;0,4];
b=[8,16,12];
Aeq=[];
beq=[];
lb=[0;0];
ub=[inf;inf];
if Judge==0
    [x,fval]=linprog(-f,A,b,Aeq,beq,lb,ub);
    x
    fval=-fval
else
    [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub);
    x
    fval
end

并将上式保存为linePlan.m。

在命令行输入linePlan。

在这里插入图片描述
提示是max还是min,我们的题目是max,于是输入0。
在这里插入图片描述
这样就可以获得和lingo一样的答案。

我们可以再找例题试一试;

在这里插入图片描述
(注意,式子中>=号要改成<=,对应的数字也要变号)

代码:

disp('max(0) or min(1)?');
Judge=input('Judge=');
f=[3,-1,-1];
A=[1,-2,1;4,-1,-2];
b=[11,-3];
Aeq=[-2,0,1];
beq=[1];
lb=[0;0;0];
ub=[inf;inf;inf];
if Judge==0
    [x,fval]=linprog(-f,A,b,Aeq,beq,lb,ub);
    x
    fval=-fval
else
    [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub);
    x
    fval
end

在这里插入图片描述
所以x1=4,x2=1,x3=9。目标函数值为2。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值