Подсчет количества заказов и автомобилей
Мониторинг
Утром каждого дня анализируются все маршруты с датой route.date, равной вчерашнему дню.
При тарификации по автомобилям подсчитывается количество уникальных автомобилей vehicle.id в этих маршрутах и формируется значение счетчика Мониторинг: количество ТС.
При тарификации по заказам подсчитывается количество уникальных выполненных заказов location.id и формируется значение счетчика Мониторинг: количество заказов.
Эти счетчики доступны в Кабинете разработчика в разделе Статистика.
.
Планирование
Сервис Планирования решает два типа задач:
- оптимальное распределение заказов и планирование маршрутов для нескольких курьеров (задачи MVRP);
- оптимизация последовательности выполнения заказов на маршруте для одного курьера (задачи SVRP).
Подробнее см. в разделе Сравнение групп методов MVRP и SVRP. Тарифы на эти два вида задач могут различаться. Для тарификации подсчитывается и количество автомобилей, и количество выполненных заказов в трех разрезах:
- для всех задач;
- только для задач MVRP;
- только для задач SVRP.
Результаты можно видеть в счетчиках Планирование: количество ТС и Планирование: количество заказов в Кабинете разработчика в разделе Статистика.
.
Определение даты
Каждое утро выставляются счета по задачам с датой options.date, равной вчерашнему дню, за исключением следующих случаев:
- в момент запроса дата маршрута не была указана;
- в момент запроса была указана дата маршрута в прошлом;
- в момент запроса была указана дата маршрута в будущем более чем через 7 дней от даты запроса.
Такие задачи будут учтены биллингом на дату выполнения запроса.
Рекомендуется планировать задачи на сегодняшний или завтрашний день либо не более чем на 7 дней вперед — в этом случае задачи будут учтены биллингом день, указанный в поле options.date.
Важно
Мы настоятельно рекомендуем указывать в поле options.date реальную дату поездки курьера. Это позволит не только избежать неправильно выставленных счетов, но и получать максимально корректные и оптимально спланированные маршруты, так как в разные дни маршруты могут существенно различаться.
Пример 1
20 января 2026 года в 23:00 (GMT+3) логист запускает задачу планирования на завтрашний день (options.date = 2026-01-21).
Задача будет учтена в биллинге за 21 января 2026 года.
При этом, если 21 января 2026 года логист снова запустит задачу с теми же заказами и options.date = 2026-01-21, задача будет учтена в биллинге только 1 раз: параметры location.id, location.type и options.date совпадают, заказы будут объединены в один кластер.
Пример 2
20 января 2026 года логист запускает задачу планирования на текущий день (options.date = 2026-01-20). Позже он замечает ошибку в дате и запускает задачу планирования с теми же заказами на завтрашний день (options.date = 2026-01-21).
Задача будет учтена в биллинге дважды: за 20 и 21 января.
Пример 3
20 января 2026 года разработчик тестирует API и создает задачу планирования с options.date = 2027-01-20 (на год вперед).
Задача будет учтена в биллинге за текущую дату: в момент запроса была указана дата маршрута в будущем более чем через 7 дней от даты запроса.
Подсчет количества заказов
При подсчете количества заказов в маршрутах анализируются все элементы массива locations. Из них исключаются все элементы с типами garage, anchor и parking. Затем исключаются одинаковые заказы — те, у которых совпадают координаты (с точностью до 6 знака), поля location.id и location.type. Оставшееся количество заказов записывается в счетчик Планирование: количество заказов.
Если при планировании заказы делились на несколько частей, то тарифицируются заказы, а не отдельные части.
Примечание
Сложные заказы pickup&delivery (необходимо сначала забрать заказ в одной или нескольких точках, а затем доставить в точку получения) тарифицируются как несколько заказов — по количеству разных точек.
Важно
Не рекомендуется использовать в поле location.id какие-либо теги или другие вставки, уникальные для конкретной задачи, иначе один и тот же заказ будет посчитан несколько раз.
Пример 1
При планировании ошибочно заведены 2 заказа с совпадающими данными: location.id, location.type и координатами.
В биллинге будет учтен 1 заказ: полностью совпадающие заказы считаются дублями.
Пример 2
Курьер должен привезти 5 заказов разным получателям по одном и тому же адресу.
В биллинге будет учтено 5 заказов: несмотря на совпадение координат, у заказов разные location.id.
Пример 3
Логист запускает задачу планирования на 10 заказов. Позже он снова запускает планирование на те же заказы, но в значения параметров location.id передает обновленные данные (такое возможно в случаях, когда location.id формируется динамически).
В биллинге будет учтено 20 заказов: несмотря на совпадение координат, у заказов разные location.id. Чтобы исключить подобные ситуации, используйте в поле location.id теги, уникальные для конкретной задачи.
Пример 4
После прибытия на адрес доставки курьер уточнил координаты заказа, так как получатель перенес доставку к другому подъезду здания.
В биллинге будет учтено 2 заказа: несмотря на совпадение location.id и location.type у заказов разные координаты.
Пример 5
Курьер должен сначала забрать 5 заказов на одном складе (location.type = pickup), затем привезти их по 5 разным адресам.
В биллинге будет учтено 6 заказов: 1 точка pickup + 5 точек delivery.
Пример 6
При планировании заведены 2 заказа с совпадающими location.id и координатами, но разными location.type: в первом заказе location.type = pickup, во втором location.type = delivery.
В биллинге будет учтено 2 заказа: несмотря на совпадение координат и location.id, у заказов разные location.type.
Подсчет количества автомобилей
При подсчете количества автомобилей в маршрутах анализируются все элементы массива locations. Из них исключаются все элементы с типами garage, anchor и parking. Задачи со схожими множествами заказов объединяются в кластеры — это позволяет не тарифицировать повторно задачи, которые решались несколько раз с различным набором условий (см. Особенности тарификации).
Если задача меньшего размера (по числу заказов) хотя бы на 50% пересекается с большей, эти задачи будут отнесены в один кластер. При этом в итоге в один кластер могут быть отнесены задачи, вообще не имеющие общих точек. Например, на рисунке ниже задача 1 и задача 3 не имеют ни одного общего заказа, но при этом попадают в общий кластер с задачей 2.
В каждом кластере выбирается задача, в которой используется наибольшее количество автомобилей. Эти значения суммируются по всем кластерам, и получившееся количество автомобилей записывается в счетчик Планирование: количество ТС.
Примечание
При подсчете учитываются именно используемые автомобили, а не все перечисленные в запросе.
Пример 1
Для поиска лучшего решения доставки из 100 заказов логист запускает планирование 3 раза, меняя при этом значения штрафа за среднее время приезда и корректировку времени движения и получает следующие результаты:
- запуск 1 — 10 автомобилей;
- запуск 2 — 13 автомобилей;
- запуск 3 — 11 автомобилей.
В биллинге будет учтено 13 автомобилей: несмотря на различный набор условий, три задачи планирования с одинаковыми заказами объединяются в один кластер, при этом тарифицируется максимальное значение количества автомобилей в кластере.
Пример 2
Логист запустил задачу планирования на 50 заказов и получил решение для 10 автомобилей. Позже логист допланировал задачу и добавил в нее 20 новых заказов для 2 новых автомобилей.
В биллинге будет учтено 12 автомобилей: задачи планирования с разными заказами не могут быть объединены в один кластер.
Пример 3
При запуске задачи планирования логист передает в массиве vehicles 10 автомобилей (весь автопарк компании), в полученном решении используется только 3 автомобиля.
В биллинге будет учтено 3 автомобиля: тарифицируются только используемые автомобили, а не общее количество.
Пример 4
Для поиска лучшего решения доставки из 20 заказов логист запустил планирование, разбив заказы на части:
- запуск 1 — 10 заказов, 2 автомобиля;
- запуск 2 — 10 заказов, 3 автомобиля.
Далее логист объединил заказы и еще раз запустил планирование:
- запуск 3 — 20 заказов, 5 автомобилей.
В биллинге будет учтено 5 автомобилей: все 3 задачи будут объединены в один кластер, тарифицируется максимальное значение количества автомобилей в кластере.
Пример 5
Логист запустил задачу планирования и получил решение для 2 автомобилей. После выполнения заказов в этот же день логист запустил новую задачу планирования для тех же автомобилей.
В биллинге будет учтено 4 автомобиля: тарифицируются 2 автомобиля для первой задачи и 2 автомобиля для второй.