OptimizeToursResponse

Es la respuesta después de resolver un problema de optimización de rutas que contiene las rutas que siguió cada vehículo, los envíos que se omitieron y el costo general de la solución.

Representación JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "processedRequest": {
    object (OptimizeToursRequest)
  },
  "metrics": {
    object (Metrics)
  }
}
Campos
routes[]

object (ShipmentRoute)

Son las rutas calculadas para cada vehículo. La ruta i-ésima corresponde al i-ésimo vehículo del modelo.

requestLabel

string

Copia del OptimizeToursRequest.label, si se especificó una etiqueta en la solicitud.

skippedShipments[]

object (SkippedShipment)

Es la lista de todos los envíos omitidos.

validationErrors[]

object (OptimizeToursValidationError)

Es la lista de todos los errores de validación que pudimos detectar de forma independiente. Consulta la explicación de "VARIOS ERRORES" para el mensaje OptimizeToursValidationError. En lugar de errores, se incluirán advertencias en el caso de que solvingMode sea DEFAULT_SOLVE.

processedRequest

object (OptimizeToursRequest)

En algunos casos, modificamos la solicitud entrante antes de resolverla, es decir, agregamos costos. Si solvingMode == TRANSFORM_AND_RETURN_REQUEST, aquí se devuelve la solicitud modificada.

Experimental: Consulta https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request para obtener más detalles.

metrics

object (Metrics)

Son las métricas de duración, distancia y uso de esta solución.

OptimizeToursValidationError

Describe un error o una advertencia que se produjo durante la validación de un OptimizeToursRequest.

Representación JSON
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
Campos
code

integer

Un error de validación se define por el par (code, displayName), que siempre está presente.

Los campos que siguen a esta sección proporcionan más contexto sobre el error.

MULTIPLE ERRORS: Cuando hay varios errores, el proceso de validación intenta generar varios de ellos. Al igual que un compilador, este es un proceso imperfecto. Algunos errores de validación serán "fatales", lo que significa que detendrán todo el proceso de validación. Este es el caso de los errores displayName="UNSPECIFIED", entre otros. Algunos errores pueden hacer que el proceso de validación omita otros errores.

ESTABILIDAD: code y displayName deben ser muy estables. Sin embargo, con el tiempo, pueden aparecer códigos y nombres visibles nuevos, lo que puede hacer que una solicitud determinada (no válida) genere un par diferente (code, displayName) porque el error nuevo ocultó el anterior. Por ejemplo, consulta "MULTIPLE ERRORS".

displayName

string

Es el nombre visible del error.

fields[]

object (FieldReference)

Un contexto de error puede involucrar 0, 1 (la mayoría de las veces) o más campos. Por ejemplo, puedes hacer referencia al vehículo núm. 4 y a la primera recolección del envío núm. 2 de la siguiente manera:

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

Sin embargo, ten en cuenta que la cardinalidad de fields no debe cambiar para un código de error determinado.

errorMessage

string

Es una cadena legible que describe el error. Hay una asignación 1:1 entre code y errorMessage (cuando code != "UNSPECIFIED").

ESTABILIDAD: No es estable: El mensaje de error asociado a un code determinado puede cambiar (con suerte, para aclararlo) con el tiempo. En su lugar, usa displayName y code.

offendingValues

string

Puede contener los valores de los campos. Esta opción no siempre está disponible. No debes confiar en él y solo debes usarlo para depurar el modelo de forma manual.

FieldReference

Especifica un contexto para el error de validación. Un FieldReference siempre hace referencia a un campo determinado en este archivo y sigue la misma estructura jerárquica. Por ejemplo, podemos especificar el elemento 2 de startTimeWindows del vehículo 5 de la siguiente manera:

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

Sin embargo, omitimos las entidades de nivel superior, como OptimizeToursRequest o ShipmentModel, para evitar que el mensaje se vea sobrecargado.

Representación 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.
}
Campos
name

string

Nombre del campo, p.ej., "vehicles".

subField

object (FieldReference)

Es un subcampo anidado de forma recursiva, si es necesario.

La siguiente es una lista de campos mutuamente excluyentes. Como máximo, se establecerá uno de los campos en una respuesta:
index

integer

Índice del campo si se repite.

key

string

Es la clave si el campo es un mapa.

Fin de los campos mutuamente excluyentes.

Métricas

Son las métricas generales, agregadas en todas las rutas.

Representación JSON
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
Campos
aggregatedRouteMetrics

object (AggregatedMetrics)

Se agregan en todas las rutas. Cada métrica es la suma (o el máximo, en el caso de las cargas) de todos los campos ShipmentRoute.metrics con el mismo nombre.

skippedMandatoryShipmentCount

integer

Es la cantidad de envíos obligatorios que se omitieron.

usedVehicleCount

integer

Es la cantidad de vehículos utilizados. Nota: Si una ruta de vehículo está vacía y Vehicle.used_if_route_is_empty es verdadero, se considera que el vehículo está en uso.

earliestVehicleStartTime

string (Timestamp format)

Es la hora de inicio más temprana para un vehículo usado, calculada como el mínimo de todos los vehículos usados de ShipmentRoute.vehicle_start_time.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

latestVehicleEndTime

string (Timestamp format)

Es la hora de finalización más reciente para un vehículo usado, calculada como el máximo de todos los vehículos usados de ShipmentRoute.vehicle_end_time.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

costs

map (key: string, value: number)

Costo de la solución, desglosado por campos de solicitud relacionados con el costo. Las claves son rutas de acceso a .proto, relativas al OptimizeToursRequest de entrada, p. ej., "model.shipments.pickups.cost", y los valores son el costo total generado por el campo de costo correspondiente, agregado en toda la solución. En otras palabras, costs["model.shipments.pickups.cost"] es la suma de todos los costos de retiro de la solución. Todos los costos definidos en el modelo se registran aquí en detalle, excepto los costos relacionados con TransitionAttributes, que solo se registran de forma agregada a partir del 1/1/2022.

totalCost

number

Costo total de la solución Es la suma de todos los valores del mapa de costos.