使用 optaplanner 解决 VRPMT 问题的最佳实践是什么?

What is the best practice for solving VRPMT problem with optaplanner?

我们目前的方法是运行求解器很多次。我想知道是否有更好的方法。

一些解释:

多次行程的车辆路径问题 (VRPMT):车辆可以走不止一条路线。

以VRP为例,将Vehicle重命名为VehiclePerDay,然后在其上引入2个字段:vehicle和LocalDate。这是假设每天一趟。

如果您在同一天进行多次旅行,有两种方法:

1) 如上所述将Vehicle 拆分为VehicleTrip,并让它们指向前一个。所以第二趟离开的时候同一辆车的第一趟returns回到站点(加上装载时间)

2) 在每次访问之前使用影子变量和容量使用情况,并引入 "automatic" return 回车厂时刻。 基本上,如果一辆车的容量为 10,并运送到 5 个地点,每个地点有 3 件物品,它看起来像这样:

  • 车辆A
    • 访问 1:总容量需要 3,@ShadowVariable goBackToDepotFirst=false
    • 访问 2:总容量需要 6,@ShadowVariable goBackToDepotFirst=false
    • 访问 3:总容量需要 9,@ShadowVariable goBackToDepotFirst=false
    • 访问 4:总容量需要 3,@ShadowVariable goBackToDepotFirst=true
    • 访问 5:总容量需要 6,@ShadowVariable goBackToDepotFirst=false