Обновление Яндекс Маршрутизации
от 1 июня 2023 года

  • Пресеты
  • Радиус детекции для всех заказов одного склада
  • Новые функции и переменные в Сustom cost
  1. Пресеты

В Яндекс Маршрутизации появился функционал «Пресеты». Он позволяет упростить задачу интеграции вашей информационной системы с сервисом построения маршрутов, а также быстрее внедрять новые опции и параметры планирования. Подробные инструкции вы можете найти в нашем видео и прочитать в документации.

  1. Радиус детекции для всех заказов одного склада

Для детекции посещения точек маршрута в Мониторинге задаётся радиус детекции. Раньше, этот радиус можно было задать либо целиком для всех заказов вашей компании, либо для каждого заказа индивидуально. Сейчас появилась возможность задать его на уровне склада. После этого он будет применяться для всех заказов, относящихся к данному складу. Задать радиус для склада можно как при создании нового склада через API, так и при изменении существующего склада, указав значение в поле mark_delivered_radius.

3. Новые функции и переменные в Сustom cost

Добавились следующие функции в расширенных настройках стоимости:

  • has_location(<условие>) проверяет, есть ли в маршруте(заезде, смене) локация, соответствующая критерию
  • location_count(<условие>) возвращает количество локаций в маршруте (заезде, смене), которые соответствуют критерию
  • has_order(<условие>) проверяет, есть ли в маршруте(заезде, смене) заказ (pickup или delivery), соответствующий критерию
  • order_count(<условие>) возвращает количество заказов (pickup или delivery) в маршруте (заезде, смене), которые соответствуют критерию
  • stop_count(<условие>) возвращает количество остановок в маршруте (заезде, смене), которые соответствуют критерию


В условиях этих функций можно использовать следующие подфункции:

  • in_zone(<название зоны>) определяет, находится ли локация в указанной зоне
  • has_load_type(<название типа загрузки>) определяет, есть ли у локации указанный тип загрузки
  • has_required_tag(<название тега>) определяет, есть ли у локации указанный обязательный тег
  • has_optional_tag(<название тега>) определяет, есть ли у локации указанный опциональный тег
  • has_tag(<название тега>) определяет, есть ли у локации указанный тег (опциональный или обязательный)
  • is_order() определяет, является ли локация заказом (pickup или delivery)
  • is_pickup() определяет, является ли локация пикапом
  • is_delivery() определяет, определяет, является ли локация delivery


Появился новый оператор логическое отрицание "!".

Примеры выражений с новыми функциями:
500 + 500 * has_location(in_zone('Волжск')) если в маршруте есть локация в зоне «Волжск» - то вернётся 1000, иначе 500
450 * location_count(in_zone('Волжск') | in_zone('Зеленодольск')) выражение посчитает количество локаций, которые попадают хотя бы в одну из двух зон («Волжск», «Зеленодольск») и вернёт их количество, умноженное на 450
1000 + has_location(in_zone('Волжск') & has_load_type('Заморозка')) * 500 если в маршруте есть хотя бы одна локация, которая одновременно находится в зоне "«Волжск» и имеет тип загрузки «Заморозка» то выражение вернёт 1500, иначе 1000
100 * (has_location(in_zone('Волжск')) & has_location(in_zone('Зеленодольск'))) 100 если есть есть хотя бы один заказ в Волжске и хотя бы один заказ в Зеленодольске (может быть всего один заказ в обоих зонах или два разных)
100 * has_location(in_zone('Волжск') & in_zone('Зеленодольск')) 100, если есть есть заказ, который одновременно попадает в обе зоны Волжск и Зеленодольск
100 * location_count(is_pickup() & in_zone('Волжск') & !has_tag('Возврат')) - выражение посчитает количество пикапов, которые находятся в зоне "Волжск" и при этом не имеют тега "Возврат", и вернёт их кол-во, умноженное на 100

Появились и новые переменные:

  • max_custom_value в отличии от total_custom_value считает не сумму всех custom_value у локаций, а их максимум.
  • run_index_in_route номер заезда во всём маршруте, начиная с единицы. Можно задавать только для выражений на уровне заезда.
  • run_count_in_route количество заездов во всём маршруте.
  • run_index_in_shift — номер заезда в смене, начиная с единицы. Можно задавать только для выражений на уровне заезда.
  • run_count_in_shift —количество заездов в смене. Можно задавать только для выражений на уровне заезда или смены.
  • shift_index_in_route номер (используемой) смены в маршруте, начиная с единицы. Пустые смены при этом пропускаются и не считаются.
  • shift_count_in_route количество используемых (непустых) смен в маршруте.


Как и прежде, все функции и переменные могут быть также использованы в построении формул для расчета выплат курьерам в payout.

На этом сегодня всё, по всем вопросам пишите на routing-support@yandex-team.ru

Был ли этот дайджест полезным?
Thu May 16 2024 14:25:18 GMT+0300 (Moscow Standard Time)