SkippedShipment

Spécifie les détails des expéditions non effectuées dans une solution. Dans les cas simples et/ou si nous sommes en mesure d'identifier la cause du saut, nous indiquons la raison ici.

Représentation JSON
{
  "index": integer,
  "label": string,
  "reasons": [
    {
      object (Reason)
    }
  ],
  "penaltyCost": number,
  "estimatedIncompatibleVehicleRatio": number
}
Champs
index

integer

L'index correspond à l'index de l'envoi dans le ShipmentModel source.

label

string

Copie de l'Shipment.label correspondante, si elle est spécifiée dans le Shipment.

reasons[]

object (Reason)

Liste des raisons pour lesquelles l'envoi a été ignoré. Voir le commentaire au-dessus de Reason. Si nous ne parvenons pas à comprendre pourquoi une expédition a été ignorée, aucun motif ne sera défini.

penaltyCost

number

Il s'agit d'une copie de l'Shipment.penalty_cost, incluse ici pour vous permettre de voir plus facilement la gravité d'un envoi ignoré.

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.

estimatedIncompatibleVehicleRatio

number

Pourcentage estimé de véhicules qui ne peuvent pas effectuer cette livraison pour au moins l'une des raisons ci-dessous. Remarque: Ce champ n'est renseigné que lorsque les raisons concernent un véhicule.

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.

Motif

Si nous pouvons expliquer pourquoi l'envoi a été ignoré, les raisons seront indiquées ici. Si la raison n'est pas la même pour tous les véhicules, reason contiendra plus d'un élément. Les raisons d'une livraison ignorée ne doivent pas être en double (c'est-à-dire que tous les champs doivent être identiques, à l'exception de exampleVehicleIndex). Exemple :

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
}

L'envoi ignoré n'est pas compatible avec tous les véhicules. Les raisons peuvent être différentes pour tous les véhicules, mais la capacité "Pommes " d'au moins un véhicule serait dépassée (y compris le véhicule 1), la capacité "Poires " d'au moins un véhicule serait dépassée (y compris le véhicule 3) et la limite de distance d'au moins un véhicule serait dépassée (y compris le véhicule 1).

Représentation JSON
{
  "code": enum (Code),
  "exampleVehicleIndices": [
    integer
  ],
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
Champs
code

enum (Code)

Reportez-vous aux commentaires du code.

exampleVehicleIndices[]

integer

Comme pour exampleVehicleIndex, mais nous fournissons la liste de plusieurs véhicules identifiés. Cette liste n'est pas nécessairement exhaustive. Ce champ n'est renseigné que si [fill_example_vehicle_indices_in_skipped_reasons][] est défini sur "true".

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.

exampleExceededCapacityType

string

Si le code de motif est DEMAND_EXCEEDS_VEHICLE_CAPACITY, documente un type de capacité dépassé.

exampleVehicleIndex

integer

Si le motif est lié à une incompatibilité entre l'envoi et le véhicule, ce champ indique l'indice d'un véhicule pertinent.

Code

Code identifiant le type de motif. L'ordre ici n'a aucune signification. En particulier, il n'indique pas si une raison donnée apparaîtra avant une autre dans la solution, si les deux s'appliquent.

Enums
CODE_UNSPECIFIED Ce type ne doit jamais être utilisé.
NO_VEHICLE Aucun véhicule n'est disponible dans le modèle, ce qui rend toutes les livraisons impossibles.
DEMAND_EXCEEDS_VEHICLE_CAPACITY La demande de l'envoi dépasse la capacité d'un véhicule pour certains types de capacité, dont exampleExceededCapacityType.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

La distance minimale nécessaire pour effectuer cet envoi, c'est-à-dire de l'startLocation du véhicule jusqu'aux lieux de prise en charge et/ou de livraison de l'envoi et jusqu'à l'emplacement final du véhicule, dépasse la routeDistanceLimit du véhicule.

Notez que pour ce calcul, nous utilisons les distances géodésiques.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

Le temps minimal nécessaire pour effectuer cette livraison, y compris le temps de trajet, le temps d'attente et le temps de service, dépasse la routeDurationLimit du véhicule.

Remarque: Le temps de trajet est calculé dans le meilleur des cas, c'est-à-dire en multipliant la distance géodésique par 36 m/s (environ 130 km/h).

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT Comme ci-dessus, mais nous ne comparons que le temps de trajet minimal et l'travelDurationLimit du véhicule.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS Le véhicule ne peut pas effectuer cette livraison dans le meilleur des cas (voir CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT pour le calcul du temps) s'il commence à son heure de début la plus précoce: le temps total ferait que le véhicule se terminerait après son heure de fin la plus tardive.
VEHICLE_NOT_ALLOWED Le champ allowedVehicleIndices de l'envoi n'est pas vide et ce véhicule n'y est pas associé.
VEHICLE_IGNORED

Le champ ignore du véhicule est défini sur "true".

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.

SHIPMENT_IGNORED

Le champ ignore de l'envoi est défini sur "true".

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

La livraison est ignorée dans injectedSolutionConstraint.

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

La relaxation de l'itinéraire du véhicule spécifiée dans injectedSolutionConstraint n'autorise aucune visite à être insérée.

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.

ZERO_PENALTY_COST

Les frais de pénalité sont nuls pour l'envoi. Bien que cela puisse être utile en tant que choix de modélisation avancé, cela peut également expliquer a posteriori pourquoi une expédition a été ignorée.

Expérimental: le comportement ou l'existence de ce champ est susceptible de changer à l'avenir.