优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现

作者:陈恺杰,东方航空信息部,算法工程师

修改 & 审校:刘菲雪,清华大学,清华大学深圳国际研究生院,清华-伯克利深圳学院,硕士在读

修改 & 审校:刘兴禄,清华大学,清华大学深圳国际研究生院,清华-伯克利深圳学院,博士在读

优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现

  • 资源受限的基本最短路问题

  • 问题描述

  • 数学模型

  • 复杂度证明

  • ESPPRC的松弛

    • 数学模型

    • 补充完善

  • 总结与展望

  • C++调用CPLEX完整代码获取方式

  • 参考文献

资源受限的基本最短路问题

在使用列生成求解车辆路径规划问题(Vehicle Routing Problem)和人员排班问题(Crew Scheduling Problem)时,定价子问题通常可以看成资源受限基本最短路问题(Elementary Shortest Path Problem with Resource Constraints,)或者其变种问题。因此, 及其变种问题在列生成的应用中是非常重要的。

本篇推文首先介绍 的问题描述以及数学模型,然后详细证明了 的复杂度为强 难( hard in the strong sense)。鉴于 的复杂度,在求解时会将其松弛为资源受限最短路问题(Shortest Path Problem with Resource Constraints,)。 的数学模型在推文中也会进行详细的介绍。推文中出现的模型由 Brian Kallehauge 等人提出,并收录于《Column Generation》一书中(见文献5)
。对于书中的模型,我们使用了 CPLEX 进行数值实验,并根据实验结果对模型进行了相应的补充。

问题描述

有一辆装载容量为 的货车,这辆货车从起点 出发为客户送货,最后到达终点

有两种资源:时间和货车容量(容量可以折算成重量)

个需要服务的客户,这些客户分布在不同的地点,客户集合用 来表示。每个客户 都有各自的商品需求量 和服务开始时间窗,也就是说,客户 的服务开始时刻(即货车到达客户 的时刻)必须落在时间区间 内。

将起点 记作 ,将终点 记作 ,则有节点集合

从节点 到节点   的运输时间为 ,运输成本为

目标:在货车容量不超载,每个客户最多被访问一次且服务开始时刻落在相应的服务时间窗内的情况下,最小化运输总成本


也可以表示为:

  • 给定 (参数)

货车的容量

客户集合

节点集合 ,其中节点 是起点,节点 是终点

客户 的商品需求量

客户 的服务时间窗

经过弧 的运输时间

经过弧 的运输成本

补充:

起点和终点的时间窗均可设置为

  • 约束

货车容量不超载

客户 最多被访问一次

客户的服务开始时刻落在相应的服务时间窗内

  • 目标

最小化运输总成本

数学模型

这一节主要参考的是 Column Generation 书中的第三章,引用 Brian Kallehauge 等人提出的模型:

  • 变量

: 到达点 的时刻

  • 表达式

  • 详解
  • 为目标函数,目标是最小化运输总成本。

  • 为容量约束(capacity constraint),规定总运输量不能超过货车容量。

  • -式 为流平衡约束(flow conservation constraints),其中,

    规定,路径中存在一条起始节点为 的弧。

    为客户节点之间的流平衡约束。

    规定,路径中存在一条目标节点为 的弧。

  • 和式为时间窗约束(time window constraints),其中,

    规定,若路径中存在弧 ,那么到达节点 的时刻不早于到达节点 的时刻加上经过弧 的运输时间。

    值得注意的是,式同时防止了路径中子回路(subtour)的产生,从而确保每个点 在路径中最多出现一次。

    规定,到达点 的时刻必须落在给定的相应时间窗内。同时,式也规定了变量 的值域。

  • 规定了变量 的值域。

  • 补充完善

中需要设定 的值, 满足足够大但是尽量小,可以设为

在使用CPLEX求解器进行数值实验时(完整代码获取方式见文末),返回的解出现如下问题:

x_2_2: 1
x_5_5: 1
x_6_6: 1
x_8_8: 1
x_10_10: 1

任何节点都不能是自己的前继节点或者后继节点,所以我们应该加上约束:

