Anfrage mit Ladekosten stellen

Wenn Sie eine Anfrage mit Lastkosten stellen, berücksichtigt der Optimizer die Last, die Ihre Fahrzeuge zwischen den Besuchen transportieren. Die angefallenen Kosten hängen sowohl von der Menge von ShipmentRoute.VehicleLoad als auch von der Entfernung oder Dauer der Übergangszeit ab (mit cost_per_kilometer bzw. cost_per_traveled_hour).

Minimale Beispielanfrage mit Lastkosten

Hier sehen Sie einen Teil einer Beispielanfrage mit Lastkosten. In diesem Beispiel kann das einzelne Fahrzeug maximal 1.000 kg Gesamtlast (weightKg) transportieren. Dabei fallen Kosten von 1 Einheit pro Kilometer an, wenn die transportierte Last (weightKg) 500 kg übersteigt.

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

Die Berechnung der Lastkosten für dieses Beispiel sieht so aus:

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

Wenn das Fahrzeug also eine Last von 600 über 10 Kilometer transportiert, sieht die Berechnung so aus:weightKg

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

Mit Lastkosten lassen sich verschiedene Konzepte modellieren, z. B. ein erhöhter Energieverbrauch des Fahrzeugs beim Transport schwerer Lasten oder der Verschleiß des Fahrzeugs durch übermäßige Beladung.

Weitere Beispielanfrage mit Lastkosten

Hier ist ein weiteres Beispiel für Lastkosten, bei dem sowohl über als auch unter einem Schwellenwert Kosten pro zurückgelegter Zeit anfallen:

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

Die Berechnung der Lastkosten für dieses Beispiel sieht so aus:

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

Wenn das Fahrzeug also eine Last von 950 über 5 Stunden transportiert, sieht die Berechnung so aus:weightLbs

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

In diesem Beispiel liegt der load_threshold für die Lastkosten von weightLbs nahe bei max_load. Mit cost_per_unit_above_threshold werden hohe Kosten pro zurückgelegter Stunde angewendet, wenn das Fahrzeug mit einer besonders schweren Last fährt. So werden Routen bestraft, die den Verschleiß des Fahrzeugs erhöhen oder zu einem übermäßigen Kraftstoffverbrauch führen können. Mit cost_per_unit_below_threshold werden Kosten pro Gewichtseinheit hinzugefügt, die vom Fahrzeug bis zum Schwellenwert transportiert wird. Dies stellt einen erhöhten Kraftstoffverbrauch dar, da das Fahrzeug mehr Last transportiert.

Häufig gestellte Fragen

Hier sind einige häufig gestellte Fragen zu Lastkosten:

Frage Antwort
Wo gebe ich Lastkosten an? Geben Sie die Lastkosten in Vehicle.LoadLimit an.
Wie werden Lastkosten mit Sendungen abgeglichen? Lastkosten gelten für Sendungen, deren Lastanforderung type mit dem Typ des Lastlimits für das Fahrzeug übereinstimmt , z. B. Gewicht oder Volumen. Lasttypen sind beliebige Strings, wie unter Last anforderungen und ‑limits beschrieben.
Wie werden Lastkosten ausgedrückt? Lastkosten werden in Bezug auf die Entfernung oder Dauer der Übergangszeit ausgedrückt. Verwenden Sie cost_per_kilometer, um Kosten in Bezug auf die Entfernung anzugeben, und cost_per_traveled_hour, um Kosten in Bezug auf die Dauer anzugeben.
Wann werden Lastkosten angewendet? Die Fahrzeuglast wird mit dem load_threshold der Last Kosten verglichen. Wenn cost_per_unit_above_threshold angegeben ist, werden Kosten proportional zur Fahrzeuglast über dem load_threshold mit der Formel max(0, load - load_threshold) hinzugefügt. Wenn cost_per_unit_below_threshold angegeben ist, werden Kosten proportional zur Fahrzeuglast unter dem load_threshold mit der Formel min(load, load_threshold) hinzugefügt.
Was sind die Standardwerte für Lastkostenparameter? load_threshold, cost_per_unit_above_threshold und cost_per_unit_below_threshold sind standardmäßig alle null.
In welchen Einheiten werden Lastkosten ausgedrückt? Lastkosten werden in denselben dimensionslosen Einheiten wie alle anderen Kostenparameter ausgedrückt, z. B. global_duration_cost_per_hour oder Shipment.penalty_cost.
Wo finde ich die Lastkosten in der Antwort? Angefallene Lastkosten werden in den metrics und route_metrics Attributen von Antwortnachrichten angezeigt. Beispielsweise wird eine angefallene cost_per_kilometer als model.vehicles.load_limits.cost_per_kilometer angezeigt.

Eine detaillierte Erläuterung der Lastkosten finden Sie in der Referenzdokumentation (REST, gRPC).

Beispiel: OptimizeTours-Anfrage stellen

OptimizeTours-Anfragen können auch mit REST oder gRPC gestellt werden.

Ersetzen Sie vor dem Stellen einer Anfrage die folgenden Parameter durch Werte, die für Ihre Umgebung geeignet sind:

  • Stellen Sie sicher, dass Sie die Standardanmeldedaten für Anwendungen konfiguriert haben, wie unter OAuth verwenden beschrieben.
  • Legen Sie PROJECT_NUMBER_OR_ID auf Ihre Cloud Projektnummer oder ‑ID fest.

    Mit dem folgenden Befehl wird eine OptimizeTours-Anfrage an die Route Optimization API gesendet und eine Antwort synchron empfangen.

    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

Sobald die Anfrage abgeschlossen ist, erhalten Sie eine Antwortnachricht.