使用OptaPlanner解决客户有优先级的VRP问题:高、标准或低



我正在使用Optaplanner来解决我的VRP问题,我已经根据我的要求调整了时间窗口和容量的VRP示例。在我的问题中,我有一个车队和一个访问(客户(列表,其中每次访问都有一个优先级,可以是高、正常或低。

具有高优先级的访问是必须在路线上访问的访问,它永远不会在外面,并且它将优先于具有正常和低优先级的访问。同样,"正常优先级"是指那些本应成为路线一部分但优先级低于"高优先级"的访问。在低优先级的情况下,路线的优化不会受到影响;对于那些不需要考虑的访问,这可能是默认值。我找过类似的问题,但没有成功。

1-我应该在我的optaplanner域中实施哪些更改,您可以建议什么限制来执行与客户优先级(访问(相关的要求?

2-我应该实现一个选择器,还是只能通过一个约束提供程序来强制执行我的约束?我不久前开始使用OptaPlanner,选择器和移动的问题对我来说仍然很难理解。

提前谢谢。如有任何建议,我们将不胜感激。

为了不分配某些访问,一个技巧是只创建一辆虚拟车辆,并忽略分配给虚拟车辆的访问的所有限制。然后使用HardMediumSoftScore对所有未分配的访问进行中等惩罚。

至于处理高-正常-低:看看HardSoftMediumScore(或者BendableScore,如果你需要超过3个级别(。您可以让硬级别惩罚所有未分配的高访问量,中等(或可弯曲的第一个软级别(惩罚所有未指定的正常访问量,软级别(或可弯的第二个软级别,(惩罚所有已分配的低访问量,等等。

最新更新