OptimizeToursResponse

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 (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
Champs
routes[]

object (ShipmentRoute)

Itinéraires calculés pour chaque véhicule. L'itinéraire i correspond au véhicule i du modèle.

requestLabel

string

Copie de OptimizeToursRequest.label, si un libellé a été spécifié dans la requête.

skippedShipments[]

object (SkippedShipment)

Liste de toutes les livraisons ignorées.

validationErrors[]

object (OptimizeToursValidationError)

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 OptimizeToursValidationError. Au lieu d'erreurs, cela inclura des avertissements si solvingMode est DEFAULT_SOLVE.

metrics

object (Metrics)

Métriques de durée, de distance et d'utilisation pour 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 (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
Champs
code

integer

Une erreur de validation est définie par les paires (code, displayName), qui sont toujours présentes.

Les champs qui suivent cette section fournissent plus de contexte sur l'erreur.

MULTIPLE ERRORS : en cas de plusieurs erreurs, le processus de validation tente d'en afficher 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 le cas, entre autres, des erreurs displayName="UNSPECIFIED". Certaines erreurs peuvent empêcher le processus de validation d'en ignorer d'autres.

STABILITÉ : code et displayName doivent être très stables. Toutefois, de nouveaux codes et noms à afficher peuvent apparaître au fil du temps, ce qui peut entraîner une paire (code, displayName) différente pour une requête donnée (non valide), car la nouvelle erreur a masqué l'ancienne. Par exemple, reportez-vous à la section "MULTIPLE ERRORS" (ERREURS MULTIPLES).

displayName

string

Nom à afficher pour l'erreur.

fields[]

object (FieldReference)

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:

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

Notez toutefois que la cardinalité de fields ne doit pas changer pour un code d'erreur donné.

errorMessage

string

Chaîne de texte décrivant l'erreur. Il existe un mappage 1:1 entre code et errorMessage (lorsque le code != "UNSPECIFIED" [NON SPÉCIFIÉ]).

STABILITÉ : non stable : le message d'erreur associé à un code donné peut changer au fil du temps (en espérant qu'il sera plus clair). Veuillez plutôt utiliser displayName et code.

offendingValues

string

Peut contenir la ou les valeurs du ou des champs. Cette fonctionnalité n'est pas toujours disponible. Vous ne devez absolument pas vous y fier. Vous ne devez l'utiliser que pour le débogage manuel des modèles.

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, l'élément 2 de startTimeWindows du véhicule n°5 peut être spécifié comme suit:

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 (FieldReference)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
Champs
name

string

Nom du champ (par exemple, "vehicles".

subField

object (FieldReference)

Sous-champ imbriqué de manière récursive, si nécessaire.

Champ d'union index_or_key.

index_or_key ne peut être qu'un des éléments suivants :

index

integer

Index du champ s'il est répété.

key

string

Clé si le champ est une carte.

Métriques

Métriques globales, agrégées pour toutes les routes.

Représentation JSON
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
Champs
aggregatedRouteMetrics

object (AggregatedMetrics)

Agrégé sur les routes. Chaque métrique correspond à la somme (ou à la valeur maximale, pour les charges) de tous les champs ShipmentRoute.metrics du même nom.

skippedMandatoryShipmentCount

integer

Nombre de colis obligatoires ignorés.

usedVehicleCount

integer

Nombre de véhicules utilisés. Remarque: Si l'itinéraire d'un véhicule est vide et que Vehicle.used_if_route_is_empty est défini sur "true", le véhicule est considéré comme utilisé.

earliestVehicleStartTime

string (Timestamp format)

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 ShipmentRoute.vehicle_start_time.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

latestVehicleEndTime

string (Timestamp format)

Heure de fin la plus tardive pour un véhicule d'occasion, calculée comme le maximum de l'ensemble des véhicules utilisés de ShipmentRoute.vehicle_end_time.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

costs

map (key: string, value: number)

Coût de la solution, réparti par champ de requête lié aux coûts. Les clés sont des chemins proto, par rapport à la requête OptimizeToursRequest d'entrée (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ées pour 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 à TransitionAttributes, qui ne sont indiqués de manière agrégée qu'à partir de janvier 2022.

totalCost

number

Coût total de la solution. Somme de toutes les valeurs du mappage des coûts.