Optaplanner中CVRP的第一个拟合递减算法



我正在使用Optaplanner中的FFD算法作为CVRP问题的构造启发式算法。我以为我从垃圾箱拾取中理解了 FFD-Alg,但我不明白它在 CVRP 上的 OP 中应用时背后的逻辑。所以我的想法是,它侧重于需求(按降序对城市进行排序,从最高需求开始(。为了证明我的假设,我将城市坐标固定在一个位置,因此到所有城市的仓库的距离是相同的。然后我把要求从大改小。但它不会在结果文件中按递减顺序获取城市。

输入为:城市 1:需求 16,城市 2:需求 12,城市 3:需求8,城市 4:需求 4, 城市 5:需求 2。

3辆车,每辆车可容纳40辆。

我所选择的: V1<-[C1,C2,C3,C4], V2<-[C5] 发生了什么: V1<-[C5,C4,C3,C2], V2<-[C1]

谁能解释一下这个理论?另外,我想知道反过来会发生什么,相同的容量,但每个客户的位置不同。我也试过这个,但它也没有从最远的城市开始对城市进行排序。

谢谢!

(braindump(

与非VRP问题不同,选择"难度比较"来确定"首次拟合降低"的"降低难度"并不总是很清楚。我已经用几种形式进行了实验 - 例如基于到仓库的距离,到仓库的角度,纬度等。您可以在示例中找到所有这些形式的难度比较器,通常是 TSP。

一个常见的陷阱是在启用"附近选择"之前调整比较器:首先调整"附近选择"。如果您正在处理大型数据集,"角度到depo"比较器的行为会好得多,只是因为附近选择和/或分区搜索尚未激活。无论如何,一如既往:您需要使用optaplanner-benchmark进行此类工作。

话虽如此,在TSP 用例中,首次拟合递减算法的结果比最近邻算法(这是另一种构造启发式算法,我们的支持 atm 有限(。当然,两者都需要本地搜索来进一步改进。但是,将最近邻算法转换为VRP是困难/模棱两可的(至少可以说(:我曾经/正在研究这样的翻译,我称之为Bouy算法(在vrp示例中查找以Bouy开头的类(。它有效,但它不能很好地与附近选择IIRC结合。

哦,还有克拉克和赖特储蓄算法,它非常适合小型纯CVRP案例。但是在更大的数据集上会遇到 BigO(= 缩放(问题,当添加其他约束(例如时间窗口、技能要求、午休时间等(时,它也变得困难/模棱两可。

长话短说:对于现实世界的高级VRP案例,陪审团仍然不知道什么是最好的建筑启发式方法。 Optaplanner-Benchmark将帮助我们实现这一目标。尽管所有的学术论文都在谈论他们在小数据集上用于简单形式的VRP的完美CH......

最新更新