【问题标题】:How to model the vehicle routing problem when customer demand exceeds vehicle capacity当客户需求超过车辆容量时如何建模车辆路径问题
【发布时间】:2020-02-05 14:08:59
【问题描述】:

我是 optaplanner 的新手,正在寻找有关如何在客户需求超过任何单个车辆数量的情况下对车辆路线问题建模的建议。一个简单的例子是 1 个仓库、1 个卡车(容量 50)和 1 个客户(需求 100)。在这种情况下,卡车显然必须两次往返客户,每次取货 50 件物品。在我看来,车辆路由示例并没有处理这些情况。

更一般地说,我有一个仓库、一个车队,每个车队都有一个物品承载能力,还有一个站点集合,每个站点都有一定数量的物品。车辆需要将所有物品从站点集中运送到仓库。这与车辆路线问题示例几乎相同,但除非我遗漏了什么,否则该示例似乎没有考虑到卡车可能需要多次旅行并多次访问同一个客户站点的可能性。还有其他更合适的例子吗?

附带说明,如果我可以制作一个列表规划变量(每辆车可以有一个航点列表作为规划变量),我想我可以对此进行建模。不过好像还不支持?

【问题讨论】:

    标签: optaplanner


    【解决方案1】:

    optaplanner-example 中的开箱即用 VRP 示例确实没有涵盖这一点。

    我经常看到的一种典型方法是找出“需求粒度”。例如,假设您最小的车辆类型的容量为50,我可能会首先尝试使用10 的需求粒度。因此,单个需求客户 90 被拆分为 9 次访问,每 10 个访问。单个需求客户 23 被拆分为 10103。 然后只需像 optaplanner-examples 的 vrp 示例那样分配对车辆的访问(Visit 将 Customer 替换为 @PlanningEntity)。一些提示:

    • 也使用 subChainSwap 和 subChainChange 移动(请参阅文档章节移动选择)。
    • 如果每次访问有一个服务时间,并且同一位置的多次访问仅产生一次,请使用“折叠”设计模式(不确定是否已记录)在到达时间更新变量监听器中处理。

    一旦你实现了这个并使用 optaplanner-benchmark 来估计它的价值,然后尝试需求粒度 15。然后尝试需求粒度 20 或 5。你是在权衡潜在的解决方案质量与性能与求解器花费的时间观点。查看 BEST_SCORE 图表来比较这些需求粒度的效果。

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2012-11-26
      • 2021-08-06
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2023-04-10
      • 2018-11-18
      相关资源
      最近更新 更多