Inviare una richiesta con i costi di caricamento

Invia una richiesta con i costi di carico per consentire all'ottimizzatore di prendere in considerazione il carico trasportato dai tuoi veicoli tra una visita e l'altra. Il costo sostenuto dipende sia dalla quantità di ShipmentRoute.VehicleLoad trasportata sia dalla distanza o dalla durata della transizione (utilizzando rispettivamente cost_per_kilometer o cost_per_traveled_hour).

Una richiesta di esempio minima con i costi di caricamento

Ecco un esempio parziale di una richiesta con un costo di caricamento. In questo esempio, il singolo veicolo non può trasportare più di 1000 kg di carico weightKg totale, per cui viene addebitato 1 costo unitario per chilometro quando il carico weightKg trasportato supera i 500 kg.

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightKg": {
            "maxLoad": "1000",
            "costPerKilometer": {
              "loadThreshold": "500",
              "costPerUnitAboveThreshold": 1
            }
          }
        }
      }]
    }
  }
  

Il calcolo del costo del carico per questo esempio è il seguente:

cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold

Pertanto, se il veicolo trasporta un carico weightKg di 600 su 10 chilometri, il calcolo sarà:

(600 - 500) * 10 * 1 = 1000 cost units

I costi di carico possono essere utilizzati per modellare una serie di concetti, ad esempio l'aumento del consumo di energia del veicolo durante il trasporto di carichi pesanti o l'usura del veicolo causata da un carico eccessivo.

Un altro esempio di richiesta con i costi di caricamento

Ecco un altro esempio di costi di caricamento che impone un costo per tempo di percorrenza sia sopra che al di sotto di una soglia:

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightLbs": {
            "maxLoad": "1000",
            "costPerTraveledHour": {
              "loadThreshold": "900",
              "costPerUnitAboveThreshold": 10,
              "costPerUnitBelowThreshold": 1
            },
          },
        }
      }]
    }
  }
  

Il calcolo del costo del carico per questo esempio è il seguente:

cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
  + min(carried load, load threshold) * time * cost per unit below threshold

Pertanto, se il veicolo trasporta un carico weightLbs di 950 per 5 ore, il calcolo sarà:

max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000

In questo esempio, load_threshold per il costo di caricamento weightLbs è vicino a max_load. Il cost_per_unit_above_threshold applica un costo elevato per ogni ora di percorrenza quando il veicolo viaggia con un carico particolarmente pesante, penalizzando i percorsi che potrebbero aumentare l'usura del veicolo o consumare carburante in eccesso. cost_per_unit_below_threshold aggiunge un costo per unità di peso trasportato dal veicolo fino alla soglia, che rappresenta l'aumento del consumo di carburante man mano che il veicolo trasporta più carico.

Domande frequenti

Ecco alcune domande frequenti sui costi di caricamento:

Domanda Risposta
Dove posso specificare i costi di caricamento? Specifica i costi di caricamento in Vehicle.LoadLimit.
Come vengono abbinati i costi di caricamento alle spedizioni? Un costo di carico si applica alle spedizioni il cui tipo di domanda di carico corrisponde al tipo di limite di carico del veicolo, ad esempio peso o volume. I tipi di caricamento sono stringhe arbitrarie, come descritto in carichi e limiti.
Come vengono espressi i costi di caricamento? I costi di caricamento sono espressi in termini di distanza o durata della transizione. Utilizza cost_per_kilometer per specificare i costi in termini di distanza e cost_per_traveled_hour per specificare i costi in termini di durata.
Quando vengono applicati i costi di caricamento? Il carico del veicolo viene confrontato con il load_threshold del costo del carico. Se è specificato cost_per_unit_above_threshold, il costo viene aggiunto proporzionalmente al carico del veicolo sopra il valore load_threshold utilizzando la formula max(0, load - load_threshold). Se viene specificato cost_per_unit_below_threshold, il costo viene aggiunto proporzionalmente al carico del veicolo al di sotto di load_threshold, utilizzando la formula min(load, load_threshold).
Quali sono i valori predefiniti per i parametri dei costi di caricamento? load_threshold, cost_per_unit_above_threshold e cost_per_unit_below_threshold sono tutti pari a zero per impostazione predefinita.
In quali unità sono espressi i costi di caricamento? I costi di caricamento sono espressi nelle stesse unità senza dimensioni di tutti gli altri parametri di costo, ad esempio global_duration_cost_per_hour o Shipment.penalty_cost.
Dove posso trovare i costi di caricamento nella risposta? I costi di caricamento sostenuti vengono visualizzati nelle proprietà metrics e route_metrics dei messaggi di risposta. Ad esempio, un valore cost_per_kilometer costi sostenuti verrà visualizzato come model.vehicles.load_limits.cost_per_kilometer.

Per una spiegazione dettagliata dei costi di caricamento, consulta la documentazione di riferimento (REST, gRPC).

Esempio: effettua una richiesta OptimizeTours

Le richieste OptimizeTours possono essere effettuate anche utilizzando REST o gRPC.

Prima di effettuare una richiesta, sostituisci i seguenti parametri con i valori appropriati per il tuo ambiente:

  • Assicurati di aver configurato le credenziali predefinite dell'applicazione come descritto in Utilizzare OAuth.
  • Imposta PROJECT_NUMBER_OR_ID sul numero o sull'ID del tuo progetto Cloud.

    Il seguente comando invia una richiesta OptimizeTours all'API RouteOptimization e riceve una risposta in modo sincrono.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- << EOM
    {
      "model": {
        "shipments": [
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789456,
                  "longitude": -122.390192
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 100.0,
            "loadDemands": {
              "weightKg": {
                "amount": 50
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789116,
                  "longitude": -122.395080
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 30.0,
            "loadDemands": {
              "weightKg": {
                "amount": 10
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.795242,
                  "longitude": -122.399347
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 50.0,
            "loadDemands": {
              "weightKg": {
                "amount": 80
              }
            }
          }
        ],
        "vehicles": [
          {
            "endLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "startLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "costPerHour": 40.0,
            "costPerKilometer": 10.0,
            "loadLimits": {
              "weightKg": {
                "maxLoad": "100",
                "costPerKilometer": {
                  "loadThreshold": "15",
                  "costPerUnitAboveThreshold": 1
                }
              }
            }
          }
        ]
      }
    }
    EOM

Al termine della richiesta, riceverai un messaggio di risposta.