关键字: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)=i∑pixi
对应论文中的
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∈Ω∑j∈N∑k∈K∑pwqwkywkj
算法步骤
学习步骤推荐
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