旅行推销员:固定时间和AM / PM限制

时间:2019-04-13 09:41:40

标签: algorithm traveling-salesman

我需要为财产评估员实施一个调度算法,以便每天访问多个(通常<10个)站点,并在那里花费一些可变的时间来完成工作。如果仅仅是在当天的任何时间完成工作并确定一条接近最佳路线的方法,然后计算工作时间+出差时间以查看评估者一天是否有可能,那么TSP就是简单的用法。我们使用OSRM服务器。

最大的区别是,某些作业必须在AM或PM上启动,此外,有些作业必须在固定时间启动。

当前,我仅使用来自OSRM的蛮力和行进时间矩阵。对于每种组合,我都会保留固定的时间,在各个组合之间进行迭代,并在旅行时间解决方案方面寻求最佳方案。如果新工作超过了评估员的工作时间,则该代码将拒绝添加的任何新工作。它最多可以工作10个工作。

现在,再加上可能的拾音器(用于访问物业)和放下钥匙,停止的次数将很容易超过10,而蛮力将花费太长时间。

在另一篇文章中,类似的问题被称为带时间窗的车辆路径问题。 (http://en.wikipedia.org/wiki/Vehicle_routing_problem),但不包括该地点实际花费的时间。

如果我只是将按键的拾取和下放作为工作本身的一部分,我仍然可以施加蛮力。因此,任何涉及钥匙的工作都只是驾驶时间+工作时间的一个小三角形,但它本身被视为一站式服务。我认为在这种情况下继续使用蛮力可能是安全的,因为这些工作会花费一些时间来做,而且还要花费驾驶时间,因此每天的实际工作数应小于等于10。 -可能是每天最多工作的情况,而系统只会寻找其他评估者。

示例:


 JOB |   Time    | Duration  | Constraint               
 A:  | 9:00 AM   | 45 mins.  | None. Any time of the day. No key pickups.                  |
 B   | 10:00 AM  | 30 mins.  | Fixed appt of 10:30. Key pickup and drop-off time of 15 mins.
 C   | 11:00 AM  | 60 mins.  | Must be done in AM                                             

etc for PM...

我是否应该继续使用蛮力方法,将关键拾音器视为一种“人造卫星”分组,并且仅将其称为(对于该评估者而言)工作(以及可能的排列)超过10(哪个应该很少)?

或者是否存在一些算法,可以给出时间范围(对于AM 9-12,对于固定工作,例如10:00-10:00)和工作时间(50分钟)(可能是10分钟)每个)都可以确定当天的最佳路线?

0 个答案:

没有答案