Interpreta la risposta

L'API Route Optimization restituisce i percorsi per i veicoli nei richiesta. Le spedizioni vengono assegnate ai veicoli o possono essere saltate a seconda del proprietà della richiesta.

Un messaggio OptimizeToursResponse (REST, gRPC) ha due proprietà:

  • routes[] sono i percorsi di ogni veicolo con le spedizioni assegnate. Ciascuna Route contiene metriche che riflettono le proprietà della singola route.
  • metrics sono metriche aggregate per l'intera risposta, in tutti veicoli e piani di percorso. Le metriche di primo livello contengono le stesse proprietà Metriche per route, con valori aggregati in tutte le route.

Alcune proprietà potrebbero non essere sempre compilate a seconda dei risultati dell'ottimizzazione:

  1. skippedShipments[] elenca le spedizioni non effettuate da nessun veicolo. Una spedizione può essere saltata se non può essere eseguita entro i termini specificati o se il costo di esecuzione della spedizione supera il costo di penalità. Ad esempio, se il ritiro o la consegna di una spedizione prevede una durata timeWindow per un veicolo potrebbe non essere possibile o meno effettuare la visita durante l'intervallo di tempo richiesto.
  2. validationErrors[] specifica errori che rendono la richiesta non valida o impossibile risolvere se il valore solvingMode della richiesta è impostato su VALIDATE_ONLY In modalità DEFAULT_SOLVE normale, gli errori di convalida verranno vengono visualizzati in un messaggio di errore anziché nel corpo della risposta. Tieni presente che La modalità di risoluzione di VALIDATE_ONLY può segnalare più errori contemporaneamente, ovvero utile per eseguire rapidamente il debug delle richieste.

Proprietà percorso

Ogni voce routes[] è un messaggio ShipmentRoute (REST, gRPC). Ciascuna ShipmentRoute rappresenta l'assegnazione del percorso per un determinato veicolo da la richiesta. Proprietà ShipmentRoute importanti correlate al corrispondente Vehicle includono:

  • vehicleIndex è l'indice in base zero di Vehicle nel corrispondente di richiesta di accesso. Le risposte REST omettono questa proprietà quando il valore è zero.
  • vehicleStartTime è l'ora in cui il veicolo deve iniziare il percorso.
  • vehicleEndTime è l'ora in cui è previsto che il veicolo finisca percorso.

In risposta, routes avrà il seguente aspetto:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        ...
      ],
      "transitions": [
        ...
      ],
      "metrics": {
        ...
      },
      ...
    }
  ],
  ...
}

Ogni ShipmentRoute include un elenco ordinato di visits che il veicolo completato. Ogni Visit (REST, gRPC) rappresenta un VisitRequest (REST, gRPC) dalla richiesta corrispondente. Visit importante le proprietà includono:

  • shipmentIndex è l'indice in base zero della spedizione a cui appartiene questa visita nella richiesta corrispondente.
  • isPickup è true quando una visita è destinata a essere presa e false quando una visita è una la distribuzione dei contenuti. Le risposte REST omettono questa proprietà quando il valore è false.
  • visitRequestIndex è l'indice in base zero di VisitRequest da Shipment.pickups o Shipment.deliveries nella richiesta corrispondente che Visit rappresenta. Le risposte REST omettono questa proprietà quando è zero.
  • startTime è l'ora prevista di inizio della visita.
  • loadDemands tipo di caricamento delle mappe per caricare la quantità richiesta per completare la Visit. Gli importi di caricamento sono negativi per le visite di consegna e rappresentano il carico che viene rimosso dal veicolo.

Un esempio di Visit ha il seguente aspetto:

{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}