在原来的模型中加上这个约束之后,得到如下结果:

solving time: 0.034 sec
route cost: -214.43
x_0_9: 1
x_5_10: 1
x_7_5: 1
x_9_7: 1
x_10_11: 1
route: 
0-9-7-5-10-11
arrival time at node 0 : 0 
arrival time at node 9281
arrival time at node 7391
arrival time at node 5888
arrival time at node 101091
arrival time at node 111114.76

复杂度证明

在这一节中,我们证明 是一个强 难问题,主要参考的是 Moshe Dror 于1994年发表在 Operations Research 上的文章,并在其基础上做了一些补充。具体证明过程的步骤如下:

  • 步骤 0:将 转化成相应的判定问题

    中, 的参数和约束都保留,并将 的目标替换成如下判定:

    “是否存在一条可行路径,其运输总成本为 ?”

  • 步骤 1:证明 类问题

    我们可以在多项式时间(Polynomial Time)内“瞎猜”一条路径,并在多项式时间内验证

  • 步骤 2:选择一个合适的强 完备问题

    这里我们选择收录于 Computers and Intractability 书中的一个强 完备问题,称为“带时间区间的排序问题(Sequencing Within Intervals, )”, 的问题描述如下:

  • 给定(参数)

    一个任务集合

    每个任务 耗时 且只能在时间区间 内被执行

  • 判定

    是否存在一个可行的排序方式,使得所有任务在时间上互不重叠的情况下被完成

  • 步骤 3:使用伪多项式归约,把 转化成 (即任意一个 的算例都可以用固定的转化成 的算例)。

优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现


详解:

可以看到, 算例中的数取自 算例或设为常数。其中, 中的客户对应 中的任务; 的服务开始时间窗对应 中的任务执行时间窗,但是需要做一些调整。因为 中的 是任务 的最晚结束时刻(latest conclusion time),换算成任务 的最晚开始时刻(latest start time)就是 。因此, 中的 设为 。而 中的弧 的弧值   则设为 。另外,货车容量 设为 。最后,在 中需要判定,是否存在一条可行路径,其运输总成本为

在此算例设计下,如果 的判定为“是”,即存在一个可行的排序方式,使得所有任务在时间上互不重叠的情况下被完成,那么 的判定也为"是",反之亦然。

我们可以直接将 的可行任务执行顺序看成 中访问客户的顺序,这条相应的路径 在 中是可行的,且运输总成本为 ,因为:

  1. 容量约束是必然满足的,因为货车的容量是所有客户需求量的总和
  2. 每个客户只会被访问一次,因为 中每个任务只执行一次
  3. 时间窗约束也是满足的,因为两个问题中的时间窗做了等价转化
  4. 每个客户都访问一次的总成本为

反之,如果我们在找到一个关于 的可行路径,也相当于找到了一个 的可行任务排列顺序。

的算例为 ) 为算例 中最大的数值, 反映算例 的规模,上述的算例归约方式为 ,则规约后的 的算例为 ,上述的算例转化是伪多项式归约(Pseudo-polynomial Transformation),因为:

  1. 上述的转化步骤可以在 的多项式时间内完成

  2. 是满足的,因为 中所有的数值都包含于

  3. 这里可以分情况讨论,

    情况一:

    因为 ,所以 , 又因为 ,所以  ,即 ,也就是说

    成立

    情况二:

    因为 ,所以

    成立

    对于两种情况, 都是满足的,也就是说 可以用关于 的多项式来限制。

得证, 是强 完备问题, 所以 是强 难问题。

ESPPRC的松弛

由于 是强 难问题,在求解时通常会松弛问题中的某些约束。其中,应用非常广泛的就是允许路径中存在子回路,即允许客户被多次访问。如此,问题就变成了资源受限最短路问题( )。

数学模型

基于前面介绍过的 的模型,Brian Kallehauge 等人对 也给出了如下数学模型:

在模型中定义了一个额外的集合 ,用来表示路径中弧的顺序。由于每个客户都可以多次访问,所以无法确定最后求得的路径中包含几条弧,但是路径所包含的弧的个数的上限 是可以确定的。路径长度受限于容量资源和时间资源,所以  

