Интеграция сервиса Яндекс Маршрутизация с системами на базе 1С (такими как 1С:ERP, УТ 11 или УНФ) часто начинается с разочарования: после передачи списка заказов и машин алгоритм выдает маршруты, которые кажутся логисту «нерабочими». Основная причина кроется не в ошибках кода, а в использовании дефолтных настроек. Для получения качественного результата необходимо произвести тонкую настройку математической модели через параметры costs (стоимости) и penalties (штрафы).
В этой статье мы разберем, как превратить «сырые» данные в эффективные маршруты, почему программисту нельзя работать без логиста и какие технические нюансы нужно учесть при передаче данных через API.
Рассмотрим основной принцип работы алгоритма. Яндекс Маршрутизация пытается минимизировать общую целевую функцию — это сумма всех затрат на выполнение заказов. Если мы оставим настройки по умолчанию, система может построить маршрут, где один водитель едет через весь город ради одного заказа, потому что мы не «объяснили» системе, что это дорого.
Проанализируем основные группы параметров, которые передаются в JSON-запросе к серверу планирования:
Разберем по шагам, как эти параметры влияют на итоговый результат. Если вы установите низкую стоимость километра пробега, система будет максимизировать использование одной машины. Если вы установите высокий штраф за опоздание (late_delivery_penalty), система предложит вывести на маршрут дополнительный автомобиль, чтобы успеть ко всем клиентам вовремя.
Выясним причину, по которой дефолтные настройки не работают. Для системы «стоимость» — это просто абстрактное число. Чтобы маршрут стал рабочим, нужно привести все параметры к единой «валюте» внутри модели. Обычно за единицу принимается рубль или условный балл.
Основные параметры для настройки:
fixed_cost — фиксированная стоимость выхода машины на маршрут. Помогает системе понять, стоит ли вообще задействовать этот автомобиль.per_km_cost — стоимость одного километра пути.per_hour_cost — стоимость одного часа работы водителя.penalty.out_of_time — штраф за нарушение временного окна. Если клиент ждет с 10:00 до 12:00, а машина приехала в 12:05, система должна получить «удар по кошельку».Рассмотрим пример структуры JSON, которую необходимо сформировать в 1С для передачи параметров транспортного средства:
{
"vehicles": [
{
"id": "Truck_001",
"cost": {
"fixed": 1500,
"per_km": 15,
"per_hour": 500
},
"shifts": [
{
"time_range": "09:00-18:00",
"start_location": { "lat": 55.7, "lon": 37.6 }
}
],
"capacity": { "weight": 1500, "volume": 10 }
}
]
}
Как отмечалось в обсуждении, процесс внедрения — это не только ИТ-задача. Программист отвечает за техническую часть: передачу координат, весогабаритных характеристик (ВГХ) и получение результата. Однако именно логист должен определять веса штрафов.
Проанализируем ситуацию: для «молочников» важно развезти товар максимально быстро, так как продукция скоропортящаяся. Здесь штраф за задержку будет критически высоким. Для интернет-магазина с широким интервалом доставки важнее минимизировать пробег.
Рекомендация: создайте в 1С специальную форму настройки (регистр сведений), где логист сможет самостоятельно менять коэффициенты без участия программиста. Это позволит проводить итерационное тестирование («что, если мы увеличим стоимость часа на 10%?»).
Посмотрим на техническую сторону подготовки данных. Качество маршрута на 50% зависит от точности координат. Если в вашей базе 1С адреса хранятся в свободном формате, алгоритм может ошибиться.
Перед отправкой данных на маршрутизацию необходимо выполнить следующие действия:
point_id для того, чтобы система понимала, что несколько заказов относятся к одной точке разгрузки (это исключит лишние маневры вокруг одного дома).Разберем, как адаптировать модель под разные задачи, используя возможности платформы 1С:
1. Совместимость грузов:
Если вы перевозите продукты питания и бытовую химию, необходимо использовать параметры tags для заказов и машин. Система не поставит в один кузов несовместимые категории грузов.
2. Многорейсовость:
Если склад находится в черте города и машина может успеть вернуться, загрузиться и уехать на второй круг, используйте настройку multi_trip. Это критично для компаний с небольшим автопарком и высокой плотностью заказов.
3. Временные окна и сервисные интервалы:
Важно учитывать не только время нахождения в пути, но и service_duration — время на разгрузку, оформление документов и подъем на этаж. Для 1С это означает необходимость добавления реквизита «Время разгрузки» в документ «Заказ клиента» или «Маршрутный лист».
Подводя итог, можно выделить следующие шаги для успешного запуска системы:
costs и penalties.Помните, что «Яндекс Маршрутизация» — это мощный математический инструмент, который требует обучения под конкретные бизнес-процессы. Ваша задача как разработчика — создать удобный интерфейс для взаимодействия логиста с этой моделью.