SkippedShipment
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Especifica los detalles de los envíos sin realizar en una solución. Para casos triviales o si podemos identificar la causa de la omisión, informamos el motivo aquí.
Representación JSON |
{
"index": integer,
"label": string,
"reasons": [
{
object (Reason )
}
]
} |
Campos |
index |
integer
El índice corresponde al índice del envío en el ShipmentModel de origen.
|
label |
string
Copia del Shipment.label correspondiente, si se especifica en Shipment .
|
reasons[] |
object (Reason )
Una lista de motivos que explican por qué se omitió el envío. Consulta el comentario anterior a Reason . Si no comprendemos por qué se omitió un envío, no se establecerán los motivos.
|
Motivo
Si podemos explicar por qué se omitió el envío, los motivos se indicarán aquí. Si el motivo no es el mismo para todos los vehículos, reason
tendrá más de 1 elemento. Un envío omitido no puede tener motivos duplicados, es decir, en los que todos los campos sean iguales excepto para exampleVehicleIndex
. Ejemplo:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
exampleVehicleIndex: 1
exampleExceededCapacityType: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
exampleVehicleIndex: 3
exampleExceededCapacityType: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
exampleVehicleIndex: 1
}
El envío omitido no es compatible con todos los vehículos. Los motivos pueden ser diferentes para todos los vehículos, pero se excedió al menos la capacidad de "Manzanas" de un vehículo (incluido el vehículo 1), se excedió al menos la capacidad de "Peras" de un vehículo (incluido el vehículo 3) y se excedería el límite de distancia de al menos un vehículo (incluido el vehículo 1).
Representación JSON |
{
"code": enum (Code ),
"exampleExceededCapacityType": string,
"exampleVehicleIndex": integer
} |
Campos |
code |
enum (Code )
Consulta los comentarios del Código.
|
exampleExceededCapacityType |
string
Si el código de motivo es DEMAND_EXCEEDS_VEHICLE_CAPACITY , se documenta un tipo de capacidad que se superó.
|
exampleVehicleIndex |
integer
Si el motivo se relaciona con una incompatibilidad entre el envío y el vehículo, este campo proporciona el índice de un vehículo relevante.
|
Código
Código que identifica el tipo de motivo. En este caso, este orden no tiene sentido. En particular, no indica si un motivo determinado aparecerá antes que otro en la solución, si ambos se aplican.
Enumeraciones |
CODE_UNSPECIFIED |
Nunca debe usarse. |
NO_VEHICLE |
No hay ningún vehículo en el modelo, por lo que todos los envíos son inviables. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
La demanda del envío supera la capacidad de un vehículo para algunos tipos de capacidad, uno de los cuales es exampleExceededCapacityType . |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
La distancia mínima necesaria para realizar este envío, es decir, desde las startLocation del vehículo hasta las ubicaciones de recogida o entrega del envío y hasta la ubicación final del vehículo, supera sus routeDistanceLimit . Ten en cuenta que, para este cálculo, usamos las distancias geodésicas. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
El tiempo mínimo necesario para realizar este envío, incluido el tiempo de viaje, el tiempo de espera y el tiempo de servicio, supera el routeDurationLimit del vehículo. Nota: El tiempo de viaje se calcula en el mejor de los casos, es decir, como distancia geodésica x 36 m/s (aproximadamente 130 km/hora). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Igual que en el ejemplo anterior, pero solo comparamos el tiempo de viaje mínimo y el travelDurationLimit del vehículo. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
El vehículo no puede realizar este envío en el mejor de los casos (consulta CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT para calcular el tiempo) si comienza en la hora de inicio más temprana: el tiempo total haría que el vehículo finalice después de su última hora de finalización. |
VEHICLE_NOT_ALLOWED |
El campo allowedVehicleIndices del envío no está vacío y este vehículo no le pertenece. |
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-08-29 (UTC)
[null,null,["Última actualización: 2025-08-29 (UTC)"],[[["\u003cp\u003eThis document details the structure for reporting reasons why shipments were skipped in a solution, focusing on cases where the cause can be identified.\u003c/p\u003e\n"],["\u003cp\u003eSkipped shipment data includes an index, label, and a list of \u003ccode\u003ereasons\u003c/code\u003e, each \u003ccode\u003ereason\u003c/code\u003e explaining why the shipment couldn't be performed.\u003c/p\u003e\n"],["\u003cp\u003eReasons for skipped shipments include exceeding vehicle capacity, distance limits, duration limits, time window constraints, or not being in the allowed vehicles for the shipment.\u003c/p\u003e\n"],["\u003cp\u003eEach reason contains a \u003ccode\u003ecode\u003c/code\u003e specifying the type of issue, and \u003ccode\u003eexampleVehicleIndex\u003c/code\u003e or \u003ccode\u003eexampleExceededCapacityType\u003c/code\u003e that is present if the issue is vehicle related or exceeds capacity.\u003c/p\u003e\n"],["\u003cp\u003eThe provided structure outlines how to represent these \u003ccode\u003ereasons\u003c/code\u003e in JSON format, including relevant fields and their data types for both the skipped shipment itself and the associated reasons.\u003c/p\u003e\n"]]],[],null,["# SkippedShipment\n\n- [JSON representation](#SCHEMA_REPRESENTATION)\n- [Reason](#Reason)\n - [JSON representation](#Reason.SCHEMA_REPRESENTATION)\n- [Code](#Code)\n\nSpecifies details of unperformed shipments in a solution. For trivial cases and/or if we are able to identify the cause for skipping, we report the reason here.\n\n| JSON representation |\n|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ``` { \"index\": integer, \"label\": string, \"reasons\": [ { object (/maps/tt/route-optimization/experimental/load-cost/reference/rest/v1/SkippedShipment#Reason) } ] } ``` |\n\n| Fields ||\n|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `index` | `integer` The index corresponds to the index of the shipment in the source `ShipmentModel`. |\n| `label` | `string` Copy of the corresponding [Shipment.label](/maps/tt/route-optimization/experimental/load-cost/reference/rest/v1/ShipmentModel#Shipment.FIELDS.label), if specified in the `Shipment`. |\n| `reasons[]` | `object (`[Reason](/maps/tt/route-optimization/experimental/load-cost/reference/rest/v1/SkippedShipment#Reason)`)` A list of reasons that explain why the shipment was skipped. See comment above `Reason`. If we are unable to understand why a shipment was skipped, reasons will not be set. |\n\nReason\n------\n\nIf we can explain why the shipment was skipped, reasons will be listed here. If the reason is not the same for all vehicles, `reason` will have more than 1 element. A skipped shipment cannot have duplicate reasons, i.e. where all fields are the same except for `exampleVehicleIndex`. Example: \n\n reasons {\n code: DEMAND_EXCEEDS_VEHICLE_CAPACITY\n exampleVehicleIndex: 1\n exampleExceededCapacityType: \"Apples\"\n }\n reasons {\n code: DEMAND_EXCEEDS_VEHICLE_CAPACITY\n exampleVehicleIndex: 3\n exampleExceededCapacityType: \"Pears\"\n }\n reasons {\n code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT\n exampleVehicleIndex: 1\n }\n\nThe skipped shipment is incompatible with all vehicles. The reasons may be different for all vehicles but at least one vehicle's \"Apples\" capacity would be exceeded (including vehicle 1), at least one vehicle's \"Pears\" capacity would be exceeded (including vehicle 3) and at least one vehicle's distance limit would be exceeded (including vehicle 1).\n\n| JSON representation |\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ``` { \"code\": enum (/maps/tt/route-optimization/experimental/load-cost/reference/rest/v1/SkippedShipment#Code), \"exampleExceededCapacityType\": string, \"exampleVehicleIndex\": integer } ``` |\n\n| Fields ||\n|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|\n| `code` | `enum (`[Code](/maps/tt/route-optimization/experimental/load-cost/reference/rest/v1/SkippedShipment#Code)`)` Refer to the comments of Code. |\n| `exampleExceededCapacityType` | `string` If the reason code is `DEMAND_EXCEEDS_VEHICLE_CAPACITY`, documents one capacity type that is exceeded. |\n| `exampleVehicleIndex` | `integer` If the reason is related to a shipment-vehicle incompatibility, this field provides the index of one relevant vehicle. |\n\nCode\n----\n\nCode identifying the reason type. The order here is meaningless. In particular, it gives no indication of whether a given reason will appear before another in the solution, if both apply.\n\n| Enums ||\n|------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `CODE_UNSPECIFIED` | This should never be used. |\n| `NO_VEHICLE` | There is no vehicle in the model making all shipments infeasible. |\n| `DEMAND_EXCEEDS_VEHICLE_CAPACITY` | The demand of the shipment exceeds a vehicle's capacity for some capacity types, one of which is `exampleExceededCapacityType`. |\n| `CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT` | The minimum distance necessary to perform this shipment, i.e. from the vehicle's `startLocation` to the shipment's pickup and/or delivery locations and to the vehicle's end location exceeds the vehicle's `routeDistanceLimit`. Note that for this computation we use the geodesic distances. |\n| `CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT` | The minimum time necessary to perform this shipment, including travel time, wait time and service time exceeds the vehicle's `routeDurationLimit`. Note: travel time is computed in the best-case scenario, namely as geodesic distance x 36 m/s (roughly 130 km/hour). |\n| `CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT` | Same as above but we only compare minimum travel time and the vehicle's `travelDurationLimit`. |\n| `CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS` | The vehicle cannot perform this shipment in the best-case scenario (see `CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT` for time computation) if it starts at its earliest start time: the total time would make the vehicle end after its latest end time. |\n| `VEHICLE_NOT_ALLOWED` | The `allowedVehicleIndices` field of the shipment is not empty and this vehicle does not belong to it. |"]]