1
  • 我们如何优化 Optaplanner 以选择最快的路线?请参阅下图中突出显示的点。它正在走很长的路。

优化路线

注:车辆无需返厂。我认为我不能使用 CVRPTW,因为arrivalAfterDueTimeAtDepot 是一个内置的硬约束(此外我没有任何时间限制)。

  • 我们如何编写一个约束来选择容量较小的车辆?
    例如,一位客户只需要 3 件商品,而我们有两辆容量为 4 和 9 的车辆。似乎 Optaplanner 默认从输入顺序中选择第一辆车。
4

1 回答 1

1

我认为它正在将蓝色车辆带到班加罗尔市中心,因为绿色已经满负荷。

Solver.getScoreDirectorFactory()如果您手动将该位置放入绿色行程并交换绿色和蓝色行程的车辆,请检查分数是多少(通过 计算)。如果情况更糟(或打破硬约束),那么 OptaPlanner 选择其他解决方案是正常的。在这种情况下,要么你的 score 函数有错误(或者你意识到根本不想要那个解决方案)。但如果它确实有更好的分数,OptaPlanner <localSearch>(例如 Late Acceptance)应该会找到它(特别是在向外扩展时,因为具有讽刺意味的是,局部最优在缩小时是一个更大的问题)。您可以尝试添加<subchainSwapMoveSelector>等以更快地逃避局部最优。

如果您想更多地引导搜索(这通常不是一个好主意),您可以定义一个规划值强度比较器,将小型车辆排在大型车辆之前,并使用构建启发式WEAKEST_FIT( _DECREASING)。

于 2016-01-11T07:57:39.980 回答