我已经采用了OptaPlanner VRP网络示例并根据我的需求进行了定制。除了以下情况外,它工作正常:
可用车辆数量:2。
每辆车的容量为6.
客户需求为7。
在上面的场景中,OptaPlanner无法解决问题。我认为它应该将2辆车部署到同一个客户所在地,但它没有按预期工作。
我无法弄清楚如何配置OptaPlanner规则以使其正常工作。
答案 0 :(得分:3)
一种解决方法是将客户与需求7分开:
您会发现,只要有可能,同一车辆就会访问同一地点的所有客户。为了获得更好的设计,您甚至可能希望将Customer
重构为Customer
(每个位置仅1个)和CustomerPart
(每个客户的单独需求为1个)。
请注意,在原始要求中,需求不能超过2辆车(不是因为约束规则,而是因为域设计)。因此,使用原始实现来解决您的需求,自然会排除许多可行且可能更优化的解决方案。
您的分手越多,您开启新的可行和可能新的最佳解决方案的次数就越多。当然,每个客户分配的需求越多,搜索空间的增加就越多。而且它增加了很多。用7个需求1的客户取代该客户(并为所有客户做到这一点)将是完美的,但会遇到严重的可扩展性问题。
实际上,我将每个需求分成高于最小车辆容量的一半(甚至是该容量的三分之一),但不会更多。使用OptaPlanner Benchmarker测量(而不是geussing)分割限制参数更改时的结果质量和数据集可伸缩性,以便您可以调整它。 (哦,如果你最终做了那些基准测试,请在这里分享你最好的参数值。)