【问题标题】:Explanation of Time Windowed variables, especially arrival time时间窗变量的解释,尤其是到达时间
【发布时间】:2015-07-03 05:41:51
【问题描述】:

我试图了解 Optaplanner Vehicle Routing Example 的变体 Time Windowed。有些地方我不是很明白,需要确认。

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

我们将不胜感激任何 cmets 和答案。 谢谢和问候。

【问题讨论】:

  • 对我的问题投反对票的人,请告诉我你为什么这样做。如果我问错了问题,你可以告诉我我的问题出了什么问题,我可以解决它。

标签: java optaplanner


【解决方案1】:
  1. 时间单位是/似乎是相对的。在示例中,它是一个整数,没有真正的时间戳信息(例如绝对日期)。采用这种方法的好处是您不需要采用“年”、“月”或“日”单位制。

  2. 看看ArrivalTimeUpdatingVariableListener 类。有一种方法叫做calculateArrivalTime()。计算本身会采用您当前的客户和之前的出发时间,并检查之前的出发时间是您的客户链的开始(如果是 null,那么您将获得您的车辆)或现有客户。

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

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

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

【讨论】:

  • 1.这就是问题所在,我需要知道如何衡量它,即我希望客户 A readyTime 为 8.00,dueTime 为 17.00,我该怎么做?我不知道如何将这些整数值转换为时间值。 2.这是否意味着,距离就等于旅行的时间呢?在现实世界中,它有什么不同吗?同样10公里的2路距离可能需要不同的时间才能走完吧?
  • 1.我只是在想我对当前实现的回答,从未说过我已经实现了它:-)。您可以在预处理步骤中实现“关系时间”。每个作业都有一个绝对日期格式的可选定义的到期时间(所以我理解你的用例)。如果您读取数据集,则可以将该格式转换为与当前系统时间相关的格式。您当前的系统时间是一个所谓的“锚点”,您可以从中比较您的到期时间。您的时间转换是一个预处理步骤。比较过程是您的解决过程的一部分。
  • 2.是的,这就是“最快”路线的重点。如果您的“行驶距离”或“油耗”不起作用,您可以这样做并节省时间,而不是“燃料”和“行驶距离”。在现实世界中(例如使用导航系统),人们也会选择最快或最短的路线,这取决于驾驶员的知识和他的个人喜好(例如舒适的驾驶、高速公路上的较低速度限制、骑行过程中不停车等)。 )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
相关资源
最近更新 更多