我以OptaPlanner VRP Web示例为例,并根据需要对其进行了自定义。除以下情况外,它工作正常:

可用车辆数量:2。
每辆车的容量为6。
客户需求为7。

在上述情况下,OptaPlanner无法解决问题。我认为它应该将2辆车部署到相同的客户位置,但是无法正常工作。

我无法弄清楚如何配置OptaPlanner规则以使其正常工作。

最佳答案

解决问题的一种方法是按需求7拆分客户:


分为需求3和4的2个客户(均位于同一位置)。
或需求3、2和2的3个客户(都在同一位置)。


您会发现,只要有可能,同一辆车就会拜访同一地点的所有客户。对于更好的设计,您甚至可能希望将Customer重构为Customer(每个位置仅1个)和CustomerPart(每个客户的单独需求1个)。

请注意,在原始需求中,需求不能拆分为两辆车(不是因为约束规则,而是因为领域设计)。因此,使用原始实施方案来解决您的要求,自然会排除许多可行且可能更理想的解决方案。

您的投入越多,您就越打开新的可行的和潜在的最佳解决方案。当然,您将每个客户的需求分配得越多,搜索空间就会增加。而且它大大增加。用需求1的7个客户替换该客户(并且对所有客户都这样做)将是完美的,但是会遇到重大的可伸缩性问题。

实际上,我将高于最小车辆容量一半(甚至是该容量的三分之一)的所有需求均分了,但没有更多。使用OptaPlanner Benchmarker可以测量(而不是混淆)拆分极限值参数更改时的结果质量和数据集可伸缩性,因此可以对其进行调整。 (哦,如果您最终做了这些基准测试,请在此处共享您的最佳参数值。)

关于optaplanner - OptaPlanner将多辆车部署到同一位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34408502/

10-08 22:27