时间窗变量的解释,特别是到达时间

Explanation of Time Windowed variables, especially arrival time

我试图了解 Optaplanner 车辆路径示例的变体时间窗。有些地方我不是很明白,需要确认。

  1. 用于 readyTime、dueTime、serviceDuration 和 arrivalTime 的测量单位是什么?我试图查看示例数据,但仍然无法弄清楚。
  2. 如何计算到达时间?应该和从一个地方到另一个地方需要的时间有关,但是我找不到怎么计算那个时间。

任何评论和回答将不胜感激。 谢谢和问候。

  1. 时间单位is/seems相对。在示例中,它是一个整数,没有真正的时间戳信息(例如绝对日期)。采用这种方法的优点是您不需要使用 "year"、"month" 或 "day" 单位系统。

  2. 看看ArrivalTimeUpdatingVariableListenerclass。有一种方法叫做calculateArrivalTime()。计算本身需要您当前的客户和之前的出发时间,并检查之前的出发时间是否是您的客户链的起点(如果它是 null,那么您会得到您的车辆)或现有客户。

    2.1 案例 "vehicle" 说,你检查当前客户(也就是你的车辆的第一份工作)的最大值 readyTime 和仓库到你当前客户的距离。你拿一个比另一个大的,然后设置为更新后的 arrivalTime.

    2.2 案例"N-customer (N > 1)":获取前一个客户的departureTime,加上与前一个客户的距离和return更新后的值arrivalTime

在这两种情况下,您都将检查您的完整链,如果最后已知的到达时间等于更新后的 arrivalTime 以防止重复计算。这样可以节省性能,因为您将打破 while 条件。