需要注意的是,虽然在 中,每个客户允许被多次访问,但是,起点和终点在路径中还是只能出现一次。

  • 变量

: 第 条弧上到达点 的时刻

  • 表达式

  • 详解
  • 为目标函数,目标是最小化运输总成本。

  • 规定,若路径中不存在第 条弧,那么就不存在第 条弧。

  • 为容量约束,规定总运输量不能超过货车容量。

  • 规定,路径中存在一条起始节点为 的弧。

  • 规定,起始节点为 的弧必须是路径中的第一条弧。

  • 是流平衡约束,规定对于每个客户节点来说,在第 条弧的入度等于在第 条弧上的出度。

  • 规定,路径中存在一条目标节点为 的弧。

  • 与式是时间约束。

  • 规定了变量 的值域。

补充完善

我们使用CPLEX求解器对该模型进行数值实验(完整代码获取方式见文末),测试算例中有10个客户,即 。从决策变量的取值发现如下问题:

  • 问题一

    x_0_0_0 : 1
    x_11_11_1 : 1
    x_6_6_2 : 1

    任何节点都不能是自己的前继或者后继节点,所以,我们应该加上约束:

  • 问题二

    x_5_10_1 : 1
    x_6_10_1 : 1

    不能存在两条下标(index)一样的弧,所以,我们应该加上约束:

  • 问题三

    x_11_0_6 : 1

    节点 不能有后继节点,所以,我们应该加上约束:

  • 问题四

    x_2_0_3 : 1

    节点 不能有前继节点,所以,我们应该加上约束:

  • 问题五

    s_9_4 : 281
    s_9_5 : 121.24

    客户节点可能会在路径中多次出现,服务开始时刻必须是单调递增的,所以,我们应该加上约束:

在模型中补充了上述约束之后再进行求解,得到如下结果:

route length: -214.43
x_0_9_0 : 1
s_0_0 : 0
s_9_0 : 281
======
x_5_10_3 : 1
s_5_3 : 888
s_10_3 : 1091
======
x_7_5_2 : 1
s_7_2 : 391
s_5_2 : 888
======
x_9_7_1 : 1
s_9_1 : 121.24
s_7_1 : 391
======
x_10_11_4 : 1
s_10_4 : 1091
s_11_4 : 1440
======
0-9-7-5-10-11

推文中数值实验的源码以及测试算例可以通过转发集赞或者打赏的方式获取~

总结与展望

在本篇推文中,我们介绍了 以及 的问题描述和文献中的数学模型,并借助CPLEX求解器对模型进行了数值实验,又根据数值实验的结果对文献中的模型进行了补充完善。另外,我们还证明了 是一个强 难问题。正因如此,在求解大规模算例时,单纯依赖求解器的话无法在合理时间内得到高质量的解。更好的方式是使用动态规划来求解,关于动态规划求解 / 会再之后的推文进行详细的介绍,在数值实验的部分也会将动态规划求解与solver求解进行对比。

C++调用CPLEX完整代码获取方式

为了保证推文的紧凑性,我们在推文中省去了读取数据等其他部分的代码。我们也整理好了完整的代码,可供读者进行深入学习和练习。

需要完整代码的小伙伴,可以通过下面的方式获取完整代码。

代码获取方式:

转发该推文至朋友圈,集齐30赞,并将集赞截图发送至公众号后台,即可免费获得。

注意,发送截图到后台时,需要提供姓名学校电话以及邮箱,小编将在2天之后,统一将代码发送给各位小伙伴。2天之内不发送,望各位读者周知。

