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 в разделе "МНОЖЕСТВЕННЫЕ ОШИБКИ". Вместо ошибок здесь будут включены предупреждения, если solvingMode имеет значение DEFAULT_SOLVE .

processedRequest

object ( OptimizeToursRequest )

В некоторых случаях мы изменяем входящий запрос перед его обработкой, например, добавляем затраты. Если solvingMode == 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 ), которая всегда присутствует.

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

MULTIPLE ERRORS : When there are multiple errors, the validation process tries to output several of them. Much like a compiler, this is an imperfect process. Some validation errors will be "fatal", meaning that they stop the entire validation process. This is the case for displayName="UNSPECIFIED" errors, among others. Some errors may cause the validation process to skip other errors.

СТАБИЛЬНОСТЬ : 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 существует однозначное соответствие (когда код != "UNSPECIFIED").

СТАБИЛЬНОСТЬ : Нестабильно: сообщение об ошибке, связанное с данным 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)
  },

  // The following is a list of mutually exclusive fields. At most one of the
  // fields will be set in a response:
  "index": integer,
  "key": string
  // End of mutually exclusive fields.
}
Поля
name

string

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

subField

object ( FieldReference )

При необходимости — рекурсивно вложенное подполе.

Ниже приведён список взаимоисключающих полей. В ответе будет установлено не более одного из этих полей:
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)

Cost of the solution, broken down by cost-related request fields. The keys are proto paths, relative to the input OptimizeToursRequest, eg "model.shipments.pickups.cost", and the values are the total cost generated by the corresponding cost field, aggregated over the whole solution. In other words, costs["model.shipments.pickups.cost"] is the sum of all pickup costs over the solution. All costs defined in the model are reported in detail here with the exception of costs related to TransitionAttributes that are only reported in an aggregated way as of 2022/01.

totalCost

number

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