Optaplanner中CVRP的首次拟合递减算法

时间:2018-08-21 14:46:05

标签: optaplanner heuristics

我正在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]

有人可以解释一下这个理论吗?另外,我想知道相反的情况,相同的容量,但每个客户的位置不同。我也尝试过这样做,但是它也没有对从最远的城市开始的城市进行排序。

谢谢!

1 个答案:

答案 0 :(得分:0)

(braindump)

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

一个常见的陷阱是在启用“附近选择”之前调整编译器:首先调整“附近选择”。如果您要处理大型数据集,那么“邻近角度”比较器的性能会更好,这是因为“附近选择”和/或“分区搜索”尚未激活。无论如何,还是一如既往:您需要使用optaplanner-benchmark进行此类工作。

这就是说,在 TSP用例中,First Fit Decreasing算法的结果要比 Nearest Neighbor 算法(这是我们针对它的另一种构造启发式算法)的结果更差的支持atm有限)。当然,两者都需要本地搜索来进一步改进。但是,将最近的邻居算法转换为VRP是困难/模棱两可的(至少可以这样说):我正在/正在进行此类翻译,因此我将其称为 Bouy 算法(在以Bouy开头的vrp示例)。它可以工作,但不能与IIRC的“附近选择”完美结合。

哦,还有 Clarke和Wright节省算法,该算法在小型纯CVRP情况下非常有用。但是在更大的数据集上存在BigO(缩放)问题,并且在添加其他约束(例如时间窗口,技能要求,午休时间等)时,也变得困难/模棱两可。

长话短说:对于在现实世界中进行高级VRP案例的最佳构造启发法,陪审团仍在讨论中。 optaplanner基准测试将为我们提供帮助。尽管所有的学术论文都在讨论在小型数据集上使用简单形式的VRP的完美CH ...