Anfrage mit Ladekosten stellen

Reichen Sie eine Anfrage mit Ladekosten ein, damit der Optimierer die Ladung berücksichtigt, die Ihre Fahrzeuge zwischen den Besuchen befördern. Die anfallenden Kosten hängen sowohl von der übertragenen Menge an ShipmentRoute.VehicleLoad als auch von der Entfernung oder Dauer der Übertragung (mit cost_per_kilometer bzw. cost_per_traveled_hour) ab.

Minimale Beispielanfrage mit Ladekosten

Hier ein Beispiel für eine Anfrage mit Ladekosten: In diesem Beispiel kann das einzelne Fahrzeug nicht mehr als 1.000 kg weightKg-Ladung insgesamt befördern. Wenn die beförderte weightKg-Ladung 500 kg überschreitet, fallen 1 Kosteneinheit pro Kilometer an.

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

Die Berechnung der Ladekosten 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 weightKg-Ladung von 600 kg über 10 Kilometer fährt, lautet die Berechnung:

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

Mithilfe von Ladekosten lassen sich verschiedene Konzepte modellieren, z. B. der erhöhte Energieverbrauch von Fahrzeugen beim Transport schwerer Lasten oder die Fahrzeugabnutzung durch übermäßige Beladung.

Weitere Beispielanfrage mit Ladekosten

Hier ist ein weiteres Beispiel für Ladekosten, bei denen sowohl über als auch unter einem Grenzwert Kosten pro zurückgelegter Zeit anfallen:

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

Die Berechnung der Ladekosten 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 weightLbs-Ladung von 950 kg für 5 Stunden befördert, erfolgt die Berechnung so:

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

In diesem Beispiel liegt der load_threshold für die weightLbs-Ladekosten nahe bei max_load. Bei der cost_per_unit_above_threshold werden hohe Kosten pro zurückgelegte Stunde berechnet, wenn das Fahrzeug mit einer besonders hohen Ladung unterwegs ist. Dadurch werden Routen mit einem erhöhten Verschleiß des Fahrzeugs oder einem übermäßigen Kraftstoffverbrauch bestraft. Mit cost_per_unit_below_threshold werden Kosten pro Gewichtseinheit hinzugefügt, die vom Fahrzeug bis zum Grenzwert befördert werden. Dies entspricht einem erhöhten Kraftstoffverbrauch, da das Fahrzeug mehr Ladung trägt.

Häufig gestellte Fragen

Hier finden Sie einige häufig gestellte Fragen zu Ladekosten:

Frage Antwort
Wo kann ich die Ladekosten angeben? Geben Sie die Ladekosten in Vehicle.LoadLimit an.
Wie werden Ladekosten mit Sendungen abgeglichen? Ladekosten gelten für Sendungen, deren Ladebedarf mit der Art der Ladebeschränkung für das Fahrzeug übereinstimmt, z. B. Gewicht oder Volumen. Ladetypen sind beliebige Strings, wie unter Anforderungen und Limits für die Auslastung beschrieben.
Wie werden Ladekosten angegeben? Die Ladekosten werden in Bezug auf die Entfernung oder Dauer der Übertragung angegeben. Verwenden Sie cost_per_kilometer, um die Kosten in Abhängigkeit von der Entfernung und cost_per_traveled_hour, um die Kosten in Abhängigkeit von der Dauer anzugeben.
Wann werden Ladekosten berechnet? Die Fahrzeuglast wird mit dem load_threshold der Ladekosten verglichen. Wenn cost_per_unit_above_threshold angegeben ist, werden die Kosten proportional zur Ladung des Fahrzeugs über dem load_threshold mithilfe der Formel max(0, load - load_threshold) hinzugefügt. Wenn cost_per_unit_below_threshold angegeben ist, werden die Kosten proportional zur Ladung des Fahrzeugs unter dem load_threshold mithilfe der Formel min(load, load_threshold) hinzugefügt.
Was sind die Standardwerte für Parameter für Ladekosten? load_threshold, cost_per_unit_above_threshold und cost_per_unit_below_threshold sind standardmäßig alle gleich null.
In welchen Einheiten werden Ladekosten angegeben? Ladekosten 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 Ladekosten in der Antwort? Die angefallenen Ladekosten werden in den Eigenschaften metrics und route_metrics von Antwortnachrichten angezeigt. Beispiel: Ein Betrag von cost_per_kilometer wird als model.vehicles.load_limits.cost_per_kilometer angezeigt.

Eine detaillierte Erklärung der Ladekosten finden Sie in der Referenzdokumentation (REST, gRPC).

Beispiel: OptimizeTours-Anfrage stellen

OptimizeTours-Anfragen können auch über REST oder gRPC gesendet werden.

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

  • Die Standardanmeldedaten für Anwendungen müssen wie unter OAuth verwenden beschrieben konfiguriert sein.
  • Legen Sie PROJECT_NUMBER_OR_ID auf Ihre Cloud-Projektnummer oder -ID fest.

    Mit dem folgenden Befehl wird eine OptimizeTours-Anfrage an die Routenoptimierungs-API gesendet und eine Antwort wird 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 Antwort.