参考文献

  1. Desrochers, M., Desrosiers, J., and Solomon, M. (1992). A new optimization algorithm for the vehicle routing problem with time windows. Operations Research, 40:342-354.

  2. Dror, M. (1994). Note on the complexity of the shortest path models for column generation in VRPTW. Operations Research 42:977-978.

  3. Garey, M.R. and Johnson, D.S. (1979). Computers and Intractability, W.H. Freeman and Co., San Francisco.

  4. Kallehauge, B., Larsen, J., Madsen, O.B., Solomon, M.M. (2005). Vehicle Routing Problem with Time Windows. In: Desaulniers, G., Desrosiers, J., Solomon, M.M. (eds) Column Generation. Springer, Boston, MA.

  5. Desaulniers, Guy, Jacques Desrosiers, and Marius M. Solomon, eds. Column generation. Vol. 5. Springer Science & Business Media, 2006.

优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现

关注我们

运小筹公众号

         运小筹公众号致力于分享运筹优化(LP、MIP、NLP、随机规划、鲁棒优化)、凸优化、强化学习等研究领域的内容以及涉及到的算法的代码实现。编程语言和工具包括Java、Python、Matlab、CPLEX、Gurobi、SCIP 等。欢迎广大同行投稿!欢迎大家关注我们的公众号“运小筹”以及粉丝群!

优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现

如果群满加不进去,可以加本文作者微信,然后备注姓名+机构+专业,然后拉您入群。

优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现

优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现

优化 | 详解资源受限的基本最短路问题(ESPPRC):模型、复杂度证明及C++调用CPLEX代码实现

往期推文合集

第149篇:OR History (2) | 整数规划小时候

第148篇:OR History | 理查德·贝尔曼:动态规划是怎样的诞生的

第147篇:讲座预告|2月9日,求解器COPT实战讲座:智能仓储场景下,无人仓AGV调度背后的优化算法与建模分析

第146篇:对话中科大管科博士/英国南安普顿大学商学院讲师宇环 --【博士人生】第一季第四期

第145篇:优化 | KKT条件学习笔记:理论介绍、详细计算案例、Python+Gurobi代码验证及拓展

第144篇:优化 | 组合优化问题的复杂度精讲(下): 案例(Cutting Stock Problem)与数值实验分析

第143篇:求解器应用案例|求解器COPT帮你制定心仪的课程表,解决“选课困难症”

第142篇:小喜报 | 恭喜运小筹编辑团队成员获得第十九届中国研究生数学建模竞赛一等奖(中兴专项奖)!

第141篇:【博士人生】对话MIT运筹学博士/Amazon博士后科学家/新加坡国立助理教授 覃含章 | 直播回顾

第140篇:优化求解器 | 强大的Cutting Plane算法:Gurobi中Cuts的介绍及案例探究(Python+Gurobi)

第139篇:优化 | 组合优化问题的复杂度精讲(上): 概念、理论与案例详解

第138篇:全奖博士 & 博士后招聘 | 香港大学柯锦涛博士课题组招收交通运输工程方向博士研究生(2023年秋)和博士后研究员(尽快入职)

第137篇:优化问题|考虑多段运输过程的海外仓选址优化问题:优化模型及其编程求解(Python+Gurobi)

第136篇:完整目录 | 《运筹优化常用模型、算法及案例实战:Python+Java实现》正式上线啦!

第135篇:全奖博士|博士后招聘:南洋理工大学鄢然博士课题组招收航运方向博士研究生(2023年秋/2024年春)和博士后研究员(时间灵活)

第134篇:主编新书强推 |《运筹优化常用模型、算法及案例实战:Python+Java实现》正式上线啦!!!

第133篇:重磅硬货!187页运小筹优化理论教程(Part 12)发布(2022年7月--2022年11月)!

第132篇:【论文征稿】计算机协会、众高校联合主协办:机器学习、计算机等多主题

第131篇:数学启发式算法 | 可行性泵 (Feasibility Pump)精讲:一份让您满意的【理论介绍+编程实现+数值实验】学习笔记

第130篇:优化求解器 | 视频+图文教程:手把手教你在C++中配置Gurobi

第129篇:追求更优的求解器COPT,如何优化航空发动机管理?

第128篇:博士招生 | 法国昂热大学Hao Jin-Kao教授招收1名博士生(2023年10月及以后入学)

127篇:COPT实战讲座:智能制造场景下整车排产问题的建模求解

