SkippedShipment

Especifica los detalles de los envíos no realizados en una solución. En el caso de los 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)
    }
  ],
  "penaltyCost": number,
  "estimatedIncompatibleVehicleRatio": number
}
Campos
index

integer

El índice corresponde al índice del envío en el ShipmentModel de origen.

label

string

Es la 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 podemos comprender por qué se omitió un envío, no se establecerán los motivos.

penaltyCost

number

Esta es una copia de Shipment.penalty_cost, que se incluye aquí para que sea más fácil ver la gravedad de un envío omitido.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.

estimatedIncompatibleVehicleRatio

number

Es la proporción estimada de vehículos que no pueden realizar este envío por, al menos, uno de los siguientes motivos. Nota: Solo se completa cuando los motivos involucran un vehículo.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.

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, que todos los campos sean iguales, excepto 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 superaría la capacidad de "Manzanas" de al menos un vehículo (incluido el vehículo 1), la capacidad de "Peras" de al menos un vehículo (incluido el vehículo 3) y el límite de distancia de al menos un vehículo (incluido el vehículo 1).

Representación JSON
{
  "code": enum (Code),
  "exampleVehicleIndices": [
    integer
  ],
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
Campos
code

enum (Code)

Consulta los comentarios de Code.

exampleVehicleIndices[]

integer

Es igual que exampleVehicleIndex, excepto que proporcionamos la lista de varios vehículos identificados. Esta lista no es necesariamente exhaustiva. Solo se completa si [fill_example_vehicle_indices_in_skipped_reasons][] es verdadero.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.

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. El orden aquí 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 Esto 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 el startLocation del vehículo hasta las ubicaciones de partida o destino del envío y hasta la ubicación de destino del vehículo, supera el routeDistanceLimit del vehículo.

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 la distancia geodésica por 36 m/s (alrededor de 130 km/h).

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT Igual que lo 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 el cálculo del tiempo) si comienza a la hora de inicio más temprana: el tiempo total haría que el vehículo finalice después de la hora de finalización más tardía.
VEHICLE_NOT_ALLOWED El campo allowedVehicleIndices del envío no está vacío y este vehículo no le pertenece.
VEHICLE_IGNORED

El campo ignore del vehículo es verdadero.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.

SHIPMENT_IGNORED

El campo ignore del envío es verdadero.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

Se omite el envío en injectedSolutionConstraint.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

La relajación de la ruta del vehículo especificada en injectedSolutionConstraint no permite insertar ninguna visita.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.

ZERO_PENALTY_COST

El envío tiene un costo de penalización de cero. Si bien esto puede ser útil como opción de modelado avanzada, también puede explicar después del hecho por qué se omitió un envío.

Experimental: Es posible que el comportamiento o la existencia de este campo cambien en el futuro.