Для корректной загрузки данных для маршрутизации, файл Excel должен обязательно содержать следующие листы:
● Orders — информация о заказах;
● Vehicles — информация о машинах/курьерах;
● Depot либо Depots — информация о точке склада/о множестве складов;
● Options — опции маршрутизации.
Файл Excel также может содержать листы с другими наименованиями и дополнительной информацией для пользователя — на загрузке данных это не отражается.
Для корректной загрузки файла, заголовки столбцов и идентификаторы колонок таблицы (первые две строки таблицы) должны оставаться неизменными. При этом допускается удаление необязательных столбцов (или добавление новых), при условии, что не будет возникать пустых ячеек между столбцами с данными.
Соблюдать порядок столбцов на листах Excel необязательно.
Допустимый формат для загрузки: xlsx.
Данный лист содержит информацию о заказах. Так как доставка осуществляется из точки склада, то каждая строка соответствует заказу.
Достаточно заполнить следующий минимум колонок:
● номер заказа;
● координаты и/или адрес заказа (рекомендуем указывать координаты, так как система точнее определит местоположение точки);
● временное окно заказа;
● объемно-весовые характеристики заказа (вес и/или объем и/или количество грузовых мест).
В остальных полях можно оставить значения по умолчанию (или оставить их пустыми) — этого будет достаточно для первого запуска задачи на маршрутизацию.
Основная информация о заказе
Наименование колонки | Идентификатор колонки | Комментарий к заполнению | Обязательное поле |
---|---|---|---|
Номер заказа | id | Укажите порядковый номер заказа, либо уникальный код точки | Да |
Широта, долгота | point.lat, point.lon | Координаты точки заказа. Координаты должны соответствовать точке парковки или остановки для вручения заказа. | Да (дает наиболее точное местоположение точки в отличие от адреса) |
Наименование получателя | title | Информационное поле, которое потом отображается в интерфейсе планирования | Нет |
Адрес получателя | address | Адрес доставки | Нет, при условии, что указаны координаты заказа. |
Временное окно | time_window | Если временное окно относительно (например в формате 10:00 – 18:00), то важно учитывать сдвиг этого временного окна относительно даты планирования (которая указывается при запуске задачи на маршрутизацию). | Да |
Жесткое временное окно, TRUE/FALSE | hard_window | TRUE — временное окно не может быть нарушено ни при каких обстоятельствах.
FALSE — временное окно может быть нарушено (если это повлияет на более оптимальное использование ресурсов). Поле можно оставить пустым — тогда будет считаться, что временное окно гибкое (то есть его можно нарушить). |
Нет |
Время обслуживания:
на парковку, сек на вручение 1 заказа, сек |
shared_service_duration_s
service_duration_s |
Время, которое машина/курьер проведет на точке заказа (в секундах). | Да |
Вес (брутто), кг
Кол-во занимаемых мест Объем груза |
shipment_size.weight_kg
shipment_size.units shipment_size.volume_cbm |
Объемно-весовые характеристики заказа. | Рекомендуем заполнить для корректной маршрутизации (формально поле необязательно) |
Необходимые свойства машины | required_tags | Необходимо указать в данном поле гос.номер автомобиля, который по своим свойствам (наличие рефрижератора, наличие прицепа и тд.) соответствует заказу | Нет |
Габариты, м:
Ширина, глубина, высота |
shipment_size.volume.width_m
shipment_size.volume.depth_m shipment_size.volume.height_m |
Габариты заказа. | Рекомендуем заполнить для корректной маршрутизации (формально поле необязательно) |
Штрафы | penalty.out_of_time.minute
penalty.out_of_time.fixed penalty.early.fixed penalty.early.minute penalty.drop penalty.late.fixed penalty.late.minute |
Штрафы за нарушение временного окна заказа. Рекомендуется оставить значения по умолчанию (fixed = 1000, minute = 17) или пустым (в этом случае будет использовано значение по умолчанию). Изменения данного поля желательно только когда понятно его влияние на маршрутизацию. Изменение может потребоваться для сценариев: опоздания на заказ недопустимы (но возможно приезжать раньше временного окна) или наоборот; нарушение временных окон приемлемо, если это ведет к более оптимальному использованию ресурсов. | Нет |
На данном листе содержится информация о доступных объектах (машинах или курьерах). Необходимо указывать конкретные транспортные средства / ФИО курьера, либо идентификатор трекера.
Важно корректно указать все имеющиеся объекты на момент планирования:
● если это собственный транспорт (курьеры), то необходимо перечислить их с учетом плановой недоступности для выполнения маршрутов/времени рабочей смены;
● если это наемный транспорт (курьеры) и их количество заранее неизвестно, то необходимо указать их в том количестве, в котором обычно привлекается для такого объема заказов. Если есть вариативность по типам, то для каждого типа необходимо указать максимальное количество привлекаемых машин.
Достаточно заполнить следующий минимум полей:
● номер транспортного средства/курьера;
● номер устройства (GPS-трекера):
● вместимость транспортного средства/грузоподъемность курьера;
● время работы.
В остальных полях можно оставить значения по умолчанию (или оставить их пустыми) — этого будет достаточно для первого запуска задачи на маршрутизацию.
Основная информация об объекте (ТС, курьер)
Наименование колонки | Идентификатор колонки | Комментарий к заполнению | Обязательное поле |
---|---|---|---|
Название или номер машины;
Номер машины |
ref, id | Рекомендуем заполнять колонки идентично друг другу | Да |
Группа | group | Если у вас несколько групп заведены в интерфейсе Логистики, то укажите наименование групп для которых нужна маршрутизация. Если это поле не заполнено, то маршрутизация будет ссылаться на group из Листа Options | Нет |
Идентификатор IMEI | imei | Номер GPS-трекера транспортного средства или курьера. | Да |
Грузоподъемность,кг;
Макс. загрузка, % веса; Кол-во доступных мест; Макс. загрузка, % мест; Размер места для груза, м (ширина, глубина, высота); Макс. загрузка, % объема |
capacity.weight_kg
capacity.limits.weight_perc capacity.units capacity.limits.units_perc capacity.volume.width_m capacity.volume.depth_m capacity.volume.height_m capacity.limits.volume_perc |
Параметры вместимости машины/грузоподъемности курьера.
capacity.weight_kg — грузоподъемность в кг; capacity.units — грузоподъемность в грузовых единицах; Помимо номинальной вместимости желательно указать в параметрах limits — возможные перегрузы или плановые недогрузы транспортных средств |
Необходимо заполнить для корректной маршрутизации |
Стоимость использования ТС, руб (за км пути, за час работы, за факт использования ТС, за посещение одного адреса,за 1 рейс) | cost.km
cost.location cost.hour cost.fixed cost.run |
Стоимость использования ТС/курьера для алгоритма (это не тариф, это именно ориентир для алгоритма при выборе того или иного варианта маршрутизации). Стоимости cost.km и cost.fixed не должны быть равны 0. Если неизвестно, как заполнять данные поля, лучше оставить значения по умолчанию (cost.fixed = 100000, cost.km = 5000) или оставить пустыми (в этом случае будут использованы значения по умолчанию). | Да |
Возврат на склад в конце смены, TRUE/FALSE | return_to_depot | Параметры возврата ТС/курьера после завершения маршрута. По умолчанию return_to_depot = true (то есть машина возвращается на склад), если поле оставить пустым, то будет использовано значение по умолчанию. | Нет |
Свойства ТС;
Несовместимые свойства ТС |
tags
excluded_tags |
Параметры совместимости заказов и машин. Для одного ТС можно указать несколько ключевых слов (указываются через запятую), которые понятным для пользователя образом идентифицируют необходимое свойство машины/курьера. Для заказа может быть подобрана только машина, содержащая весь набор таких параметров, указанных в заказе. | Нет |
Время начала и конца смены | shifts.0.time_window | Время доступности водителей для планирования маршрутов. Если машины/курьеры работают, например, с 9 до 17 (но небольшие переработки иногда случаются), то лучше сразу указать доступное время работы, например, с 9 до 17:30). При простановке временного окна смены важно учитывать время в начале маршрута / время в конце маршрута, поскольку алгоритм считает, что это время входит во время работы машины/курьера. Также, если машина/курьер возвращается на склад, это время также учитывается во времени работы машины/курьера (и должно быть отражено в окне смены). | Да |
Жесткое временное окно, TRUE/FALSE | shifts.0.hard_window | TRUE — временное окно смены не может быть нарушено ни при каких обстоятельствах.
FALSE — временное окно смены может быть нарушено (если это повлияет на более оптимальное использование ресурсов). Поле можно оставить пустым, тогда будет считаться, что временное окно гибкое (то есть его можно нарушить). |
Нет |
Максимальная длительность смены, сек | shifts.0.max_duration_s | Рекомендуется не использовать на начальных запусках маршрутизации (оставить пустым). | Нет |
Штрафы:
за минуту нарушения окна смены; за факт нарушения окна смены |
shifts.0.penalty.out_of_time.minute
shifts.0.penalty.out_of_time.fixed |
Штрафы за нарушение временного окна заказа. Рекомендуется оставлять поля пустыми, в этом случае будет использовано значение по умолчанию. Изменения данного поля желательно только когда понятно его влияние на маршрутизацию. Изменение может потребоваться для сценариев: раннее начало смены недопустимо (но возможно завершать смену позднее) или наоборот; нарушение временного окна смены приемлемо, если это ведет к более оптимальному использованию ресурсов | Нет |
Максимально допустимое количество остановок за рейс;
Штраф за остановки сверх допустимого количества; Штраф за каждую остановку сверх допустимого количества |
shifts.0.maximal_stops
shifts.0.penalty.stop_excess.fixed shifts.0.penalty.stop_excess.per_stop |
Рекомендуется не использовать на начальных запусках маршрутизации (оставить пустым). В дальнейшем можно использовать для ограничения количества точек в маршруте: для большегрузных машин (если это нельзя ограничить другими средствами, например, сервисным временем на заказах); для установки практического ограничения количества точек на маршруте (если, например, проверено на практике, что маршрут больше определенного количества точек курьер не выполнит без нарушений из-за возникновения тех или иных непредвиденных обстоятельств). | Нет |
Минимально допустимое количество остановок за рейс;
Штраф за остановки менее допустимого количества; Штраф за каждую остановку менее допустимого количества |
shifts.0.minimal_stops
shifts.0.penalty.stop_lack.fixed shifts.0.penalty.stop_lack.per_stop |
Рекомендуется не использовать на начальных запусках маршрутизации (оставить пустым). В дальнейшем можно использовать для обязательного использования собственного транспорта. | Нет |
На листе Depot содержится информация о складе, с которого будет производиться отгрузка. На данном листе заполняется только одна строка.
Если используется несколько складов, то необходим лист Depots, на котором указывается любое количество складов.
Как минимум одна строка склада обязательна для заполнения. Если машины/курьеры стартуют не со склада и не возвращаются на склад в конце маршрута (то есть нет никакой точки, к которой они были бы как-то привязаны), то в качестве склада можно указать координаты любой точки, например, координаты офиса или координаты центра города.
Depot и Depots — взаимоисключающие листы, допускается только один из них.
Достаточно заполнить следующий минимум полей:
● название склада (можно просто Склад);
● координаты склада;
● время работы склада (можно поставить максимально широко: 00:00-23:59 на текущие сутки планирования или 00:00-1.23:59 на текущие и следующие сутки планирования).
В остальных полях можно оставить значения по умолчанию (или оставить их пустыми) — этого будет достаточно для первого запуска задачи на маршрутизацию.
Основная информация о складе
Наименование колонки | Идентификатор колонки | Комментарий к заполнению | Обязательное поле |
---|---|---|---|
ID;
Номер склада |
id; ref | id склада должно быть уникальным, т.е. не повторяться ни с одним из номеров id заказов. Если id не заполнено, то при загрузке данных из Excel и отправке задачи на маршрутизацию оно заполняется как 0. Номер склада ref - дополнительный идентификатор склада, который будет отображаться в интерфейсе. | Да |
Широта, долгота | point.lat, point.lon | Координаты точки склада. | Да |
Время работы склада | time_window | Если нет каких-то специальных требований ко времени возврата машин на склад / пропускной способности склада, то рекомендуется указывать максимально широкое время работы склада (например, 00:00-23:59 для планирования только в рамках одного дня или 00:00-1.23:59 в рамках 2-х суток). | Да |
Гибкое время старта TRUE/FALSE | flexible_start_time | Если важно получать от сервиса требуемое время старта машины/курьера, то нужно использовать данный параметр. Если время работы курьера отсчитывается от времени начала смены, то включать данный параметр нет необходимости. | Нет |
Жесткое время работы склада, TRUE/FALSE | hard_window | TRUE — временное окно склада не может быть нарушено ни при каких обстоятельствах. FALSE — временное окно склада может быть нарушено (если это повлияет на более оптимальное использование ресурсов). Поле можно оставить пустым, тогда будет считаться, что временное окно гибкое (то есть его можно нарушить). | Да |
Время обслуживания в начале маршрута, с;
Время обслуживания в конце маршрута, с |
service_duration_s
finish_service_duration_s |
Необходимо заполнять с учетом временного окна смены ТС/курьера (Лист Vehicles). Например, если нужно заполнить только время, которое должно добавляться только между рейсами, то можно поступить следующим образом: 1. Использовать только service_duration_s. 2. Время начала первой смены сделать раньше на значение service_duration_s. Например, водители работают с 9:00 до 17:00. Между рейсами необходимо выделить 30 минут на загрузку. В начале маршрута машины уже загружены. Если курьеры выезжают в 9:00, необходимо поставить смену с 8:30 до 17:00, а параметр service_duration_s сделать равным 1800 (тогда алгоритм будет считать, что работа начинается в 8:30, полчаса уходит на загрузку — то есть выезд возможен в 9:00. А в дальнейшем между рейсами будет добавляться эти полчаса). | Да |
Штраф за минуту опоздания/приезда раньше, руб
Фиксированный штраф за факт опоздания/приезда раньше, руб Фиксированный штраф за нарушение пропускной способности Штраф за каждый килограмм превышения пропуской способности Штраф за каждое место превышающее пропускнную способность |
penalty.out_of_time.minute
penalty.out_of_time.fixed penalty.throughput.fixed penalty.throughput.kg penalty.throughput.unit |
Оставьте поля по умолчанию, либо измените их в случае необходимости. | Нет |
Пропускная способность, кг/час;
Пропускная способность, мест/час |
throughput.kg_per_hour
throughput.units_per_hour |
Для начальных запусков маршрутизации рекомендуется оставить эти поля пустыми. Прежде чем использовать параметры пропускной способности, рекомендуется использовать параметр flexible_start_time, на практике он дает такой же эффект распределения времени старта машин во времени. | Нет |
На данном листе содержатся опции маршрутизации. Опции заполняются в одну строку. Для первого запуска маршрутизации значения на данном листе можно не заполнять и оставить пустыми.
Основные опции
Наименование колонки | Идентификатор колонки | Комментарий к заполнению | Обязательное поле |
---|---|---|---|
Объединять заказы в мультизаказы? | merge_multiorders | Рекомендуется ставить TRUE — в большинстве случаев это ожидаемый сценарий.
При планировании маршрутов могут возникать случаи, когда несколько заказов должны быть доставлены по одному адресу, например, в один многоквартирный дом или бизнес-центр. Такие заказы могут автоматически объединяться в один или несколько мультизаказов. |
Нет |
Лимит времени решения, сек. | solver_time_limit_s | Ограничение по времени на формирование маршрутов (максимальное время формирования маршрутизации, то есть распределение маршрутов по заказам может сформироваться и быстрее указанного времени, в зависимости от количества точек, объектов, заказов). Рекомендуем оставить время по умолчанию 800 сек. | Нет |
Группа | group | Наименование группы, в которой строится маршрутизация. Если данное поле не заполнено, то формирование маршрутизации будет ориентироваться на выбранную группу в интерфейсе Логистики. | Нет |