gpt4 book ai didi

optaplanner - 在 Optaplanner 中模拟午休时间和额外的仓库返回

转载 作者:行者123 更新时间:2023-12-04 03:19:22 24 4
gpt4 key购买 nike

我们正在使用 optaplanner 来尝试使用时间窗口改进我们当前的车辆路线。我们有一些小问题,我们不确定如何克服:

  • 我们的司机需要有 30 分钟的午休时间,在他们轮类的第 3 到第 5 个小时之间(从他们开车开始),如果开车时间少于 5 小时 - 不需要休息。
  • 我们必须确保某些包裹(但不是全部)在特定时间之前返回仓库。例如,有些客户的取件时间为 8:00 至 8:30,但他们的包裹/包裹必须在 12:00 之前返回仓库。

  • 我们目前对第二个问题的想法是创建两个新类:
    public class ReturningCustomer extends TimeWindowedCustomer {

    protected int returningId;


    public class ReturnToDepot extends TimeWindowedCustomer {

    protected int returningId;

    其中第一个为客户建模特殊包裹,这些包裹将被退回。第二个是代表司机返厂的“假”客户。 ReturnToDepot 将与仓库本身具有相同的位置。在 Drools 中比较他们的 id 将确保他们在同一辆车的路径上。将 ReturnToDepot 视为另一个客户有望确保规划人员找到将其放入路线的最佳方式。

    但是,对于午休建模,我们不太确定要做什么。

    有没有更好的方法来建模?模拟午休时间的最佳方式是什么?是否有任何样本可以为我们指明正确的方向?

    谢谢。

    最佳答案

    从 TimeWindowed VRP 示例开始,您可以像这样执行这 2 个请求:

  • 午休时间 :调整VariableListener中的arrivalTime计算以便在第 3 小时之后的任何到达都会在到达时间上再增加 30 分钟。根据您的业务需求 - 例如,他们只能在不同地点之间休息,而不是在地点之间休息 - 可选择添加硬约束以确保在第 3 小时和第 5 小时之间到达。
  • 及时返回仓库 : 在 Vehicle 上添加一个名为 arrivalBackToDepotTime 的阴影变量并使用 variableListenerRef重用 ArrivalTimeUpdateVariableListener然后还需要更新该字段。添加一个硬约束来检查每个客户的车辆 arrivalBackToDepotTime少于客户到达仓库所需的时间。
  • 关于optaplanner - 在 Optaplanner 中模拟午休时间和额外的仓库返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38292598/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com