具有时间窗口的路线的总持续时间不是最佳的

时间:2016-10-04 05:54:09

标签: optaplanner

我准备了一个说明问题的测试用例。 route由三点组成:

1001 - depot. 
1002 - timewindow 10:00-15:00. 
1003 - timewindow 8:00-15:00. 

我预计路线将是1001-1003-1002,但收到的是1001-1002-1003。

据我了解,软分数约束不会优化停机时间间隔= readyTime - arrivalTime

虽然总行程时间最短(仅由矩阵计算),但现在路线的总持续时间可能超过了。

我可以以某种方式优化总路线持续时间吗? 提前谢谢。

Vrp文件:

NAME: P1568C3-n3-k1
COMMENT: P1568C3-n3-k1
TYPE: CVRPTW
DIMENSION: 3
EDGE_WEIGHT_TYPE: EXPLICIT
EDGE_WEIGHT_FORMAT: FULL_MATRIX
EDGE_WEIGHT_UNIT_OF_MEASUREMENT: SEC
CAPACITY: 4
NODE_COORD_SECTION
1001 52.086 23.687 address
1002 52.089 23.71 address
1003 52.095 23.742 address
EDGE_WEIGHT_SECTION
0 0.1675 0.4053 
0.1675 0 0.2378 
0.4893 0.3218 0 
DEMAND_SECTION
1001 0 21600 54000 0
1002 1 36000 54000 1800
1003 1 28800 54000 1800
DEPOT_SECTION
1001
-1
EOF

结果xml:

  <vehicleList id="11">
    <VrpVehicle id="12">
      <id>0</id>
      <capacity>4</capacity>
      <depot class="VrpTimeWindowedDepot" reference="10"/>
      <nextCustomer class="VrpTimeWindowedCustomer" id="13">
        <id>1002</id>
        <location class="VrpRoadLocation" reference="5"/>
        <demand>1</demand>
        <previousStandstill class="VrpVehicle" reference="12"/>
        <nextCustomer class="VrpTimeWindowedCustomer" id="14">
          <id>1003</id>
          <location class="VrpRoadLocation" reference="7"/>
          <demand>1</demand>
          <previousStandstill class="VrpTimeWindowedCustomer" reference="13"/>
          <vehicle reference="12"/>
          <readyTime>28800</readyTime>
          <dueTime>54000</dueTime>
          <serviceDuration>1800</serviceDuration>
          <arrivalTime>38038</arrivalTime>
        </nextCustomer>
        <vehicle reference="12"/>
        <readyTime>36000</readyTime>
        <dueTime>54000</dueTime>
        <serviceDuration>1800</serviceDuration>
        <arrivalTime>36000</arrivalTime>
      </nextCustomer>
    </VrpVehicle>
  </vehicleList> 

1 个答案:

答案 0 :(得分:0)

optaplanner-examples实施中,在学术论文的问题定义之后,分数实施软分数仅是在路上花费的时间。 目前的得分限制不包括在离开仓库之前对车辆丢失时间(如果有)的任何惩罚。

您可以在示例UI中看到,如果单击左下角按钮“约束匹配”:

  • -489开车回到车厂
  • -406:-168从车厂开车到最近的客户,-238开车到其他客户。

因此OptaPlanner确实返回了最佳解决方案,您只是有一个不同的问题定义。只需添加一个软约束来惩罚仓库的开放时间直到出发时间。

相关问题