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

标签 java optaplanner

我试图理解 Optaplanner 车辆路由示例的时间窗口变体。有一些地方不太明白,需要确认。

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

任何评论和答案都将不胜感激。 谢谢并致以问候。

最佳答案

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

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

    2.1 案例“车辆”表示,您检查当前客户(也称为车辆的第一份工作)的 readyTime 的最大值以及仓库到您当前客户的距离。您取其中一个大于另一个,并将其设置为更新的 arrivalTime .

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

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

关于java - 时间窗口变量的解释,尤其是到达时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29850530/

相关文章:

java - Android ViewPager onPageSelected 事件

java - 重复的正则表达式

java - Optaplanner 项目的非法参数异常,解算器配置在类加载器中不作为类路径资源存在

java - 如何更好地在OptaPlanner中应用过度约束规划?

java - ProblemFact 中具有 InverseRelationShadowVariable 的 PlanningEntity 字段未更新 - Optaplanner

java - 将文本写入 XML 需要很长时间 --Java

java - 测试 java 代码是否不编译

java - OptaPlanner 7.21.0 无法从 jar 文件执行 - 目录 dataDir 错误

java - OptaPlanner 在 CartesianProductMoveSelector 创建的 CompositeMove 上抛出 IllegalStateException

java - 如何以 fragment 形式共享从套接字接收到的数据?