Как установить временное окно в google or-tools vrptw? - PullRequest
0 голосов
/ 11 апреля 2019

Я новичок в проблеме маршрутизации транспортных средств.Я проходил урок по 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 время (14,38) является окном решения.Как сказано в учебной ссылке - это означает, что транспортное средство должно прибыть туда между 14 и 38 часами, чтобы остаться по расписанию.Окно решения начинается в момент 14, потому что требуется от 14 единиц времени (запись 0, 4 матрицы времени), чтобы добраться из депо в местоположение 4. Однако почему время окончания составляет 38?Мне неясно, все ли времена окончания показаны в выходных данных.Как определяется время окончания?
  2. Как показано в моей модели данных, я пытаюсь решить проблему, при которой человек из депо должен достичь местоположения с 1 по 4 в течение определенного периода времени. Какое значение должно иметь значение 'time_windows 'для случая ниже.Время обслуживания в каждой остановке составляет 45 минут.

    Депо - окно времени (с 4:30 до 9:30)
    Loc1 - окно времени (с 5:00 до 9:00)
    Loc2 - окно времени (5:00С AM до 7:00)
    Loc2 - временное окно (с 5:00 до 7:00)
    Loc4 - временное окно (с 5:00 до 6:00)

  3. Мне также неясно, какое значение времени ожидания AddDimension разрешено.

Спасибо !!

...