如何在Google或工具vrptw中设置时间窗口?

时间:2019-04-11 11:36:59

标签: python optimization traveling-salesman or-tools vehicle-routing

我是“车辆路线问题”的新手。我正在浏览https://developers.google.com/optimization/routing/cvrptw上的教程。对于我的用例,我创建了以下数据模型

def create_data_model():
    """Stores the data for the problem."""
    data = {}
    #Obtained from Google Maps Distance Matrix API - Duration Value in Mins
    data['time_matrix'] = [
         [0, 15, 22, 16, 14],
         [14, 0, 15, 7, 7],
         [23, 17, 0, 14, 19],
         [14, 7, 14, 0, 10],
         [13, 7, 17, 10, 0]
    ]
    #Dummy Data 
    data['time_windows'] = [
         (0, 100), #Depot
         (25, 70), #Loc1
         (25, 60), #Loc2
         (80, 120),#Loc3
         (0, 60),  #Loc4
    ]
    data['num_vehicles'] = 1
    data['depot'] = 0
    return data

我的时间维度是:

time = 'Time'
routing.AddDimension(
    transit_callback_index,
    30,  # allow waiting time
    100,  # maximum time per vehicle
    False,  # Don't force start cumul to zero.
    time)

运行上面的程序时,我得到以下输出:

Route for vehicle 0:  0 Time(0,0) -> 4 Time(14,38) -> 1 Time(25,45) -> 2 Time(40,60) -> 3 Time(80,80) -> 0 Time(94,94) Time of the route: 94min

Total time of all routes: 94min

这里我有三个问题:

  1. 我在理解输出时遇到了麻烦。在位置4,Time(14,38)是解决方案窗口。如教程链接中所述-这意味着车辆必须在14到38之间到达那里才能按时行驶。解决方案窗口从时间14开始,因为从仓库到位置4需要14个时间单位(时间矩阵的0、4项),但是为什么结束时间是38?我不清楚输出中显示的所有结束时间。结束时间是如何得出的?
  2. 如我的数据模型所示,我正在尝试解决一个问题,即从仓库中的人员需要在特定时限内到达位置1到4。但是在以下情况下,“ time_windows”的值应该是多少?每个站点的服务时间为45分钟。
      

    软件仓库-时间窗口(上午4:30至9:30)
       Loc1-时间窗口(5:00 AM至9:00 AM)
       Loc2-时间窗口(5:00 AM至7:00 AM)
       Loc2-时间窗口(5:00 AM至7:00 AM)
       Loc4-时间窗口(5:00 AM至6:00 AM)

  3. 我也不清楚AddDimension的允许等待时间值。

谢谢!

0 个答案:

没有答案