Optaplanner遇到了一个难题。
我们正在开展一个项目,我们需要为此计算出一条优化的车辆路线,其中要考虑到客户希望获得服务的特定时间。

我们已经能够创建一个vrp文件,如Optaplanner的examples文件夹中所给出的那样。时隙的小时数以秒为单位。它可以正确加载到GUI应用程序中。

但是,路由问题似乎不可行。当我们不考虑时隙时,我们会得到结果。我们查看了XML文件,发现ArrivalTime与到期时间不对应。实际上,我们想知道如何解释XML,以发现错误。

<VrpVehicle id="19">
  <id>1</id>
  <capacity>75</capacity>
  <depot class="VrpTimeWindowedDepot" reference="14"/>
  <nextCustomer class="VrpTimeWindowedCustomer" id="20">
    <id>4</id>
    <location class="VrpRoadLocation" reference="11"/>
    <demand>1</demand>
    <previousStandstill class="VrpVehicle" reference="19"/>
    <nextCustomer class="VrpTimeWindowedCustomer" id="21">
      <id>2</id>
      <location class="VrpRoadLocation" reference="7"/>
      <demand>1</demand>
      <previousStandstill class="VrpTimeWindowedCustomer" reference="20"/>
      <vehicle reference="19"/>
      <readyTime>39600</readyTime>
      <dueTime>43200</dueTime>
      <serviceDuration>60</serviceDuration>
      <arrivalTime>3300060</arrivalTime>
    </nextCustomer>

是否有人熟悉Optaplanner生成的输出?
我们如何检索建议的路线,ArrivalTime是什么意思?目前,我们认为4-2是车辆19的最佳路线。这是否正确?

亲切的问候,
兆字节

最佳答案

您对路线的解释是正确的,尽管是车辆1为客户4-> 2提供服务,并且不一定是最佳路线,而是当前路线。

在示例中,arrivalTime由ArrivalTimeUpdatingVariableListener更新,后者使用客户的位置来确定距离。这些距离不能立即用于您的用例,因为它们的单位不是秒,并且可能缩放1000倍。

您将需要以秒为单位的距离,或者将秒数缩放为示例中使用的“单位”,以正确计算到达时间。

10-07 12:04