本文中的课件来自清华大学深圳国际研究生院,物流与交通学部戚铭尧教授《物流地理信息系统》课程。
SPPRC问题
带资源约束的最短路径问题(shortest path problem with resource constraints)是一个众所周知的NP-Hard问题。除了作为网络问题直接应用外,SPPRC还用作列生成解决方案方法的基础,用于解决车辆路径规划问题和人员排班问题等。
考虑一个有向图,表示节点的集合,并且表示弧的集合。对于每一段弧都有一个非负的权重(vrptw问题中可能为负,需要作特殊处理),和,表示通过这段弧的成本和资源消耗。
SPPRC问题包括找到从起始节点到结束节点的一条路径,使该路径的总成本最小化,但不超过最大资源消耗。即使只存在一种资源,SPPRC也是一个NP-Hard。
Labeling算法
直接求解SPPRC问题是比较困难的,故通常采用一种动态规划的算法: correction 算法。通常我们考虑有种资源,可能包括时间、最大装载重量、最大装载体积等。
对于每一条从起始节点扩展到点的路径都有一个标签与之相关联。是路径使用的第L个资源的数量;是。
此外,我们还需要设置一些优超规则,称为,以帮助减少不必要的扩展。令和是从扩展到的两条不同的路径,与之关联的标签分别为和。路径可以路径当且仅当:
下面介绍一个简单的小例子:一个有向图如上图所示,我们可以看到每一段弧上都有一个非负的权重,分别表示通过该弧的与。
首先初始化出发节点的标签,设置为,随后令其向可达节点和进行扩展,则分别设置一个新的标签。再由向和进行扩展,则得到一个新的标签,得到一个新的标签,同理继续扩展到,生成一个新的标签。
然后回过头由扩展到,得到一个新的标签。我们可以发现没有继续向扩展了,因为其生成的标签为,与已有的标签相比满足了的要求,不必再扩展。
算法伪代码
图片来源:运小筹主编即将出版的《运筹优化常用模型、算法及案例实战》第13章