【发布时间】:2021-02-16 15:43:00
【问题描述】:
你好 optaplanner 社区。问候并始终感谢您的回答。
我有一个 VRP 问题,我有一个车队和访问列表。每次访问都有一个交货点(D delivery)和一个拣货点(Ppicking)。限制是每次访问只有一辆车参加,车辆必须先到取货点装载访问所需的物品,然后再进行交付。如果交货点的需求大于容量,则不得将其分解为行程。如果没有其他容量更大的车辆能够支持此次访问,则必须忽略此计划中的访问。最重要的是,因为有些访问的需求无法分割,因此车辆必须在同一行程中运输。
1- 我想知道我遇到的这个问题是否可以建模为 VRPPD,即使每辆车只能前往交货点一次?我理解虽然每辆车只能去一个送货点一次,但两次访问之间必须有订单,并且每个取货点必须在送货点之前完成。据我了解,每次访问都没有多次取货,因为车辆只开一次,但整个路线确实有多次取货和送货。
2- 我做了一些假设来解决我的问题。你有什么建议我可以为它建模吗?我的假设正确吗?我是 Optaplanner 的新手,任何建议都会非常有用。
我分析过,也许我可以通过将所有点注册为访问来解决我的 VRPPPD,其中访问的交付点和取件点将在同一位置。每次访问都会有一个类型来知道哪个是拣货(P),哪个是交付(D)。它必须管理一个影子变量来更新车辆的容量,因为在每个 P 中容量都会增加,而在 D 中容量会减小。我的硬性限制是容量限制,一个限制是让每个 P 和 D 拥有相同的车辆,另一个限制是每个 P 在 D 之前完成。
3- 另一方面,我想使用 Geoffrey 的示例“optaplanner-mixedvrp-experiment”?我了解此示例适用于多次行程,其中车辆将前往客户的行程拆分为多次行程,因此我了解车辆多次前往客户,因此我了解我必须进行一些修改。
我可以在此示例“optaplanner-mixedvrp-experiment”中进行哪些更改以混合取货和送货,但不能来自同一客户。这正是我的要求。
应用这个例子可以解决4和5吗?
4- 当附近的收集点有人来访时,我该如何管理,我可能会先去几个收集点,然后再进行送货。
(P1 P2 D1 D2 P3 D3)P1和P2就在附近,先提货再发货
5- 我该如何管理,当有相同交货点的访问时,车辆可以同时加载这些访问所要求的内容,从而不必返回相同的点?由于我了解访问之间的距离和时间不应加倍,因为尽管它们是不同的访问,但它们具有相同的位置。
(P1 D1 D2 P3 D3) 其中 D1 和 D2 具有相同的上车点 (P1),并且车辆有足够的能力在 P1 处加载点 D1 和 D2 的需求。
6- 如何让车辆以零载客量离开车场,直接前往第一个上车点?
【问题讨论】:
-
简短回答:可以。首先按照示例here 实施一个简单的VRP。一旦你变得更舒服,你可以将它扩展到 PDVRP。
-
谢谢!我已经实施了 VRP,并且我即将根据公开的要求实施 VRPPD(不是一个订单的多次行程)。我从使用 Geoffrey 开发的示例“optaplanner-mixedvrp-experiment”的想法开始。总之,我询问了我可以进行哪些更改,以便订单不会分解为行程,尽管该路线确实有几个取货 (P) 和交付 (D) 站点。像 P1、P2、D1、D2、P3、D3 之类的东西,但从来没有 P1、D1、P1、D1。我征求一些建议,以将“optaplanner-mixedvrp-experiment”调整为我的变体。感谢您的建议。
-
我在 Jira PLANNER-833 中找到了“optaplanner-mixedvrp-experiment”的描述,据我了解,该示例可用于“taxi VRP”、“airport bus VRP”和“mixed”异类……”。我知道我的问题可以建模为“机场班车 VRP”,因为我需要多拣货,其中交货和取货混合在一起,但交货点只访问一次。你会建议什么限制来强制执行这样的条件?我假设每次访问的索引为 1 的硬分,否则我会扣分。我会走在正确的轨道上吗?
-
我会从一个硬分数开始。如果这不起作用,您可以探索更复杂的选项。
标签: optaplanner