OptimizeToursResponse

Ответ после решения задачи оптимизации тура, содержащий маршруты следования каждого транспортного средства, пропущенные поставки и общую стоимость решения.

JSON-представление
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "processedRequest": {
    object (OptimizeToursRequest)
  },
  "metrics": {
    object (Metrics)
  }
}
Поля
routes[]

object ( ShipmentRoute )

Маршруты рассчитаны для каждого транспортного средства; i-й маршрут соответствует i-му транспортному средству в модели.

requestLabel

string

Копия OptimizeToursRequest.label , если метка была указана в запросе.

skippedShipments[]

object ( SkippedShipment )

Список всех пропущенных поставок.

validationErrors[]

object ( OptimizeToursValidationError )

Список всех ошибок валидации, которые нам удалось обнаружить независимо. См. пояснение к сообщению OptimizeToursValidationError в разделе «МНОЖЕСТВЕННЫЕ ОШИБКИ». Вместо ошибок будут выведены предупреждения, если solvingModeDEFAULT_SOLVE .

processedRequest

object ( OptimizeToursRequest )

В некоторых случаях мы изменяем входящий запрос перед его решением, то есть добавляем стоимость. Если solvedMode == TRANSFORM_AND_RETURN_REQUEST, изменённый запрос возвращается сюда.

Экспериментальный вариант: более подробную информацию см. по адресу https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request .

metrics

object ( Metrics )

Показатели продолжительности, расстояния и использования для этого решения.

OptimizeToursValidationError

Описывает ошибку или предупреждение, возникшее при проверке OptimizeToursRequest .

JSON-представление
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
Поля
code

integer

Ошибка проверки определяется парой ( code , displayName ), которая всегда присутствует.

Поля, следующие за этим разделом, предоставляют более подробную информацию об ошибке.

МНОЖЕСТВЕННЫЕ ОШИБКИ : При наличии нескольких ошибок процесс валидации пытается вывести несколько из них. Подобно компилятору, это несовершенный процесс. Некоторые ошибки валидации являются «фатальными», то есть останавливают весь процесс валидации. Это касается, в частности, ошибок displayName="UNSPECIFIED" . Некоторые ошибки могут привести к тому, что процесс валидации пропустит другие ошибки.

СТАБИЛЬНОСТЬ : значения code и displayName должны быть очень стабильными. Однако со временем могут появляться новые значения code и displayname, что может привести к тому, что заданный (недопустимый) запрос вернет другую пару ( code , displayName ), поскольку новая ошибка скроет старую. Например, см. раздел «МНОЖЕСТВЕННЫЕ ОШИБКИ».

displayName

string

Отображаемое имя ошибки.

fields[]

object ( FieldReference )

Контекст ошибки может включать 0, 1 (чаще всего) или более полей. Например, ссылку на транспортное средство №4 и первый забор груза №2 можно реализовать следующим образом:

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 subField {name: "pickups" index: 0} }

Однако следует отметить, что количество fields не должно меняться для данного кода ошибки.

errorMessage

string

Строка, описывающая ошибку, понятная человеку. Между code и errorMessage существует соответствие 1:1 (когда код != "НЕ УКАЗАНО").

СТАБИЛЬНОСТЬ : Нестабильно: сообщение об ошибке, связанное с данным code может со временем измениться (надеюсь, чтобы прояснить ситуацию). Вместо этого ориентируйтесь на displayName и code .

offendingValues

string

Может содержать значение(я) поля(ей). Эта информация доступна не всегда. Ни в коем случае не следует полагаться на неё и использовать только для ручной отладки модели.

FieldReference

Указывает контекст ошибки проверки. FieldReference всегда ссылается на заданное поле в этом файле и следует одной и той же иерархической структуре. Например, мы можем указать элемент №2 startTimeWindows транспортного средства №5, используя:

name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }

Однако мы опускаем сущности верхнего уровня, такие как OptimizeToursRequest или ShipmentModel чтобы не загромождать сообщение.

JSON-представление
{
  "name": string,
  "subField": {
    object (FieldReference)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
Поля
name

string

Название поля, например, «транспортные средства».

subField

object ( FieldReference )

Рекурсивно вложенное подполе, если необходимо.

Поле объединения index_or_key .

index_or_key может быть только одним из следующих:

index

integer

Индекс поля, если повторяется.

key

string

Ключ, если поле представляет собой карту.

Метрики

Общие показатели, агрегированные по всем маршрутам.

JSON-представление
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
Поля
aggregatedRouteMetrics

object ( AggregatedMetrics )

Агрегируется по маршрутам. Каждая метрика представляет собой сумму (или максимальное значение для грузов) всех полей ShipmentRoute.metrics с одинаковым именем.

skippedMandatoryShipmentCount

integer

Количество пропущенных обязательных поставок.

usedVehicleCount

integer

Количество использованных транспортных средств. Примечание: если маршрут транспортного средства пуст и Vehicle.used_if_route_is_empty имеет значение true, транспортное средство считается использованным.

earliestVehicleStartTime

string ( Timestamp format)

Самое раннее время начала движения подержанного транспортного средства, рассчитанное как минимум по всем подержанным транспортным средствам ShipmentRoute.vehicle_start_time .

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

latestVehicleEndTime

string ( Timestamp format)

Самое позднее время окончания для подержанного транспортного средства, рассчитанное как максимальное значение для всех подержанных транспортных средств ShipmentRoute.vehicle_end_time .

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

costs

map (key: string, value: number)

Стоимость решения, разбитая по полям запроса, связанным со стоимостью. Ключи — это пути-прототипы относительно входного запроса OptimizeToursRequest, например, "model.shipments.pickups.cost", а значения — общая стоимость, сгенерированная соответствующим полем стоимости, агрегированная по всему решению. Другими словами, costs["model.shipments.pickups.cost"] — это сумма всех затрат на самовывоз в рамках решения. Здесь подробно представлены все затраты, определенные в модели, за исключением затрат, связанных с TransitionAttributes, которые с января 2022 года отображаются только в агрегированном виде.

totalCost

number

Общая стоимость решения. Сумма всех значений на карте затрат.