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倍。
您将需要以秒为单位的距离,或者将秒数缩放为示例中使用的“单位”,以正确计算到达时间。