OptimizeToursResponse

Réponse après résolution d'un problème d'optimisation de tournée contenant les itinéraires suivis par chaque véhicule, les expéditions qui ont été ignorées et le coût global de la solution.

Représentation JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "processedRequest": {
    object (OptimizeToursRequest)
  },
  "metrics": {
    object (Metrics)
  }
}
Champs
routes[]

object (ShipmentRoute)

Itinéraires calculés pour chaque véhicule. Le i-ème itinéraire correspond au i-ème véhicule 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 tous les envois ignorés.

validationErrors[]

object (OptimizeToursValidationError)

Liste de toutes les erreurs de validation que nous avons pu détecter de manière indépendante. Consultez l'explication "MULTIPLE ERRORS" (ERREURS MULTIPLES) pour le message OptimizeToursValidationError. Au lieu d'erreurs, cela inclura des avertissements si solvingMode est DEFAULT_SOLVE.

processedRequest

object (OptimizeToursRequest)

Dans certains cas, nous modifions la demande entrante avant de la résoudre (par exemple, en ajoutant des coûts). Si solvingMode == TRANSFORM_AND_RETURN_REQUEST, la requête modifiée est renvoyée ici.

Expérimental : pour en savoir plus, consultez https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.

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é 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 la paire (code, displayName), qui est toujours présente.

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

ERREURS MULTIPLES : lorsque plusieurs erreurs sont détectées, le processus de validation tente d'en afficher plusieurs. Comme un compilateur, ce processus n'est pas parfait. Certaines erreurs de validation sont "fatales", ce qui signifie qu'elles interrompent l'ensemble du processus de validation. C'est le cas, entre autres, des erreurs displayName="UNSPECIFIED". Il est possible que certaines erreurs empêchent le processus de validation de détecter d'autres erreurs.

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, consultez "MULTIPLE ERRORS" (ERREURS MULTIPLES).

displayName

string

Nom à afficher de 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 à la première collecte du véhicule 4 et de l'envoi 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 un-à-un entre code et errorMessage (lorsque le code est différent de "UNSPECIFIED").

STABILITÉ : non stable. Le message d'erreur associé à un code donné peut changer au fil du temps (dans l'espoir de le clarifier). Veuillez plutôt vous référer aux règles displayName et code.

offendingValues

string

Peut contenir la ou les valeurs du ou des champs. Cette option n'est pas toujours disponible. Vous ne devez absolument pas vous y fier et ne 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, 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 }

Toutefois, nous omettons les entités de premier niveau 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 sur 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 au maximum, pour les charges) de tous les champs ShipmentRoute.metrics portant le même nom.

skippedMandatoryShipmentCount

integer

Nombre d'expéditions obligatoires ignorées.

usedVehicleCount

integer

Nombre de véhicules utilisés. Remarque : Si un itinéraire de 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 ancienne pour un véhicule d'occasion, calculée comme le minimum de ShipmentRoute.vehicle_start_time pour tous les véhicules d'occasion.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

latestVehicleEndTime

string (Timestamp format)

Heure de fin la plus tardive pour un véhicule d'occasion, calculée comme le maximum de ShipmentRoute.vehicle_end_time pour tous les véhicules d'occasion.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

costs

map (key: string, value: number)

Coût de la solution, réparti par champs de demande liés aux coûts. Les clés sont des chemins proto, relatifs à l'OptimizeToursRequest d'entrée, par exemple "model.shipments.pickups.cost", et les valeurs sont le 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 d'enlèvement de la solution. Tous les coûts définis dans le modèle sont détaillés ici, à l'exception de ceux liés aux TransitionAttributes, qui ne sont agrégés qu'à partir du 01/01/2022.

totalCost

number

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