时间窗口变量的解释,尤其是到达时间

时间:2015-04-24 14:45:57

标签: java optaplanner

我试图了解Optaplanner车辆路线示例的变时窗口。有一些我不太了解并需要确认的要点。

  1. 用于readyTime,dueTime,serviceDuration和arrivalTime的单位测量是多少?我试着查看样本数据,但仍然无法弄明白。
  2. 如何计算到达时间?它应该与从一个地方到另一个地方旅行所需的时间有关,但我无法找到如何计算时间。
  3. 任何评论和答案都将非常感谢。 谢谢和问候。

1 个答案:

答案 0 :(得分:4)

  1. 时间单位是/似乎是相对的。在该示例中,它是整数,其没有实时时间戳信息(例如,绝对日期)。获得这种方法的好处是您不需要使用“年”,“月”或“日”单位系统。

  2. 查看ArrivalTimeUpdatingVariableListener课程。有一种名为calculateArrivalTime()的方法。计算本身将获取您当前的客户和之前的出发时间,并检查上一个离开时间是否是您的客户链的开始时间(如果是null,那么您获得了您的车辆)或现有客户。

    2.1案例“车辆”说,您检查当前客户(也就是您车辆的第一份工作)的最大readyTime以及仓库与当前客户的距离。你拿一个比另一个更大的一个,并设置为更新的arrivalTime

    2.2案例“N-customer(N> 1)”:获取前一个客户的departureTime,添加与前一个客户的距离,并将该值返回为更新的arrivalTime

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