【数学建模lingo学习】lingo实现0-1规划问题2:背包问题

lingo语言相较于matlab更加简洁,且求解速度更快,如果有不了解lingo语言的小伙伴可以通过以下视频进行学习:

 

Lingo(1):基础篇——基本界面与解方程_哔哩哔哩_bilibili

下面我将分享一道例题来帮助大家更好地熟悉和练习使用lingo语言求解规划问题。

有10件货物要从甲地运送到乙地,每件货物的重量(单位∶吨)和利润(单位:元)如下表所示。
 

物品12345678910
重量(t)6345123542
利润(元)54020018035060150280450320120

由于只有一辆最大载重为30t的货车能用来运送货物,所以只能选择部分货物进行运送。
要求确定运送哪些货物,使得运送这些货物的总利润最大。
 

解 设pi(i=1,2,..10)为第i个物品的利润,wi(i=1,2,..10)为第i个物品的重量,xi(i=1,2,..10)的取值及定义为:

由题意知需要使总利润最大,可得目标函数为:

车辆最大载重为30t,可得约束条件1

由于xi(i=1,2,..10)的取值只有0和1,则可得约束条件2:

使用lingo求解结果:

model:
!创建矩阵;
sets:
factory/1..10/:x,p,w;
endsets

!输入数据;
data:
p=540,200,180,350,60,150,280,450,320,120;
w=6,3,4,5,1,2,3,5,4,2;
enddata

!列出目标函数和约束条件求解,注意,两个变量相乘需要使用*来连接,否则会报错;
max=@sum(factory(i):x(i)*p(i));
@sum(factory(i):w(i)*x(i))<=30;
@for(factory(i):@bin(x(i)));
end

利润最大为:2410元

需要运送的物品情况为,0表示不运送该物品。1表示运送该物品

物品是否运送
11
21
30
41
50
61
71
81
91
101

非常感谢各位小伙伴看到这里,如果觉得有用的话给我点个赞吧,谢谢各位靓仔靓女的支持~

  • 14
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值