Ogni ShipmentRoute include un elenco ordinato di transitions che rappresentano viaggia tra visits per un determinato veicolo. Messaggio Transition importante Le proprietà (REST, gRPC) includono:

  • startTime è l'ora in cui il veicolo inizierà a eseguire la una transizione.
  • travelDuration è il periodo di tempo entro il quale il veicolo deve viaggiare per completare la transizione.
  • travelDistanceMeters è la distanza in metri che il veicolo deve per completare la transizione.
  • trafficInfoUnavailable indica se sono disponibili dati sul traffico per il una transizione.
  • waitDuration rappresenta il tempo di inattività che il veicolo trascorre prima di poter inizierà il prossimo Visit. Ciò potrebbe essere dovuto all'importo di start_time dei persone che segui Visit.
  • totalDuration è la durata totale della transizione, inclusi i viaggi, tempi di attesa, pausa e ritardo.
  • vehicleLoads mappa il tipo di caricamento in base alla quantità trasportata dal veicolo durante questa transizione.

Un esempio di Transition ha il seguente aspetto:

{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}

La relazione tra vists e transitions è descritta in Ottimizzazione degli ordini di ritiro e consegna a domicilio, nonché nella documentazione di riferimento di ShipmentRoute (REST, gRPC).

Proprietà delle metriche

Il messaggio Metrics (REST, gRPC) riassume l'intera soluzione. Alcune proprietà Metrics importanti includono:

  • totalCost è il costo totale sostenuto per completare i percorsi. Scopri di più sui costi in Parametri del modello di costo.
  • usedVehicleCount è il numero totale di veicoli utilizzati nella soluzione. I veicoli potrebbero avere percorsi vuoti quando l'ottimizzatore ne determina l'utilizzo non è necessaria.
  • skippedMandatoryShipmentCount è il numero di spedizioni saltate che sono "obbligatorio". Una spedizione obbligatoria non specifica un penaltyCost che se la spedizione viene saltata. Le spedizioni obbligatorie possono comunque saltati se le loro prestazioni non sono attuabili secondo i vincoli specificati. Per ulteriori informazioni sui costi, consulta Parametri del modello di costo.

Le metriche aggiuntive vengono segnalate come messaggi AggregatedMetrics (REST, gRPC). Il tipo di messaggio AggregatedMetrics viene utilizzato per Metrics.aggregatedRouteMetrics e per ShipmentRoute.metrics la proprietà Metrics.aggregatedRouteMetrics contiene metriche aggregate ShipmentRoute in OptimizeToursResponse. Ogni ShipmentRoute.metrics contiene le metriche per quel determinato ShipmentRoute.

Le proprietà importanti di AggregatedMetrics includono:

  • performedShipmentCount è il numero di spedizioni effettuate dai veicoli lungo i loro percorsi.
  • travelDuration è il tempo totale che i veicoli trascorrono in transito durante completano i loro percorsi.
  • waitDuration è il tempo totale di attesa dei veicoli durante il completamento i loro percorsi.
  • delayDuration è il tempo totale di ritardo per i veicoli. Di solito zero, a meno che nella richiesta non vengano utilizzati TransitionAttributes.
  • breakDuration è il tempo totale che i veicoli trascorrono nelle pause durante le pause completano i loro percorsi.
  • visitDuration è il tempo totale impiegato dai veicoli per eseguire visite durante completano i loro percorsi. Si tratta della somma di tutti Valori di VisitRequest.duration per VisitRequest corrispondenti a Visit assegnate al veicolo pertinente.
  • totalDuration è la durata totale richiesta per completare i veicoli route.
  • travelDistanceMeters è la distanza totale percorsa dai veicoli mentre completano i loro percorsi.
  • maxLoads mappa i tipi di carico alla quantità massima di carico trasmessa dalla veicoli in qualsiasi punto del loro percorso.

Un esempio di messaggio Metrics ha il seguente aspetto:

{
  "routes": [
    ...
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}

Esempio completo

Viene visualizzata una risposta di esempio completa alla richiesta da Costruisci una richiesta come:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2024-02-13T00:19:31Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1151s",
          "travelDistanceMeters": 9599,
          "waitDuration": "0s",
          "totalDuration": "1151s",
          "startTime": "2024-02-13T00:19:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2322s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2322s",
        "travelDistanceMeters": 18603
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 18.603
      },
      "routeTotalCost": 18.603
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}