我有以下CVRPTW问题,我正在尝试使用OptaPlanner找到一个好的解决方案。时间是hh:mm:ss格式。
我的DRL文件与this类似。此外,我还确定了相对于准备时间之前抵达的严格禁令。 我的求解器配置类似this,与终止标记的区别在于:
<termination>
<terminationCompositionStyle>OR</terminationCompositionStyle>
<maximumSecondsSpend>10</maximumSecondsSpend>
<scoreAttained>0hard/-750000soft</scoreAttained>
</termination>
这是问题陈述:
PROBLEM STATEMENT:
CustID ReadyTIME DueTIME ServiceDUR DEMAND
1 20:38:18 20:44:18 00:05:00 2
2 20:20:53 20:26:53 00:05:00 4
3 20:51:39 20:57:39 00:05:00 3
4 20:20:18 20:26:18 00:05:00 6
5 20:34:15 20:40:15 00:05:00 5
6 20:21:40 20:27:40 00:05:00 10
我有2辆车,可容纳10件物品和1个车厂。
这是解决方案(按车辆分组并按到货时间排序的客户):
Vehicle 1 Capacity 10 - from Depot [1]
[6] D: 10 Ar.T: 20:21:40 Prev.D: 00:02:21 Next.D: --:--:--
Vehicle 2 Capacity 10 - from Depot [1]
[4] D: 6 Ar.T: 20:20:18 Prev.D: 00:01:08 Next.D: 00:02:21
[2] D: 4 Ar.T: 20:27:42 Prev.D: 00:02:24 Next.D: 00:03:38
[5] D: 5 Ar.T: 20:36:03 Prev.D: 00:03:21 Next.D: 00:02:09
[1] D: 2 Ar.T: 20:43:26 Prev.D: 00:02:23 Next.D: 00:07:23
[3] D: 3 Ar.T: 20:55:40 Prev.D: 00:07:14 Next.D: --:--:--
(D =需求,Ar.T =到达时间,Prev.D =距前一个位置的距离,Next.D距离下一个位置的距离)
如你所见,车辆2必须运输6 + 4 + 5 + 2 + 3 = 20项,这大于容量。 我不明白为什么解算器会建议我这个解决方案,如果相对于配置中的容量存在严重的约束。
考虑到我的规则,这不是一个可接受的解决方案。我错过了什么吗? 难道没有解决方案没有提供解决方案的条件吗?是否考虑“解算器失败”终止?
答案 0 :(得分:0)
如果我错了,请纠正,但你有:
总需求 30 (6 + 4 + 5 + 2 + 3 + 10)
总容量 20 (2辆车,每辆10辆)
当您的卡车只能运输20件物品时,无法运输30件物品。 没有可行的解决方案(因此OptaPlanner提供了它找到的最佳不可行解决方案。)
注意:如果可以多次使用同一车辆,请添加额外的车辆实例并添加约束以惩罚使用相同车牌的多个车辆实例的使用情况。