我目前正在使用 Optaplanner/Timefold 解决 VRP。我们不仅需要优化整体旅游时间/距离,还需要优化车辆利用率。
我们的目标例如4 车辆看起来像这个示意图,其中
x
代表负载(请注意,这个示意图只是为了可视化问题,实际模型更真实;)):
Vehicle 1 |x|x|x|
Vehicle 2 |x|x|x|
Vehicle 3 |x| | |
Vehicle 4 | | | |
所以基本上我们希望使用尽可能少的车辆并尽可能接近充分利用(我猜这本身就是一个困难的优化问题)。然而,我们目前有时会得到更像这样的结果:
Vehicle 1 |x|x| |
Vehicle 2 |x|x| |
Vehicle 3 |x|x| |
Vehicle 4 |x| | |
我们现在决定尝试的是,对偏离充分利用的车辆进行线性惩罚,直到达到某个阈值,然后对实体给予更大的软常数软惩罚(未使用的车辆除外)。然而,我认为这可能只会将车辆利用率移至上述阈值,然后再次变得随机。
我们的另一个想法是对每辆正在使用的车辆进行处罚。
是否有其他更好的方法可以以更高的概率获得第一个结果?
如何实现这一目标有很多想法。令人惊讶的是,你似乎得到了开箱即用的负载平衡良好的车辆;通常需要有一些约束来处理负载平衡。在这种情况下,您似乎需要的是实际的反负载平衡约束。看看我们关于衡量不公平的文章,它可以给你一些指导。
正如您所建议的那样,对每辆正在使用的车辆进行充分的惩罚,肯定有助于减少车辆的使用。