0

我有以下 CVRPTW 问题,我正在尝试使用 OptaPlanner 找到一个好的解决方案。时间采用 hh:mm:ss 格式。

我的 DRL 文件是这样。此外,我还定义了相对于在准备时间之前到达的硬约束。我的求解器配置是这样,不同的是终止标签:

<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 件物品,这超出了容量。我不明白,如果配置中的容量存在严格限制,为什么求解器会建议我使用这个解决方案。

考虑到我的规则,这不是一个可接受的解决方案。我错过了什么吗?是否存在求解器不提供解决方案的情况?是否考虑“求解器失败”终止?

4

1 回答 1

0

如果我错了,请纠正,但你有:

  • 总需求30(6+4+5+2+3+10)

  • 总容量20辆(2 辆,每辆 10 辆)

当您的卡车只能运输 20 件物品时,不可能运输 30 件物品。没有可行的解决方案(因此 OptaPlanner 提供了它找到的最佳不可行解决方案)。

注意:如果同一辆车可以多次使用,请添加额外的 Vehicle 实例并添加约束以惩罚使用具有相同牌照的多个 Vehicle 实例。

于 2013-10-08T17:59:45.727 回答