我试图了解Optaplanner车辆路线示例的变时窗口。有一些我不太了解并需要确认的要点。
任何评论和答案都将非常感谢。 谢谢和问候。
答案 0 :(得分:4)
时间单位是/似乎是相对的。在该示例中,它是整数,其没有实时时间戳信息(例如,绝对日期)。获得这种方法的好处是您不需要使用“年”,“月”或“日”单位系统。
查看ArrivalTimeUpdatingVariableListener
课程。有一种名为calculateArrivalTime()
的方法。计算本身将获取您当前的客户和之前的出发时间,并检查上一个离开时间是否是您的客户链的开始时间(如果是null
,那么您获得了您的车辆)或现有客户。
2.1案例“车辆”说,您检查当前客户(也就是您车辆的第一份工作)的最大readyTime
以及仓库与当前客户的距离。你拿一个比另一个更大的一个,并设置为更新的arrivalTime
。
2.2案例“N-customer(N> 1)”:获取前一个客户的departureTime
,添加与前一个客户的距离,并将该值返回为更新的arrivalTime
。
在这两种情况下,如果最后一次已知的到达时间等于更新的arrivalTime
,您将检查完整的链,以防止重复计算。这样可以节省性能,因为您将打破while
条件。