0

我正在研究将车队中“最慢卡车”的成本降至最低的车辆路线问题。

所以现在目标函数应该涉及两个量:

  1. 所有车辆的所有过渡的总和(总距离),以及
  2. 最昂贵路线的成本

这些价值观是如何结合起来的?我假设全局跨度系数

distance_dimension.SetGlobalSpanCostCoefficient(100)

参与?那是加权和的系数吗

cost = w*A + (100-w)*B

最慢的A卡车的成本B是多少?所有卡车的总距离是多少?

4

1 回答 1

1

不,这很简单:cost = B + A
B = 路线中所有边缘成本的总和(通常使用 设置routing.SetArcCostEvaluatorOfAllVehicles(arc_cost_callback)
A = w * (max{end} - min{start})

注意:B需要帮助求解器找到第一个好的解决方案(否则像 CHEAPEST_PATH 这样的策略会表现得很奇怪,因为选择最便宜的没有成本......),同时A通过最小化 Max cumul Var 来帮助“分配”工作。它仍然不是真正的分散激励
,例如假设一个维度cumul_start = 0和 4 条路线的成本为 0,0,6,6 它与 2,2,2,6 一样好(或 6,6,6,6 但B这里更高)。
max(cumul_end) == 6在这两种情况下。

我在文档中添加了关于 GlobalSpan 的部分

ps:看看https://github.com/google/or-tools/issues/685#issuecomment-388503464 pps:在文档示例中,如果我记得清楚,请
尝试更改1800 或 3500 ;) ppps:注意比您可以在多个维度上拥有多个 GlobalSpan,而目标只是所有这些成本的总和乘以它们各自的系数......maximum_distance = 3000

于 2018-05-15T21:50:56.723 回答