Маршруты5 минут на чтение

Кто доедет быстрее: выбираем исполнителя по времени в пути

Река, мост и односторонние улицы меняют выбор. Сравниваем свободные бригады по дороге до клиента.

Макет города с рекой, мостом, двумя служебными машинами и дорогой до клиента.
Через реку по прямой близко, а по дороге — через мост. Иллюстрация, условный город.

Поступила новая заявка. На карте рядом два свободных мастера: один находится через реку, другой — дальше по той же стороне. По прямой первый ближе, но до моста ему нужно ехать в обход. Кого назначить?

Для такого выбора полезна матрица расстояний: таблица дорог от нескольких исполнителей до одной или нескольких заявок.

Почему расстояния по прямой мало

Радиус вокруг клиента помогает быстро отобрать кандидатов. Но он не описывает дорогу. Река, железная дорога, развязка и одностороннее движение могут заметно изменить путь.

Дорожное расстояние и время тоже отвечают на разные вопросы. Километры важны для пробега, время — для ожидания клиента и графика сотрудника. Заранее выберите, что Вы сравниваете: самый короткий путь не обязательно окажется самым быстрым.

Направление имеет значение. Путь от мастера к клиенту может отличаться от обратного из-за устройства дорожной сети. Рассчитывайте именно поездку к заявке.

Как читать матрицу

В строках находятся точки отправления, в столбцах — назначения. На пересечении — дорожное расстояние и оценка времени. Для трёх исполнителей и одной заявки получится три элемента.

Одна заявка, три возможных исполнителя
ИсполнительПо дорогеВ пути
Бригада А6,8 км18 мин
Бригада Б Быстрее8,2 км12 мин
Бригада ВПуть не найден
Условный пример: у бригады Б больше пробег, но меньше расчётное время. Это иллюстрация выбора, а не результат реального запроса.

Если цель — быстрее приехать к клиенту, из этих вариантов подходит бригада Б. Если Вы ограничиваете пробег, решение может быть другим. Самой таблице неизвестны приоритеты Вашего бизнеса.

Отсутствие пути — отдельный результат. Его нельзя превращать в нулевое расстояние или нулевое время, иначе недоступный исполнитель окажется первым в списке.

Как принять решение

  1. Сначала проверьте пригодность. Оставьте сотрудников с нужной специализацией, инструментом и доступным временем. Ближайший мастер без нужного допуска не решит задачу.
  2. Возьмите актуальную точку отправления. Местоположение двухчасовой давности или адрес офиса могут исказить сравнение. Если сотрудник занят, точкой отправления может стать место окончания текущего задания.
  3. Сравните дорогу. Запросите матрицу для отобранных кандидатов и исключите пары без найденного пути.
  4. Добавьте время освобождения. Мастеру может требоваться ещё 20 минут на текущую работу. До приезда останется это время плюс дорога и необходимый запас.
  5. Подтвердите назначение. Между расчётом и сохранением заявки доступность сотрудника могла измениться. Перед назначением проверьте её ещё раз.

Не обещайте клиенту точную минуту приезда только по длительности маршрута. Парковка, доступ на территорию и завершение предыдущей работы тоже занимают время. Для первого внедрения удобнее показывать диспетчеру сравнение вариантов и оставлять окончательный выбор за ним.

Что учесть при подключении

Размер таблицы растёт как произведение. Четыре исполнителя и пять заявок — это 20 элементов. В текущем API Ммаппс доступно до 25 элементов в одном запросе; каждая пара — в пределах 200 км по прямой. Проверяйте ограничения подключения в документации матрицы.

Матрица сравнивает пары точек. Она не составляет расписание, не распределяет заказы автоматически и не выбирает порядок посещения. Если нужно объехать несколько клиентов с временными окнами, потребуется отдельная логика планирования. Различие расчёта таблицы и поиска поездки видно и в описании Table service OSRM.

Учёт идёт по элементам. Один запрос на 20 пар расходует 20 элементов, а не одну операцию матрицы. Поиск текстовых адресов учитывается отдельно. Перед запуском оцените, сколько раз за день Вы пересчитываете кандидатов, и проверьте нагрузку через калькулятор расходов.

Начните с одной новой заявки и нескольких свободных исполнителей. Такой сценарий легко сравнить с решением диспетчера и понять, какие дополнительные ограничения действительно нужны Вашей команде.

Вернуться ко всем статьям