126篇:学界招聘 | 新加坡国立大学孟强教授课题组博士后招聘启事

125篇:优化 | 对偶理论那些事儿:一份让您满意的理论介绍+案例实践学习笔记 (Python+Gurobi)

第124篇:优化求解器 | 杉数求解器COPT 6.0正式发布!

第123篇:重磅硬货!280页运小筹优化理论教程发布(2022年3月--2022年6月)!

第122篇:优化算法 | 强大的数学启发式算法:Gurobi求解器中启发式算法的参数设置与案例实践

第121篇:优化 | 分支定界算法案例实战:Python调用COPT实现

第120篇:优化 | 五个经典设施选址模型的详解及其实践:Python调用Gurobi实现

第119篇:缅怀前辈 | 蒙特利尔大学运筹学教授Bernard Gendron (1966-2022)

第118篇:始于初心,回馈教育:运筹与智能决策教学平台——杉数CORIDM全新升级上线!

第117篇:求解器COPT实践详解丨数学规划视角下的分货优化解题思路

第116篇:论文代码复现 | 考虑客户位置移动的车辆路径规划问题:MIP模型详解及Java调用CPLEX求解的完整代码

第115篇:求解器COPT实践丨地铁乘务排班问题如何优化求解

第114篇:优化求解器 | 求解器加速的高级技能包:MIP模型初始解设置相关操作的超详细解读

第113篇:OR Talk Pool:【8月26日-9月3日】近期讲座、课程和研讨会

第112篇:OR Talk Pool:【8月17日-8月31日】近期研讨会、论坛和培训

第111篇:进展 | 清华大学SIGS戚铭尧及其合作者在顶级期刊Operations Research上发表竞争性设施选址问题的最新研究进展

第110篇:启发式算法和优化算法设计及调试技巧 | AIRS in the AIR“运筹优化”系列讲座

第109篇:OR Talk Pool【8月9日-8月31号】:近期研讨会、论坛和培训

第108篇:理论算法与精确算法 | AIRS in the AIR”运筹优化“系列讲座

第107篇:OR Talk Pool【7月27日-8月】:近期研讨会、论坛和培训

第106篇:优化求解器|Solution Pool用法的超详细解读(Gurobi):最优解与多个可行解的获取与分析(案例与代码实现)  

第105篇:新书推荐 | 整数规划:基础、扩展及应用

第104篇:从大规模的复杂应用来解析杉树求解器的硬核能力

第103篇:鲁棒优化| C&CG算法求解两阶段鲁棒优化:全网最完整、最详细的【入门-完整推导-代码实现】笔记

第102篇:优化 | 手把手教你用C++调用Gurobi求解CVRP:环境配置、数学模型及完整代码

第101篇:OR Talk Pool: 近期研讨会、暑期学校和学术报告推荐

第100篇:SDP榜首易主!国产求解器COPT 5.0 强势来袭!

 第99篇:优化求解器 | Gurobi的MVar类:矩阵建模利器、求解对偶问题的备选方案 (附详细案例+代码)

  第98篇:ORers' Bling Chat | 【高光聊天记录集锦-05】:运小筹读者群里那些热烈的讨论

第97篇:【求解器】Gurobi中非线性约束的对偶值的获取:QCP、QCQP、SOCP | 以及求解器最优性理论证明

第96篇:Optimization Is All You Need! | 万"粉"感谢:运小筹ers向一万位粉丝真情告白!

第95篇:GAMS优化丨通用代数建模系统优化GAMS软件原理及案例分析培训班

第94篇:小喜报 | 恭喜运小筹编辑团队【蔡茂华】同学获得第十二届MathorCup高校数学建模挑战赛一等奖!

第93篇:优化 | 二部图最大匹配问题的精确算法详解(HK算法和匈牙利算法):一份让您满意的【理论介绍+代码实现】学习笔记

第92篇:发福利啦!!!| 【运小筹】往期所有月刊(共约660页)及精选学习资料(经典文献+写作技巧等)可以一次性全部获取啦!!!

第91篇:二部图最大匹配——HK算法

第90篇:ORers' Bling Chat | 【高光聊天记录集锦-03】:运小筹读者群里那些热烈的讨论

第89篇:优化算法 | Benders Decomposition: 一份让你满意的【入门-编程实战-深入理解】的学习笔记

第88篇:优化 | 史上最【皮】数学题求解的新尝试:一种求解器的视角 (Python调用Gurobi实现)

第87篇:优化 | 寻找新的建模视角——从直观解释对偶问题入手:以Cutting Stock Problem的对偶问题为例

第86篇:ORers‘ Bling Chat【03】 | 【高光聊天记录集锦】:运小筹读者群里那些热烈的讨论

第85篇:非线性优化 | 非线性问题线性化以及求解的详细案例及Python+Gurobi求解

第84篇:ORers' Bling Chat | 【高光聊天记录集锦-02】:运小筹读者群里那些热烈的讨论

第83篇:Machine-Learning–Based Column Selection for Column Generation

第82篇:最新!205页运小筹优化理论学习笔记发布(2021年9月--2022年3月)!

第81篇:【鲁棒优化】| 补充证明:为什么最优解一定满足取值等于绝对值(论文笔记:The Price of Robustness)

第80篇:【鲁棒优化】| 论文笔记:The Price of Robustness - 列不确定性模型部分的推导和一些思考

第79篇:ORers' Bling Chat | 【高光聊天记录集锦-01】:运小筹读者群里那些热烈的讨论

第78篇:优化| 手把手教你学会杉数求解器(COPT)的安装、配置与测试

第77篇:【教学视频】优化 | 线性化(2):连续变量 * 0-1变量的线性化

第76篇:【教学视频】优化 | 线性化:两个0-1变量相乘的线性化

第75篇:强化学习实战 | DQN和Double DQN保姆级教程:以Cart-Pole为例

第74篇:强化学习| 概念梳理:强化学习、马尔科夫决策过程与动态规划

第73篇:强化学习实战 | Q-learning求解最短路(SPP)问题

第72篇:鲁棒优化 | 以Coding入门鲁棒优化:以一个例子引入(二)

第71篇:鲁棒优化|基于ROME编程入门鲁棒优化:以一个例子引入(一)


第70篇:优化|含分式的非线性规划求解: 基于Outer Approximation的Branch-and-cut 算法及其Java实现


第69篇:科研工具 | 手把手教你玩转文献管理神器:Endnote


第68篇:相约深圳 | 2022 INFORMS 服务科学国际会议·征稿通知


第67篇:鲁棒优化| 利用rome求解鲁棒优化简单案例:以CVaR不确定性集为例


第66篇:机器学习 | 交通流特征工程小技巧和思考


第65篇:最新!145页运小筹优化理论学习笔记发布(2021年4月--9月)!


第64篇:优化 | 手把手教你用Python调用SCIP求解最优化模型


第63篇:优化 | 随机规划案例:The value of the stochastic solution


第62篇:工具 | draw.io: 科研流程示意图必备大杀器


第61篇:优化 | 开源求解器SCIP的安装与入门教程(Windows+Python)


第60篇:优化|Gurobi处理非线性目标函数和约束的详细案例


第59篇:让出租车更“懂”您的出行


第58篇:测试算例下载:《运筹优化常用模型、算法及案例实战:代码手册》


第57篇:鲁棒优化|分布式鲁棒优化转化为SOCP案例及代码实现(Python+RSOME)


第56篇:鲁棒优化 | 分布式鲁棒优化简单案例及实战(RSOME+Gurobi)


第55篇:【尾款+发货】|【代码手册】  《运筹优化常用模型、算法及案例实战:Python+Java实现》  开始支付尾款和发货啦!!!

第54篇:深度强化学习之:PPO训练红白机1942


第53篇:简单装配线平衡问题


第52篇:【视频讲解】CPLEX的OPL语言:可视化的优化模型求解解决方案


第51篇:算法 | 基于英雄联盟寻路背景的A星算法及python实现


第50篇:【转发】清华大学深圳国际研究生院2021年物流工程与管理项目优秀大学生夏令营报名通知


