两阶段随机规划背包问题

关键字:COPT,Gurobi,Benders Decomposition,Integer-L-shaped Algorithm, stochastic program

**摘要:**本文提供了两阶段随机规划背包问题的数学模型和4种求解方法,方法1:python + COPT;方法2:python + COPT + Benders Cut + L-Shaped;方法3:python + Gurobi;方法4:python + Gurobi + Benders Cut + L-Shaped。

不知道大家是否和小编一样,在学习数学模型求解方面的知识时,找到的资料要么太简单无法拓展,要么太难无法深入,要么………

今天的推文极有可能正中大家下怀,它相比简单问题进了1个台阶,比复杂问题退了不止5个台阶,今天继续为大家带来两阶段随机规划的推文,想想距离上次随机规划的推文还是在…………上次

我们之前MATLAB数学建模(十二) | 随机规划这篇推文初步介绍了随机规划,今天我们在此基础上讲解随机规划的其中一部分研究内容——期望值模型。后续的推文我们将围绕本篇推文以及本篇的参考文献以视频的方式进一步介绍随机规划,欢迎大家前来学习。

问题描述

疫情结束后,仪同学计划背着他的好几个极地背包开心的去骑行,他准备在背包里装一些物品以保证骑行所需,待装的每个物品都具有一定的重量以及骑行收益,但有一部分物品的收益是随机的,且概率已知,于是他计划分两个阶段将物品装进他的极地背包,且要保证在不超过背包容量的前提下使骑行收益最大,问他都需要装哪些物品?


随机规划模型

在这里插入图片描述

其中,各个变量的含义如下所示:


随机规划模型的拓展形式

在这里插入图片描述
随机规划模型转化为拓展形式的本质就是对期望转化为可以求解的形式,即
E ( X ) = ∑ i p i x i E_{}(X) = \sum_{i}p_ix_i\\ E(X)=ipixi
对应论文中的
E ( Q ( x , w ) ) = ∑ w ∈ Ω ∑ j ∈ N ∑ k ∈ K p w q w k y w k j E_{}(Q(x,w)) = \sum_{w\in \Omega}\sum_{j\in N}\sum_{k\in K}p_wq_{wk}y_{wkj}\\ E(Q(x,w))=wΩjNkKpwqwkywkj


算法步骤


学习步骤推荐

Step1: 结合本推文通读参考文献–>论文比较简单;

Step2: 调试跟踪代码–>10分钟即可掌握;

Step3: 无论步骤2调试的是哪一个版本的代码–>花5分钟即可将其转化为另一个版本的代码,如python + COPT + Benders Cut + L-Shaped转python + Gurobi + Benders Cut + L-Shaped。


代码福利

添加微信即可获得以下四个版本的求解代码,本推文代码修改了参考文献中的一些小错误(添加微信时务必备注学校/公司 + 姓名): YiMC0416

方法1:python + COPT

方法2:python + COPT + Benders Cut + L-Shaped

方法3:python + Gurobi

方法2:python + Gurobi + Benders Cut + L-Shaped

COPT, Gurobi,CPLEX 与 C++, Java, Julia之间排列组合的版本如时间允许会陆续推出,分享给热衷随机规划的有缘人


参考文献

1.HosseinTohidi/L-shaped-Decomposition (github.com)(该地址论文中的代码有问题,可自行修改)

OK,今天就到这里啦,各位可点击下方图片留言。

我们已经推出粉丝QQ交流群,各位小伙伴赶快加入吧!!!


咱们下期再见

近期你可能错过了的好文章

新书上架 | 《MATLAB智能优化算法:从写代码到算法思想》

优化算法 | 灰狼优化算法(文末有福利)

优化算法 | 鲸鱼优化算法

遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码

粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码

知乎 | bilibili | CSDN:随心390

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值