Réponse après avoir résolu un problème d'optimisation des visites comprenant les itinéraires suivis par chaque véhicule, les livraisons ignorées et le coût global de la solution.
Représentation JSON |
---|
{ "routes": [ { object ( |
Champs | |
---|---|
routes[] |
Itinéraires calculés pour chaque véhicule ; le i-ième itinéraire correspond au i-ième véhicule du modèle. |
requestLabel |
Copie de |
skippedShipments[] |
Liste de toutes les livraisons ignorées. |
validationErrors[] |
Liste de toutes les erreurs de validation que nous avons pu détecter indépendamment. Consultez l'explication "MULTIPLE ERRORS" (ERREURS MULTIPLES) pour le message |
metrics |
Métriques de durée, de distance et d'utilisation de cette solution. |
OptimizeToursValidationError
Décrit une erreur ou un avertissement rencontrés lors de la validation d'un OptimizeToursRequest
.
Représentation JSON |
---|
{
"code": integer,
"displayName": string,
"fields": [
{
object ( |
Champs | |
---|---|
code |
Une erreur de validation est définie par les paires ( Les autres champs (ci-dessous) fournissent plus de contexte sur l'erreur. MULTIPLE ERRORS (ERREURS MULTIPLES) : lorsqu'il y a plusieurs erreurs, le processus de validation tente d'en générer plusieurs. Tout comme un compilateur, il s'agit d'un processus imparfait. Certaines erreurs de validation peuvent avoir le statut "fatal", ce qui signifie qu'elles interrompent l'ensemble du processus de validation. C'est notamment le cas pour les erreurs STABILITÉ : RÉFÉRENCE : liste de toutes les paires (code, nom) :
|
displayName |
Nom à afficher de l'erreur. |
fields[] |
Un contexte d'erreur peut impliquer 0, 1 (la plupart du temps) ou plusieurs champs. Par exemple, vous pouvez faire référence au véhicule n° 4 et au premier enlèvement de la livraison n° 2 comme suit:
Notez toutefois que la cardinalité de |
errorMessage |
Chaîne de texte décrivant l'erreur. Il existe un mappage 1:1 entre STABILITÉ : non stable : le message d'erreur associé à un |
offendingValues |
Peut contenir la ou les valeurs du ou des champs. Ce n'est pas toujours possible. Vous ne devez absolument pas vous y fier et ne l'utiliser que pour le débogage manuel du modèle. |
FieldReference
Spécifie un contexte pour l'erreur de validation. Un FieldReference
fait toujours référence à un champ donné de ce fichier et suit la même structure hiérarchique. Par exemple, nous pouvons spécifier l'élément 2 de startTimeWindows
du véhicule 5 à l'aide de :
name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }
Nous omettez toutefois les entités de niveau supérieur telles que OptimizeToursRequest
ou ShipmentModel
pour éviter d'encombrer le message.
Représentation JSON |
---|
{ "name": string, "subField": { object ( |
Champs | |
---|---|
name |
Nom du champ (par exemple, "vehicles". |
subField |
Sous-champ imbriqué de manière récursive, si nécessaire. |
Champ d'union
|
|
index |
Index du champ s'il est répété. |
key |
Clé si le champ est une carte. |
Métriques
Métriques globales, agrégées pour tous les itinéraires.
Représentation JSON |
---|
{
"aggregatedRouteMetrics": {
object ( |
Champs | |
---|---|
aggregatedRouteMetrics |
Agrégation sur les itinéraires. Chaque métrique correspond à la somme (ou max, pour les chargements) de tous les champs |
skippedMandatoryShipmentCount |
Nombre de colis obligatoires ignorés. |
usedVehicleCount |
Nombre de véhicules utilisés. Remarque: Si l'itinéraire d'un véhicule est vide et que |
earliestVehicleStartTime |
Heure de début la plus précoce pour un véhicule d'occasion, calculée comme la valeur minimale pour tous les véhicules d'occasion de Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
latestVehicleEndTime |
Heure de fin la plus tardive pour un véhicule d'occasion, calculée comme la valeur maximale de Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
costs |
Coût de la solution, réparti selon les champs de demande liés aux coûts. Les clés sont des chemins proto correspondant à l'entrée OptimizeToursRequest (par exemple, "model.shipments.pickups.cost"), et les valeurs correspondent au coût total généré par le champ de coût correspondant, agrégé sur l'ensemble de la solution. En d'autres termes, costs["model.shipments.pickups.cost"] correspond à la somme de tous les coûts de ramassage pour la solution. Tous les coûts définis dans le modèle sont indiqués ici en détail, à l'exception des coûts liés aux TransitionAttributes, qui ne sont consignés que de manière agrégée en date du 1er janvier 2022. Objet contenant une liste de paires |
totalCost |
Coût total de la solution. Somme de toutes les valeurs de la carte des coûts. |