第49篇:优化 | 精确算法之分支定界介绍和实现(附Python代码)


第48篇:【顶刊论文速递】综述:服务科学视角下的金融科技


第47篇:【重新发布】|《运筹优化常用模型、算法及案例实战:Python+Java实现》  【代码手册】  开始预购啦!!!


第46篇:智慧交通可视化:手把手教你用Python做出行数据可视化-osmnx 包入门教程

第45篇:优化 | Pick and delivery problem的介绍与建模实现(二)


第44篇:推一个知乎学弱猹的公众号


第43篇:元启发式算法 | 遗传算法(GA)解决TSP问题(Python实现)


第42篇:优化|视频详解Python调用Gurobi的应用案例:TSP


第41篇:最新!213页运小筹优化理论系列笔记发布!


第40篇:运小筹第四期月刊发布!


第39篇:开源交通仿真平台SimMobility的安装教程


第38篇:浅谈 | P问题、NP问题、NPC问题、NP-Hard问题


第37篇:一份掏心掏肺的信息素养笔记分享


第36篇:强化学习|Q-learning (王者荣耀视角)


第35篇:优化|高级建模方法(Gurobi):线性化表达小技巧


第34篇:深度强化学习介绍 | Deep Q Network——理论与代码实现


第33篇:优化 | 列生成算法及Java调用cplex实现


第32篇:优化 | Pick and delivery problem的简介与建模实现(一)


第31篇:最新!运小筹月刊-1月份发布!



第30篇:“Learn to Improve”(L2I):ICLR文章分享 | 运用RL解决VRP问题


第29篇:线性规划求解小程序 | 基于Python 的Cplex 求解器图形化界面


第28篇:运筹学与管理科学TOP期刊揭秘 —TR系列


第27篇:Julia安装与配置Jupyter Notebook


第26篇:期刊征文| IEEE TRANSACTIONS应对COVID-19的特刊征文消息速递


第25篇:两阶段随机规划(Two-stage Stochastic Programming):一个详细的例子


第24篇:最新!运小筹月刊-12月份发布!


第23篇:Python调用Gurobi:Assignment Problem简单案例


第22篇:初识随机规划:一个小小例子


第21篇:机器学习运用到VRP的若干小知识


第20篇:运筹学与管理科学TOP期刊揭秘 —Service Science


第19篇:手把手教你用Python实现Dijkstra算法(伪代码+Python实现)


第18篇:运筹学与管理科学大揭秘—TOP期刊主编及研究方向一览


第17篇:优化 | 手把手教你用Python实现动态规划Labeling算法求解SPPRC问题


第16篇:代码 | 运小筹GitHub项目上线啦,快来标星收藏吧!!


第15篇:最新!运小筹月刊首次发布!


第14篇:优化| 手把手教你用Python实现Dijkstra算法(附Python代码和可视化)


第13篇:优化|手把手教你用Python调用Gurobi求解最短路问题


第12篇:优化| 手把手教你用Java实现单纯形法



第11篇:优化| 手把手教你用Python调用Gurobi求解VRPTW


第10篇:优化 | 两阶段启发式算法求解带时间窗车辆路径问题(附Java代码)


第9篇:Java调用cplex求解运输问题


第8篇:优化 | 如何优雅地写出大规模线性规划的对偶


第7篇:优化 | TSP中两种不同消除子环路的方法及Callback实现(Python调用Gurobi求解)


第6篇:元启发式算法 | 禁忌搜索(Tabu Search)解决TSP问题(Python代码实现)


第5篇:论文代码复现 | 无人机与卡车联合配送(Python+Gurobi)


第4篇:优化|Shortest Path Problem及其对偶问题的一些探讨(附Python调用Gurobi实现)


第3篇:可视化|Python+OpenStreetMap的交通数据可视化(二):OpenStreetMap+Python画城市交通路网图


第2篇:优化|最速下降法:详细案例+Python实现


第1篇:Python+networkX+OpenStreetMap实现交通数据可视化(一):用OpenStreetMap下载地图数据

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