- JSON-представление
- Отгрузка
- ПосетитеЗапрос
- ШиротаДлительность
- Путевая точка
- Расположение
- ВремяОкно
- Транспортное средство
- Режим путешествия
- Модификаторы маршрута
- Политика разгрузки
- Ограничение нагрузки
- Интервал
- Ограничение продолжительности
- Предел расстояния
- BreakRule
- Запрос на перерыв
- Частотное ограничение
- ПродолжительностьDistanceMatrix
- Ряд
- Атрибуты перехода
- Тип отгрузкиНесовместимость
- Режим несовместимости
- Тип отгрузкиТребование
- Режим Требования
- Правило приоритета
Модель перевозки содержит набор перевозок, которые необходимо выполнить набором транспортных средств, минимизируя при этом общую стоимость, которая представляет собой сумму:
- стоимость маршрутизации транспортных средств (сумма затрат за общее время, стоимость за время в пути и фиксированная стоимость для всех транспортных средств).
- штрафы за невыполненную отгрузку.
- стоимость глобальной продолжительности поставок
JSON-представление |
---|
{ "shipments": [ { object ( |
Поля | |
---|---|
shipments[] | Набор перевозок, которые необходимо выполнить в модели. |
vehicles[] | Набор транспортных средств, которые можно использовать для совершения посещений. |
global Start Time | Глобальное время начала и окончания модели: никакое время вне этого диапазона не может считаться действительным. Временной интервал модели должен быть меньше года, т. е. значения При использовании полей Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
global End Time | Если значение не установлено, по умолчанию используется 00:00:00 UTC, 1 января 1971 года (т. е. секунды: 31536000, nanos: 0). Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
global Duration Cost Per Hour | «Глобальная продолжительность» общего плана — это разница между самым ранним эффективным временем начала и самым поздним эффективным временем окончания для всех транспортных средств. Пользователи могут присвоить этому количеству стоимость часа, чтобы попытаться оптимизировать его, например, для скорейшего завершения задания. Эта стоимость должна быть в той же единице измерения, что и |
duration Distance Matrices[] | Задает матрицы длительности и расстояния, используемые в модели. Если это поле пусто, вместо него будут использоваться Карты Google или геодезические расстояния, в зависимости от значения поля Примеры использования:
|
duration Distance Matrix Src Tags[] | Теги, определяющие источники матриц длительности и расстояния; Теги соответствуют |
duration Distance Matrix Dst Tags[] | Теги, определяющие назначения матриц длительности и расстояния; Теги соответствуют |
transition Attributes[] | В модель добавлены атрибуты перехода. |
shipment Type Incompatibilities[] | Наборы несовместимых типов_доставки (см. « |
shipment Type Requirements[] | Наборы требований |
precedence Rules[] | Набор правил приоритета, которые должны соблюдаться в модели. |
max Active Vehicles | Ограничивает максимальное количество активных транспортных средств. Транспортное средство считается активным, если по его маршруту совершается хотя бы одна перевозка. Это можно использовать для ограничения количества маршрутов в случае, когда водителей меньше, чем транспортных средств, и парк транспортных средств неоднороден. Затем оптимизация выберет лучший подмножество транспортных средств для использования. Должен быть строго положительным. |
Отгрузка
Отгрузка одного товара от одного его получения до одной из доставок. Чтобы отгрузка считалась выполненной, уникальное транспортное средство должно посетить один из пунктов выдачи (и соответственно уменьшить свои запасные мощности), а затем посетить один из пунктов доставки позже (и, следовательно, соответствующим образом повторно увеличить свои запасные мощности).
JSON-представление |
---|
{ "displayName": string, "pickups": [ { object ( |
Поля | |
---|---|
display Name | Определяемое пользователем отображаемое имя отправления. Он может иметь длину до 63 символов и может использовать символы UTF-8. |
pickups[] | Набор вариантов получения, связанных с отправкой. Если не указано иное, транспортному средству необходимо посетить только место, соответствующее доставке. |
deliveries[] | Набор альтернатив доставки, связанных с отправкой. Если не указано иное, транспортному средству необходимо посетить только место, соответствующее пикапу. |
load Demands | Требования к загрузке груза (например, вес, объем, количество поддонов и т. д.). Ключами в карте должны быть идентификаторы, описывающие тип соответствующей нагрузки, в идеале также включающие единицы измерения. Например: «вес_кг», «объем_галлонов», «поддон_количество» и т. д. Если данный ключ не отображается на карте, соответствующая нагрузка считается нулевой. |
allowed Vehicle Indices[] | Набор транспортных средств, которые могут выполнить данную перевозку. Если пусто, все транспортные средства могут это сделать. Транспортные средства задаются по их индексу в списке |
costs Per Vehicle[] | Указывает затраты, возникающие при доставке груза каждым транспортным средством. Если указано, оно должно иметь ЛИБО:
Эти затраты должны быть в той же единице измерения, что и |
costs Per Vehicle Indices[] | Индексы транспортных средств, к которым применяются |
pickup To Delivery Absolute Detour Limit | Указывает максимальное абсолютное время обхода по сравнению с кратчайшим путем от получения до доставки. Если указано, оно должно быть неотрицательным, а отгрузка должна включать как минимум самовывоз и доставку. Например, пусть t будет кратчайшим временем, необходимым для перехода от выбранного варианта самовывоза непосредственно к выбранному варианту доставки. Затем установка
Если для одной и той же партии груза указаны как относительные, так и абсолютные ограничения, для каждой возможной пары получения/доставки используется более строгий предел. С 2017/10 года объезды поддерживаются только в том случае, если продолжительность поездки не зависит от транспортных средств. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
pickup To Delivery Time Limit | Указывает максимальную продолжительность от начала получения до начала доставки груза. Если указано, оно должно быть неотрицательным, а отгрузка должна включать как минимум самовывоз и доставку. Это не зависит ни от того, какие альтернативы выбраны для получения и доставки, ни от скорости автомобиля. Это можно указать вместе с ограничениями на максимальный обход: решение будет учитывать обе спецификации. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
shipment Type | Непустая строка, определяющая «тип» этой отправки. Эту функцию можно использовать для определения несовместимостей или требований между Отличается от |
label | Указывает этикетку для этой отправки. Эта метка указывается в ответе в |
ignore | Если это правда, пропустите эту отправку, но не применяйте Игнорирование отгрузки приводит к ошибке проверки, если в модели есть какие-либо Игнорирование отгрузки, выполняемой в |
penalty Cost | Если отгрузка не завершена, данный штраф добавляется к общей стоимости маршрутов. Отгрузка считается завершенной, если выбран один из вариантов ее получения и доставки. Стоимость может быть выражена в тех же единицах измерения, которые используются для всех других полей модели, связанных со стоимостью, и должна быть положительной. ВАЖНО : Если этот штраф не указан, он считается бесконечным, т.е. отгрузка должна быть завершена. |
pickup To Delivery Relative Detour Limit | Указывает максимальное относительное время обхода по сравнению с кратчайшим путем от получения до доставки. Если указано, оно должно быть неотрицательным, а отгрузка должна включать как минимум самовывоз и доставку. Например, пусть t будет кратчайшим временем, необходимым для перехода от выбранного варианта самовывоза непосредственно к выбранному варианту доставки. Затем установка
Если для одной и той же партии груза указаны как относительные, так и абсолютные ограничения, для каждой возможной пары получения/доставки используется более строгий предел. С 2017/10 года объезды поддерживаются только в том случае, если продолжительность поездки не зависит от транспортных средств. |
ПосетитеЗапрос
Запрос на посещение, которое может быть совершено транспортным средством: у него есть географическое местоположение (или два, см. ниже), время открытия и закрытия, представленное временными окнами, и время продолжительности обслуживания (время, проведенное транспортным средством после прибытия забрать или сдать товар).
JSON-представление |
---|
{ "arrivalLocation": { object ( |
Поля | |
---|---|
arrival Location | Географическое местоположение, куда прибывает транспортное средство при выполнении этого |
arrival Waypoint | Маршрутная точка, куда прибывает транспортное средство при выполнении этого |
departure Location | Географическое местоположение, куда отправляется транспортное средство после выполнения этого |
departure Waypoint | Маршрутная точка, из которой отправляется транспортное средство после выполнения этого |
tags[] | Указывает теги, прикрепленные к запросу на посещение. Пустые или повторяющиеся строки не допускаются. |
time Windows[] | Временные окна, ограничивающие время прибытия на визит. Обратите внимание, что транспортное средство может выехать за пределы временного окна прибытия, т. е. время прибытия + продолжительность не обязательно должны находиться внутри временного окна. Это может привести к увеличению времени ожидания, если транспортное средство прибудет раньше Отсутствие Временные окна не должны пересекаться, т. е. ни одно временное окно не должно перекрываться или примыкать к другому, и они должны располагаться в возрастающем порядке. |
duration | Продолжительность посещения, т.е. время, проведенное транспортным средством между прибытием и отъездом (должно быть добавлено к возможному времени ожидания; см. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
cost | Стоимость обслуживания этого запроса на посещение по маршруту транспортного средства. Это можно использовать для оплаты различных расходов за каждый альтернативный вариант получения или доставки груза. Эта стоимость должна быть в той же единице измерения, что и |
load Demands | Загрузить требования этого запроса на посещение. Это похоже на поле |
visit Types[] | Указывает виды посещения. Это можно использовать для выделения дополнительного времени, необходимого транспортному средству для завершения этого визита (см. Тип может появиться только один раз. |
label | Указывает метку для этого |
ШиротаДлительность
Объект, представляющий пару широты и долготы. Это выражается в виде пары двойных чисел, обозначающих градусы широты и градусы долготы. Если не указано иное, этот объект должен соответствовать стандарту WGS84 . Значения должны находиться в пределах нормализованных диапазонов.
JSON-представление |
---|
{ "latitude": number, "longitude": number } |
Поля | |
---|---|
latitude | Широта в градусах. Оно должно находиться в диапазоне [-90,0, +90,0]. |
longitude | Долгота в градусах. Оно должно находиться в диапазоне [-180,0, +180,0]. |
Путевая точка
Инкапсулирует путевую точку. Путевые точки отмечают места прибытия и отправления VisitRequests, а также начальные и конечные местоположения транспортных средств.
JSON-представление |
---|
{ "sideOfRoad": boolean, // Union field |
Поля | |
---|---|
side Of Road | Необязательный. Указывает, что местоположение этой путевой точки предназначено для того, чтобы транспортное средство остановилось на определенной стороне дороги. Если вы установите это значение, маршрут будет проходить через местоположение, так что транспортное средство сможет остановиться на той стороне дороги, к которой местоположение смещено от центра дороги. Эта опция не работает для режима передвижения «ХОДЬБА». |
Поле объединения location_type . Различные способы представления местоположения. location_type может быть только одним из следующих: | |
location | Точка, указанная с использованием географических координат, включая необязательный заголовок. |
place Id | Идентификатор места POI, связанный с путевой точкой. |
Расположение
Инкапсулирует местоположение (географическую точку и необязательный заголовок).
JSON-представление |
---|
{
"latLng": {
object ( |
Поля | |
---|---|
lat Lng | Географические координаты путевой точки. |
heading | Курс компаса связан с направлением потока транспорта. Это значение используется для указания стороны дороги, которая будет использоваться для посадки и высадки. Значения курса могут быть от 0 до 360, где 0 указывает направление на север, 90 указывает направление на восток и т. д. |
ВремяОкно
Временные окна ограничивают время события, например время прибытия на посещение или время начала и окончания движения транспортного средства.
Жесткие границы временного окна, startTime
и endTime
, определяют самое раннее и самое позднее время события, например, startTime <= event_time <= endTime
. Нижняя граница окна мягкого времени, softStartTime
, выражает предпочтение тому, чтобы событие произошло в softStartTime
или после него, за счет затрат, пропорциональных тому, как долго до softStartTime произойдет событие. Верхняя граница окна мягкого времени, softEndTime
, выражает предпочтение тому, чтобы событие произошло в softEndTime
или раньше, за счет затрат, пропорциональных тому, как долго после softEndTime
происходит событие. startTime
, endTime
, softStartTime
и softEndTime
должны находиться в пределах глобальных ограничений по времени (см. ShipmentModel.global_start_time
и ShipmentModel.global_end_time
) и должны учитывать:
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
JSON-представление |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
Поля | |
---|---|
start Time | Время начала трудного временного окна. Если не указано, будет установлено значение Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
end Time | Время окончания трудного временного окна. Если не указано, будет установлено значение Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
soft Start Time | Время плавного запуска временного окна. Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
soft End Time | Время мягкого окончания временного окна. Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
cost Per Hour Before Soft Start Time | Стоимость часа, добавленная к другим затратам в модели, если событие происходит до softStartTime, рассчитывается как:
Эта стоимость должна быть положительной, и это поле можно установить только в том случае, если установлено softStartTime. |
cost Per Hour After Soft End Time | Стоимость часа, добавленная к другим затратам в модели, если событие происходит после
Эта стоимость должна быть положительной, и это поле можно установить только в том случае, если установлено |
Транспортное средство
Моделирует автомобиль в задаче по доставке. При решении проблемы с отправкой будет построен маршрут для этого транспортного средства, начинающийся с startLocation
и заканчивающийся endLocation
. Маршрут — это последовательность посещений (см. ShipmentRoute
).
JSON-представление |
---|
{ "displayName": string, "travelMode": enum ( |
Поля | |
---|---|
display Name | Определяемое пользователем отображаемое имя транспортного средства. Он может иметь длину до 63 символов и может использовать символы UTF-8. |
travel Mode | Режим движения, влияющий на дороги, по которым движется транспортное средство, и его скорость. См. также |
route Modifiers | Набор условий, которые необходимо выполнить, которые влияют на способ расчета маршрутов для данного транспортного средства. |
start Location | Географическое местоположение, где транспортное средство отправляется до получения груза. Если не указано иное, автомобиль заводится при первом получении. Если модель доставки имеет матрицы длительности и расстояния, |
start Waypoint | Путевая точка, представляющая географическое место, где транспортное средство начинает движение перед получением груза. Если не указаны ни |
end Location | Географическое местоположение, в котором заканчивается транспортное средство после завершения последнего |
end Waypoint | Путевая точка, представляющая географическое местоположение, в котором заканчивается транспортное средство после завершения последнего |
start Tags[] | Указывает теги, прикрепленные к началу маршрута транспортного средства. Пустые или повторяющиеся строки не допускаются. |
end Tags[] | Указывает теги, прикрепленные к концу маршрута транспортного средства. Пустые или повторяющиеся строки не допускаются. |
start Time Windows[] | Временные окна, в течение которых транспортное средство может покинуть исходное место. Они должны находиться в пределах глобальных ограничений по времени (см. поля Временные окна, принадлежащие одному и тому же повторяющемуся полю, должны быть непересекающимися, т.е. ни одно временное окно не может перекрываться или соседствовать с другим, и они должны располагаться в хронологическом порядке. |
end Time Windows[] | Временные окна, в течение которых транспортное средство может прибыть в конечное место. Они должны находиться в пределах глобальных ограничений по времени (см. поля Временные окна, принадлежащие одному и тому же повторяющемуся полю, должны быть непересекающимися, т.е. ни одно временное окно не может перекрываться или соседствовать с другим, и они должны располагаться в хронологическом порядке. |
unloading Policy | Политика разгрузки применяется к транспортному средству. |
load Limits | Вместимость транспортного средства (например, вес, объем, количество поддонов). Ключами в карте являются идентификаторы типа груза, соответствующие ключам поля |
cost Per Hour | Стоимость транспортного средства: все затраты суммируются и должны быть в той же единице измерения, что и Стоимость часа проезда автомобиля. Эта стоимость применяется к общему времени, затраченному на маршрут, и включает время в пути, время ожидания и время посещения. Использование |
cost Per Traveled Hour | Стоимость за час проезда транспортного средства по маршруту. Эта стоимость применяется только ко времени в пути, затраченному на маршрут (т. е. указанному в |
cost Per Kilometer | Стоимость за километр пути автомобиля. Эта стоимость применяется к расстоянию, указанному в |
fixed Cost | Фиксированная стоимость применяется, если это транспортное средство используется для обработки груза. |
used If Route Is Empty | Это поле применимо только к транспортным средствам, по маршруту которых не обслуживаются грузы. Он указывает, следует ли в данном случае считать транспортное средство бывшим в употреблении или нет. Если это правда, транспортное средство движется от начала до конечного местоположения, даже если оно не обслуживает никаких грузов, а затраты времени и расстояния, возникающие в результате его начала --> конечного путешествия, принимаются во внимание. В противном случае он не перемещается от своего начального к конечному местоположению, и для этого транспортного средства не запланировано ни |
route Duration Limit | Ограничение применяется к общей продолжительности маршрута транспортного средства. В данном |
travel Duration Limit | Ограничение применяется к продолжительности проезда по маршруту транспортного средства. В данном |
route Distance Limit | Ограничение применяется к общему расстоянию маршрута транспортного средства. В данном |
extra Visit Duration For Visit Type | Определяет сопоставление строк visitTypes с длительностью. Продолжительность — это время в дополнение к Если запрос на посещение имеет несколько типов, продолжительность будет добавлена для каждого типа на карте. |
break Rule | Описывает график перерывов, который должен соблюдаться на этом автомобиле. Если он пуст, для этого автомобиля не будет запланировано никаких перерывов. |
label | Указывает метку для этого автомобиля. Эта метка указывается в ответе как |
ignore | Если значение true, Если отгрузка выполняется игнорируемым транспортным средством в Если отгрузка выполняется игнорируемым транспортным средством в |
travel Duration Multiple | Указывает мультипликативный коэффициент, который можно использовать для увеличения или уменьшения времени в пути этого транспортного средства. Например, установка значения 2.0 означает, что этот автомобиль медленнее и его время в пути вдвое больше, чем у стандартных транспортных средств. Этот коэффициент не влияет на продолжительность посещения. Это влияет на стоимость, если указаны ВНИМАНИЕ: Время в пути будет округлено до ближайшей секунды после применения этого коэффициента, но до выполнения каких-либо числовых операций, поэтому небольшое значение кратного может привести к потере точности. См. также |
Режим путешествия
Режимы движения, которые могут использоваться транспортными средствами.
Это должно быть подмножеством режимов передвижения API-интерфейса «Предпочитаемые маршруты платформы Google Карт», см. https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode .
Перечисления | |
---|---|
TRAVEL_MODE_UNSPECIFIED | Неопределенный режим движения, эквивалентный DRIVING . |
DRIVING | Режим движения, соответствующий направлениям движения (автомобиль, ...). |
WALKING | Режим движения, соответствующий пешеходным направлениям. |
Модификаторы маршрута
Инкапсулирует набор дополнительных условий, которые необходимо выполнить при расчете маршрутов транспортных средств. Это похоже на RouteModifiers
в предпочтительном API маршрутов платформы Google Maps; см.: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers .
JSON-представление |
---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
Поля | |
---|---|
avoid Tolls | Указывает, следует ли избегать платных дорог, где это возможно. Предпочтение будет отдано маршрутам, не содержащим платных дорог. Применяется только к моторизованным режимам движения. |
avoid Highways | Указывает, следует ли избегать шоссе, где это возможно. Предпочтение будет отдано маршрутам, не содержащим автомобильных дорог. Применяется только к моторизованным режимам движения. |
avoid Ferries | Указывает, следует ли избегать паромов, где это возможно. Предпочтение будет отдано маршрутам, не предполагающим переезды на паромах. Применяется только к моторизованным режимам движения. |
avoid Indoor | Необязательный. Указывает, следует ли избегать навигации в помещении, где это возможно. Предпочтение будет отдано маршрутам, не содержащим внутренней навигации. Применимо только к режиму движения |
Политика разгрузки
Правила разгрузки транспортного средства. Применяется только к отправлениям, имеющим как самовывоз, так и доставку.
Другие перевозки могут осуществляться в любом месте маршрута независимо от unloadingPolicy
.
Перечисления | |
---|---|
UNLOADING_POLICY_UNSPECIFIED | Неопределенная политика разгрузки; поставки должны происходить сразу после их соответствующего получения. |
LAST_IN_FIRST_OUT | Доставка должна осуществляться в порядке, обратном получению. |
FIRST_IN_FIRST_OUT | Доставка должна осуществляться в том же порядке, что и самовывоз. |
Ограничение нагрузки
Определяет предельную нагрузку, применимую к транспортному средству, например: «Этот грузовик может перевозить не более 3500 кг». См. loadLimits
.
JSON-представление |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
Поля | |
---|---|
soft Max Load | Мягкое ограничение нагрузки. См. |
cost Per Unit Above Soft Max | Если нагрузка когда-либо превышает |
start Load Interval | Допустимый интервал загрузки автомобиля в начале маршрута. |
end Load Interval | Допустимый интервал загрузки автомобиля в конце маршрута. |
max Load | Максимально допустимый объем нагрузки. |
Интервал
Интервал допустимых объемов нагрузки.
JSON-представление |
---|
{ "min": string, "max": string } |
Поля | |
---|---|
min | Минимально допустимая нагрузка. Должно быть ≥ 0. Если указаны оба значения, |
max | Максимально допустимая нагрузка. Должно быть ≥ 0. Если не указано, максимальная нагрузка не ограничивается этим сообщением. Если они оба указаны, |
Ограничение продолжительности
Лимит, определяющий максимальную продолжительность маршрута транспортного средства. Он может быть как твердым, так и мягким.
При определении поля мягкого ограничения и порог мягкого максимума, и связанная с ним стоимость должны быть определены вместе.
JSON-представление |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
Поля | |
---|---|
max Duration | Жесткий предел, ограничивающий длительность не более maxDuration. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
soft Max Duration | Мягкое ограничение не устанавливает максимальную продолжительность, но при его нарушении маршрут влечет за собой затраты. Эта стоимость суммируется с другими затратами, определенными в модели, в той же единице измерения. Если определено, Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
quadratic Soft Max Duration | Мягкое ограничение не обеспечивает соблюдения максимального ограничения продолжительности, но при его нарушении маршрут влечет за собой затраты, квадратичные по продолжительности. Эта стоимость суммируется с другими затратами, определенными в модели, в той же единице измерения. Если определено, Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
cost Per Hour After Soft Max | Стоимость часа, понесенная в случае нарушения порога
Стоимость должна быть неотрицательной. |
cost Per Square Hour After Quadratic Soft Max | Стоимость квадратного часа, возникающая в случае нарушения Дополнительная стоимость равна 0, если продолжительность ниже порогового значения, в противном случае стоимость зависит от продолжительности следующим образом:
Стоимость должна быть неотрицательной. |
Предел расстояния
Предел, определяющий максимальное расстояние, которое можно преодолеть. Он может быть как твердым, так и мягким.
Если определен мягкий предел, как softMaxMeters
, так и costPerKilometerAboveSoftMax
должны быть определены и быть неотрицательными.
JSON-представление |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
Поля | |
---|---|
max Meters | Жесткий предел, ограничивающий расстояние не более maxMeters. Предел должен быть неотрицательным. |
soft Max Meters | Мягкое ограничение не обеспечивает соблюдение ограничения максимального расстояния, но его нарушение приводит к затратам, которые суммируются с другими затратами, определенными в модели, в той же единице измерения. Если определено, softMaxMeters должно быть меньше maxMeters и должно быть неотрицательным. |
cost Per Kilometer Below Soft Max | Стоимость понесенного километража увеличивается до
Эта стоимость не поддерживается в |
cost Per Kilometer Above Soft Max | Стоимость за километр, если расстояние превышает предел
Стоимость должна быть неотрицательной. |
BreakRule
Правила создания временных перерывов для транспортного средства (например, перерывы на обед). Перерыв — это непрерывный период времени, в течение которого транспортное средство простаивает на своем текущем месте и не может совершить ни одного визита. Обрыв может произойти:
- во время путешествия между двумя посещениями (включая время непосредственно перед или сразу после посещения, но не в середине посещения), и в этом случае продлевается соответствующее транзитное время между посещениями,
- или перед запуском автомобиля (автомобиль может не завестись в середине перерыва), в этом случае это не влияет на время запуска автомобиля.
- или после окончания транспортного средства (то же самое, со временем окончания транспортного средства).
JSON-представление |
---|
{ "breakRequests": [ { object ( |
Поля | |
---|---|
break Requests[] | Последовательность перерывов. См. сообщение |
frequency Constraints[] | Могут применяться несколько |
Запрос на перерыв
Последовательность перерывов (т.е. их количество и порядок), применимых к каждому транспортному средству, должна быть известна заранее. Повторяющиеся BreakRequest
определяют эту последовательность в том порядке, в котором они должны происходить. Их временные окна ( earliestStartTime
/ latestStartTime
) могут перекрываться, но они должны быть совместимы с порядком (это отмечено).
JSON-представление |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
Поля | |
---|---|
earliest Start Time | Необходимый. Нижняя граница (включительно) на начало перерыва. Временная метка в формате RFC3339 UTC "Zulu" с наносекундным разрешением и до девяти дробных цифр. Примеры: |
latest Start Time | Необходимый. Верхняя граница (включительно) в начале перерыва. Временная метка в формате RFC3339 UTC "Zulu" с наносекундным разрешением и до девяти дробных цифр. Примеры: |
min Duration | Необходимый. Минимальная продолжительность перерыва. Должен быть положительным. Продолжительность за секунды с девятью дробными цифрами, заканчивая « |
Частотаконконструкция
Можно дополнительно ограничить частоту и продолжительность разрывов, указанных выше, принуждая минимальную частоту разрыва, например, «должен быть разрыв не менее 1 часа каждые 12 часов». Предполагая, что это можно интерпретировать как «в любое время скользящего времени 12 часов, должен быть как минимум один разрыв, по крайней мере, один час», этот пример будет переведен в следующую FrequencyConstraint
:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Время и продолжительность разрывов в решении будут уважать все такие ограничения, в дополнение к временным окнам и минимальной продолжительности, уже указанным в BreakRequest
.
FrequencyConstraint
может на практике применить к неконтролирующим перерывам. Например, в следующем графике приведен пример «1 ч каждые 12 часов»:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
Представление JSON |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
Поля | |
---|---|
min Break Duration | Необходимый. Минимальная продолжительность разрыва для этого ограничения. Неотрицательный. См. Описание Продолжительность за секунды с девятью дробными цифрами, заканчивая « |
max Inter Break Duration | Необходимый. Максимально разрешенный промежуток любого интервала времени в маршруте, который не включает, по крайней мере, частично разрыв Продолжительность за секунды с девятью дробными цифрами, заканчивая « |
DurationDistanceMatrix
Определяет матрицу продолжительности и расстояния от мест посещения и запуска автомобиля для посещения и местоположения автомобиля.
Представление JSON |
---|
{
"rows": [
{
object ( |
Поля | |
---|---|
rows[] | Указывает ряды матрицы продолжительности и расстояния. У него должно быть столько элементов, сколько и |
vehicle Start Tag | Определение тега, к которому применяются транспортные средства. Если это пусто, это относится ко всем транспортным средствам, и там может быть только одна матрица. Каждый старт автомобиля должен соответствовать ровской матрице, то есть, то есть одно из их поля Все матрицы должны иметь другой |
Ряд
Указывает ряд матрицы продолжительности и расстояния.
Представление JSON |
---|
{ "durations": [ string ], "meters": [ number ] } |
Поля | |
---|---|
durations[] | Значения продолжительности для данной строки. У него должно быть столько элементов, сколько и Продолжительность за секунды с девятью дробными цифрами, заканчивая « |
meters[] | Значения расстояния для данной строки. Если никакие затраты или ограничения относятся к расстояниям в модели, это можно оставить пустым; В противном случае он должен иметь столько элементов, сколько и |
Transitionattributes
Определяет атрибуты переходов между двумя последовательными посещениями по маршруту. Несколько TransitionAttributes
могут применяться к одному и тому же переходу: в этом случае все дополнительные затраты увеличиваются, и применяется строгое ограничение или ограничение (после естественной »и« семантики).
Представление JSON |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
Поля | |
---|---|
src Tag | Теги, определяющие набор (SRC-> DST) переходов, к этим атрибутам применяется. Посещение источника или начало транспортного средства совпадает с тем, что его |
excluded Src Tag | Смотрите |
dst Tag | Посещение пункта назначения или конец транспортного средства совпадает с тем, что его |
excluded Dst Tag | Смотрите |
cost | Определяет стоимость выполнения этого перехода. Это в той же единице, что и все другие затраты в модели, и не должно быть отрицательным. Он применяется поверх всех других существующих затрат. |
cost Per Kilometer | Определяет стоимость за километр, применяемый на расстояние, пройденное при выполнении этого перехода. Это добавляется к любому транспортному средству. |
distance Limit | Определяет ограничение на расстояние, пройденное во время выполнения этого перехода. По состоянию на 2021/06 поддерживаются только мягкие пределы. |
delay | Указывает задержку, понесенную при выполнении этого перехода. Эта задержка всегда происходит после завершения посещения источника и перед началом посещения пункта назначения. Продолжительность за секунды с девятью дробными цифрами, заканчивая « |
Отгрузка
Указывает несовместимости между поставками в зависимости от их отгрузки. Появление несовместимых поставки на том же маршруте ограничено на основе режима несовместимости.
Представление JSON |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
Поля | |
---|---|
types[] | Список несовместимых типов. Две отправки, имеющие разные |
incompatibility Mode | Режим применяется к несовместимости. |
Несовместимость
Режимы, определяющие, как появление несовместимых поставки ограничено на одном и том же маршруте.
Перечисление | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED | Неуказанный режим несовместимости. Это значение никогда не должно использоваться. |
NOT_PERFORMED_BY_SAME_VEHICLE | В этом режиме две поставки с несовместимыми типами никогда не могут разделить один и тот же автомобиль. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | Для двух поставок с несовместимыми типами с помощью режима несовместимости
|
Отгрузка
Указывает требования между поставками на основе их отгрузки. Специфика требования определяется режимом требований.
Представление JSON |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
Поля | |
---|---|
required Shipment Type Alternatives[] | Список альтернативных типов отгрузки, необходимых для |
dependent Shipment Types[] | Все поставки с типом в области ПРИМЕЧАНИЕ. Цепочки требований, так что |
requirement Mode | Режим применяется к требованию. |
Требование
Режимы, определяющие внешний вид зависимых отгрузок на маршруте.
Перечисление | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED | Неуказанный режим требования. Это значение никогда не должно использоваться. |
PERFORMED_BY_SAME_VEHICLE | В этом режиме все «зависимые» поставки должны иметь то же автомобиль, что и по крайней мере одна из их «требуемых» поставки. |
IN_SAME_VEHICLE_AT_PICKUP_TIME | В режиме Таким образом, «зависимый» выписка должен иметь либо:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME | То же, что и раньше, за исключением того, что «зависимые» поставки должны иметь «обязательную» отправку на их транспортное средство во время их доставки . |
Предшествующий
Правило приоритета между двумя событиями (каждое событие - это пикап или доставка отгрузки): событие «Второе» должно начать, по крайней мере, offsetDuration
после начала «первого».
Несколько предыдущих лиц могут относиться к тем же (или связанным) событиям, например, «пикап B происходит после доставки« и »« пикап C происходит после получения B ».
Кроме того, предыдущие средства применяются только тогда, когда обе поставки выполняются и в противном случае игнорируются.
Представление JSON |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
Поля | |
---|---|
first Is Delivery | Указывает, является ли «первое» событие доставкой. |
second Is Delivery | Указывает, является ли событие «второе» доставкой. |
offset Duration | Смещение между «первым» и «вторым» событием. Это может быть отрицательным. Продолжительность за секунды с девятью дробными цифрами, заканчивая « |
first Index | Индекс отправки "первого" события. Это поле должно быть указано. |
second Index | Индекс отправки "второго" события. Это поле должно быть указано. |