Ответ после решения задачи оптимизации тура, содержащий маршруты, по которым движется каждое транспортное средство, пропущенные поставки и общую стоимость решения.
JSON-представление |
---|
{ "routes": [ { object ( |
Поля | |
---|---|
routes[] | Маршруты рассчитываются для каждого транспортного средства; i-й маршрут соответствует i-му транспортному средству в модели. |
requestLabel | Копия |
skippedShipments[] | Список всех отправлений пропущен. |
validationErrors[] | Список всех ошибок валидации, которые нам удалось обнаружить самостоятельно. См. объяснение «НЕСКОЛЬКО ОШИБОК» для сообщения |
metrics | Показатели продолжительности, расстояния и использования для этого решения. |
Оптимизетурсвалидатионеррор
Описывает ошибку или предупреждение, возникающее при проверке OptimizeToursRequest
.
JSON-представление |
---|
{
"code": integer,
"displayName": string,
"fields": [
{
object ( |
Поля | |
---|---|
code | Ошибка проверки определяется парой ( Поля, следующие за этим разделом, предоставляют дополнительную информацию об ошибке. НЕСКОЛЬКО ОШИБОК : при наличии нескольких ошибок процесс проверки пытается вывести несколько из них. Как и компилятор, это несовершенный процесс. Некоторые ошибки проверки будут «фатальными», то есть они останавливают весь процесс проверки. Это относится, среди прочего, к ошибкам СТАБИЛЬНОСТЬ : |
displayName | Отображаемое имя ошибки. |
fields[] | Контекст ошибки может включать 0, 1 (в большинстве случаев) или более полей. Например, обращение к транспортному средству № 4 и первому забору груза № 2 можно выполнить следующим образом:
Однако обратите внимание, что количество |
errorMessage | Читаемая человеком строка, описывающая ошибку. Между СТАБИЛЬНОСТЬ : Нестабильно: сообщение об ошибке, связанное с данным |
offendingValues | Может содержать значения полей. Это не всегда доступно. На него совершенно не следует полагаться и использовать его только для ручной отладки модели. |
ПолеReference
Указывает контекст для ошибки проверки. FieldReference
всегда ссылается на данное поле в этом файле и имеет одну и ту же иерархическую структуру. Например, мы можем указать элемент №2 в startTimeWindows
транспортного средства №5, используя:
name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }
Однако мы опускаем объекты верхнего уровня, такие как OptimizeToursRequest
или ShipmentModel
чтобы не перегружать сообщение.
JSON-представление |
---|
{ "name": string, "subField": { object ( |
Поля | |
---|---|
name | Имя поля, например, «транспортные средства». |
subField | Рекурсивно вложенное подполе, если необходимо. |
Поле объединения | |
index | Индекс поля, если оно повторяется. |
key | Ключ, если поле является картой. |
Метрики
Общие показатели, агрегированные по всем маршрутам.
JSON-представление |
---|
{
"aggregatedRouteMetrics": {
object ( |
Поля | |
---|---|
aggregatedRouteMetrics | Агрегировано по маршрутам. Каждая метрика представляет собой сумму (или максимум для загрузок) по всем одноименным полям |
skippedMandatoryShipmentCount | Количество пропущенных обязательных отправок. |
usedVehicleCount | Количество используемых автомобилей. Примечание. Если маршрут транспортного средства пуст и |
earliestVehicleStartTime | Самое раннее время начала подержанного автомобиля, вычисляемое как минимальное для всех подержанных автомобилей Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
latestVehicleEndTime | Самое позднее время окончания для подержанного автомобиля, вычисляемое как максимальное для всех подержанных автомобилей Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
costs | Стоимость решения с разбивкой по полям запроса, связанным со стоимостью. Ключи — это пути прототипов относительно входных данных OptimizeToursRequest, например «model.shipments.pickups.cost», а значения — это общая стоимость, сгенерированная соответствующим полем стоимости, агрегированная по всему решению. Другими словами, затраты["model.shipments.pickups.cost"] — это сумма всех затрат на самовывоз в рамках решения. Здесь подробно представлены все затраты, определенные в модели, за исключением затрат, связанных с TransitionAttributes, которые по состоянию на 2022/01 г. сообщаются только в агрегированном виде. |
totalCost | Полная стоимость решения. Сумма всех значений на карте затрат. |