Допланирование (устаревшая версия)
Используется при работе с шаблонами Excel или для ознакомления с принципом допланирования. Данный способ поддерживается, но больше не развивается. Для автоматизации задач допланирования (при работе через API) мы рекомендуем использовать периодическое допланирование.
Фиксация порядка заказов
Если порядок следует сохранить, используйте поле vehicles.visited_locations
. Если новые заказы могут быть перемешаны со старыми в произвольном порядке, используйте поле vehicles.planned_route
. В planned_route
можно указывать не только заказы, но и склады для дозагрузки, которые нужно посетить курьеру при движении по маршруту. Для них нужно указать опцию is_middle_depot
= true
.
В planned_route
не поддерживается добавление перерывов. Если при допланировании нужно учитывать режим труда и отдыха курьера, используйте периодическое допланирование (initial_routes
).
Текущее местоположение курьера
Если курьер находится на складе, чтобы сформировать запрос, необходимо знать:
- уже распределенные заказы для каждого автомобиля;
- новые заказы, поступившие с момента прошлого планирования.
В новом запросе на допланирование для каждого автомобиля в поле planned_route
(visited_locations
) укажите идентификаторы (locations
или id
) уже распределенных заказов (из предыдущей итерации планирования).
Если курьер в пути, чтобы сформировать запрос, необходимо знать:
- уже распределенные заказы для каждого автомобиля;
- местонахождение каждого автомобиля на момент допланирования (это также может быть последний доставленный или следующий по очередности заказ);
- список уже выполненных заказов;
- новые заказы, поступившие с момента прошлого планирования.
В новом запросе на допланирование:
-
Для каждого автомобиля в поле
planned_route
(visited_locations
) укажите идентификаторы (locations
илиid
) уже распределенных заказов (из предыдущей итерации планирования), но не выполненных на момент допланирования. -
В список заказов добавьте «фиктивные» заказы, соответствующие точкам текущего местонахождения для каждого автомобиля. Это можно не делать, если точка текущего местонахождения — последний доставленный или следующий по очередности заказ.
-
Для каждого автомобиля в поле
visited_locations
первым элементом укажите идентификатор точки текущего местонахождения и время старта из нее.Чтобы задать время отъезда с точки, используйте параметр
planned_route.start_time
(илиvisited_locations.N.time
).Возможные форматы указания времени:
- относительный: [D.]HH[:MM[:SS]], где D — сдвиг даты относительно даты начала маршрута;
- абсолютный: в формате ISO 8601 (например,
2018-09-06T10:15:00+03:00
).
Подробнее о форматах указания времени
Пример
В данном случае будет запланирован выезд с точки маршрута 1001 в 10:20.
"visited_locations": [ { "id": "1001", "shift_id": "1", "time": "10:20" }, ... ]
Примечание
Для не использованных ранее автомобилей нужно задать корректные параметры выезда: либо сдвинуть время начала смены, либо указать текущее местонахождение на складе в
visited_locations
. -
Из списка заказов удалите уже выполненные заказы (с учетом п. 2: если в качестве точки текущего местонахождения используется последний доставленный заказ, то его удалять не нужно).
Примеры
Базовая задача
В задаче 70 заказов и 9 доступных курьеров, используется опция балансировки balanced_groups
.
Получаем 5 курьеров в решении.
Результат планирования:
Курьер |
Количество заказов |
Последовательность заказов |
Курьер 3 |
15 |
27, 70, 53, 64, 65, 40, 60, 4, 43, 28, 29, 49, 33, 56, 48 |
Курьер 4 |
13 |
45, 31, 58, 52, 24, 54, 39, 47, 19, 30, 44, 16, 63 |
Курьер 5 |
10 |
14, 41, 8, 10, 1, 12, 13, 22, 9, 46 |
Курьер 6 |
15 |
11, 3, 23, 51, 42, 55, 36, 68, 66, 61, 25, 7, 67, 57, 62 |
Курьер 7 |
17 |
18, 37, 38, 17, 2, 59, 35, 34, 32, 26, 20, 69, 5, 50, 15, 21, 6 |
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Далее рассмотрим различные способы допланирования относительно базовой задачи.
Пример 1
Допланирование на складе с изменением порядка заказов в маршрутах.
В запросе задаем 110 заказов (из них 40 новых относительно базовой задачи) и 9 доступных курьеров. У 5 курьеров указываем распределение из базовой задачи в planned_route
. Также используем опцию балансировки balanced_groups
.
Получаем 7 курьеров в решении.
Результат планирования:
Курьер |
Количество заказов |
Последовательность заказов относительно базовой задачи |
Курьер 1 |
14 |
Новый маршрут |
Курьер 3 |
19 |
Добавилось 4 заказа: 27, 70, 53, 64, 65, 40, 99, 60, 4, 43, 28, 95, 29, 49, 33, 56, 88, 48, 84 |
Курьер 4 |
16 |
Добавилось 3 заказа: 45, 31, 58, 52, 87, 24, 54, 39, 100, 47, 19, 30, 44, 16, 102, 63 |
Курьер 5 |
13 |
Добавилось 3 заказа, сильно изменена последовательность: 46, 80, 71, 12, 1, 10, 8, 41, 83, 14, 13, 22, 9 |
Курьер 6 |
17 |
Добавилось 2 заказа: 11, 3, 23, 79, 51, 42, 55, 36, 68, 66, 61, 25, 7, 108, 67, 57, 62 |
Курьер 7 |
18 |
Добавился 1 заказ: 18, 37, 38, 17, 2, 59, 35, 34, 32, 26, 20, 69, 104, 5, 50, 15, 21, 6 |
Курьер 9 |
13 |
Новый маршрут |
Примечание
Заказы, спланированные в базовой задаче, остались закрепленными за теми же курьерами, но при этом:
-
у курьеров из базового решения новые заказы добавились среди других точек маршрута;
-
у курьеров из базового решения изменилась ранее спланированная последовательность заказов;
-
добавилось 2 новых маршрута.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Пример 2
Допланирование на складе без изменения порядка заказов в маршрутах.
В запросе задаем 110 заказов (из них 40 новых относительно базовой задачи) и 9 доступных курьеров. У 5 курьеров указываем распределение из базовой задачи в visited_locations
. Также используем опцию балансировки balanced_groups
.
Получаем 7 курьеров в решении.
Результат планирования:
Курьер |
Количество заказов |
Последовательность заказов относительно базовой задачи |
Курьер 3 |
19 |
Добавилось 4 заказа: 27, 70, 53, 64, 65, 40, 60, 4, 43, 28, 29, 49, 33, 56, 48, 84, 88, 96, 85 |
Курьер 4 |
15 |
Добавилось 2 заказа: 45, 31, 58, 52, 24, 54, 39, 47, 19, 30, 44, 16, 63, 102, 89 |
Курьер 5 |
14 |
Добавилось 4 заказа: 14, 41, 8, 10, 1, 12, 13, 22, 9, 46, 80, 71, 79, 108 |
Курьер 6 |
15 |
Маршрут без изменений: 11, 3, 23, 51, 42, 55, 36, 68, 66, 61, 25, 7, 67, 57, 62 |
Курьер 7 |
17 |
Маршрут без изменений: 18, 37, 38, 17, 2, 59, 35, 34, 32, 26, 20, 69, 5, 50, 15, 21, 6 |
Курьер 8 |
14 |
Новый маршрут |
Курьер 9 |
16 |
Новый маршрут |
Примечание
Заказы, спланированные в базовой задаче, остались закрепленными за теми же курьерами, но при этом:
-
у курьеров из базового решения новые заказы добавились в конец маршрута;
-
добавилось 2 новых маршрута.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Пример 3
Допланирование, когда курьеры уже выехали со склада (без изменения порядка заказов в маршрутах).
На момент планирования считаем, что доставлено 15 заказов (по 3 заказа на каждого из 5 курьеров из базовой задачи), и удаляем их из задачи допланирования.
Итого в запросе задаем 100 заказов (из них 40 новых заказов, 55 еще не доставленных заказов из базовой задачи, 5 точек старта курьеров) и 9 доступных курьеров. У 5 курьеров указываем распределение из базовой задачи в visited_locations
. Также используем опцию балансировки balanced_groups
.
Получаем 8 курьеров в решении (из них 3 новых курьера, которые стартуют со склада).
Результат планирования:
Курьер |
Количество заказов* |
Последовательность заказов относительно базовой задачи |
Курьер 2 |
9 |
Новый маршрут |
Курьер 3 |
13 |
Маршрут без изменений: 27, 70, 53 (выполненные заказы), 1003 (точка старта), 64, 65, 40, 60, 4, 43, 28, 29, 49, 33, 56, 48 |
Курьер 4 |
11 |
Добавлен 1 заказ: 45, 31, 58 (выполненные заказы), 1004 (точка старта), 52, 24, 54, 39, 47, 19, 30, 44, 16, 63, 101 |
Курьер 5 |
10 |
Добавлено 3 заказа: 14, 41, 8 (выполненные заказы), 1005 (точка старта), 10, 1, 12, 13, 22, 9, 46, 80, 71, 79 |
Курьер 6 |
13 |
Добавлен 1 заказ: 11, 3, 23 (выполненные заказы), 1006 (точка старта), 51, 42, 55, 36, 68, 66, 61, 25, 7, 67, 57, 62, 108 |
Курьер 7 |
14 |
Маршрут без изменений: 18, 37, 38 (выполненные заказы), 1007 (точка старта), 17, 2, 59, 35, 34, 32, 26, 20, 69, 5, 50, 15, 21, 6 |
Курьер 8 |
12 |
Новый маршрут |
Курьер 9 |
13 |
Новый маршрут |
* — не считая выполненных и точку старта.
Примечание
В данном решении все курьеры стартуют с 11:00, а новые заказы добавляются в конец маршрута.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте