Ladeanforderungen und -limits

Die Property „loadDemands“ ist unter „ShipmentModel.shipments.Shipment“ und die Property „loadLimits“ unter „ShipmentModel.vehicles.Vehicle“ definiert.

Lastanforderungen und ‑limits sind eine Art von Einschränkung, mit der Sie die Kapazität verwalten können. Diese Einschränkung gibt die erforderliche Kapazität einer Sendung und die maximale Kapazität eines Fahrzeugs an. So können Sie Routenzuweisungen basierend auf diesen Einschränkungen optimieren.

Lastanforderungen und ‑limits können Ziele wie die folgenden unterstützen:

  • Überlastung von Fahrzeugen verhindern
  • Änderungen der Fahrzeuglasten beim Abholen und Zustellen von Sendungen beobachten
  • Zuordnung von Schwerlastfahrzeugen zu Sendungen mit schwerer Last priorisieren

Lastanforderungen und ‑limits werden in diesen Attributen angegeben:

  • loadDemands gibt die Kapazität an, die für eine bestimmte Sendung erforderlich ist.
  • loadLimits gibt die maximale Kapazität für ein bestimmtes Fahrzeug an.

Struktur

Wie im Diagramm dargestellt, sind Lastanforderungen und ‑limits so strukturiert:

Checkliste für Grundlagen

Die folgende Checkliste enthält grundlegende Informationen, mit denen Sie potenzielle Fehler im Zusammenhang mit der Last vermeiden können. Anhand dieser Liste können Sie Ihre Anfrage validieren und Fehler in Ihrer Antwort beheben.

Attribute

In diesem Abschnitt werden die Attribute für Lastanforderungen und ‑limits beschrieben:

  • Lasttyp:Ein gemeinsames Attribut für Lastanforderungen und ‑limits.
  • Load und LoadLimit: Eindeutige Attribute, die jeweils in Last anforderungen und Lastlimits vorhanden sind.

Lasttyp

Ein Lasttyp ist ein Stringschlüssel, den Sie gleichermaßen auf Sendungen und Fahrzeuge anwenden. Ein einzelner Lasttyp gilt sowohl für die Lastanforderung einer Sendung als auch für das Lastlimit eines Fahrzeugs.

Für Lasttypen wird die Syntax für den Kartentyp von Protocol Buffers verwendet. Verwenden Sie beim Benennen eines Lasttyps IDs, die den Typ der Last und ihre Einheit beschreiben. Beispiele: weightKg, volume_gallons, palletcount oder frequencyDaily.

Load und LoadLimit

Die Objekte Load und LoadLimit enthalten bestimmte Attribute, mit denen Sie die Kapazitätsanforderungen für Sendungen und Fahrzeuge definieren können. In der folgenden Tabelle werden diese Attribute beschrieben:

Objekt Elternteil Attribut Attributtyp Attributbeschreibung
Load loadDemands amount String (Format „int64“) Definiert die Kapazitätsanforderung der Sendung im angegebenen Typ.
LoadLimit loadLimits maxLoad String (Format „int64“) Definiert die maximale Lastkapazität des Fahrzeugs im angegebenen Typ.

Beispiele

In diesem Abschnitt werden drei Arten von Beispielen behandelt:

Codebeispiele

Das folgende Beispiel zeigt die Struktur einer Lastanforderung, bei der Sie den loadDemands Typ als String und das amount Attribut als String im Format „int64“ festlegen können:

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

Das folgende Beispiel zeigt die einfachste Struktur eines Lastlimits, bei dem Sie den Typ loadLimits als String und das Attribut maxLoad als String im Format „int64“ festlegen können:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

Beispielszenario

In diesem Abschnitt wird ein Szenario beschrieben, in dem Sie ein Unternehmen für die Hundebetreuung betreiben und eine Route optimieren, um einige Hunde in einem Fahrzeug mit einer begrenzten Anzahl von Transportboxen zu transportieren.

Jede Sendung steht für einen Stopp, an dem Sie eine bestimmte Anzahl von Hunden abholen. In diesem Beispiel hat jede Sendung einen anderen Abholort, nämlich das Zuhause der Hunde, um die Sie sich kümmern. Alle Sendungen haben denselben Zustellort, das Gebäude Ihrer Hundebetreuung.

Für dieses Beispiel sind die Attributwerte in Ihrer Anfrage die folgenden:

Elternteil Attribut Typ Wert Szenario
loadDemands Lasttyp String dogUnit Definiert den Lasttyp für die Sendung. In diesem Beispiel wird dogUnit verwendet, wobei jede dogUnit einen Hund darstellt.
loadDemands amount Zahl 1. Sendung: 1
2. Sendung: 3
Gibt die Menge des definierten Lasttyps an. In diesem Beispiel definieren Sie zwei Sendungen. Bei der ersten holen Sie einen Hund ab, bei der zweiten drei Hunde.
loadLimits Lasttyp String dogUnit Definiert den Lastlimittyp, der auf das Fahrzeug angewendet wird. Dieser muss mit dem Lasttyp der Sendung übereinstimmen , damit das Limit relevant ist.
loadLimits maxLoad Zahl 6 Gibt die maximale Menge des Lasttyps an, die das Fahrzeug transportieren kann. In diesem Beispiel haben Sie nur ein Fahrzeug mit einer maximalen Kapazität von 6 dogUnit, wobei jede dogUnit eine Hundebox darstellt.

Das folgende Diagramm veranschaulicht die Lastlimits des Fahrzeugs, die Lastanforderungen der einzelnen Sendungen und wie die einzelnen Sendungen die Lastlimits des Fahrzeugs in Anspruch nehmen:

Das Fahrzeug beginnt die Route mit 6 leeren Plätzen, die die Ladekapazität des Fahrzeugs darstellen. Die erste Sendung erfordert Platz für einen Hund, die zweite Sendung Platz für drei Hunde. Am Ende sind vier der sechs Plätze belegt und zwei Plätze frei.

In diesem Beispiel haben die Lastanforderungen der einzelnen Sendungen und die Lastlimits des Fahrzeugs die folgenden Auswirkungen:

  • Der Optimierer hat kein Problem , eine Route für das Fahrzeug zu erstellen, um die Hunde zu transportieren, da das Fahrzeug bis zu 6 Hunde transportieren kann und Sie nur 4 Hunde abholen.

  • Ein Lastlimit von 6 dogUnit für das Fahrzeug bedeutet auch, dass Sie in diesem Fahrzeug nur zwei weitere Hunde transportieren können.

  • Wenn die Anzahl der Hunde das Lastlimit überschreitet, würde der Optimierer entweder eine der Abholungen überspringen oder sie einem geeigneten Fahrzeug zuweisen.

Beachten Sie, dass es keine vordefinierten Typen gibt. In diesem Beispiel können Sie den Lasttyp von „Hundeeinheiten“ in „Gewichtseinheiten“ ändern, um das Gewicht der Hunde zu begrenzen, oder in „Lineare Maße“, um ihre Breite oder Höhe zu begrenzen. Dank dieser Flexibilität können Sie Lastanforderungen und ‑limits an Ihre spezifischen Anforderungen anpassen.

Beispiel für eine Anfrage

Das folgende Beispiel zeigt die Struktur einer einfachen optimizeTours-Anfrage mit den Werten aus dem Beispielszenario:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

Im Gegensatz zu diesem Beispiel kann eine Sendung mehrere Lastanforderungen und ein Fahrzeug mehrere Lastlimits haben. So können Sie komplexe Einschränkungen angeben, die bei der Optimierung der Routen Ihrer Flotte berücksichtigt werden sollen.

Flexible Lastlimits

Sie können Lastlimits als flexible Einschränkungen festlegen, indem Sie softMaxLoad und costPerUnitAboveSoftMax zu den loadLimits eines Fahrzeugs hinzufügen. So kann der Optimierer die maximale Last des Fahrzeugs gegen eine Gebühr überschreiten, wobei die Routenfertigstellung Vorrang vor der strikten Einhaltung des Lastlimits hat.

Sie können maxLoad und softMaxLoad zusammen verwenden, um sowohl ein festes als auch ein flexibles Lastlimit festzulegen. In diesem Fall legt softMaxLoad die Last fest, die überschritten werden kann, und maxLoad legt ein festes Limit fest, das nicht überschritten werden kann. Wenn beide verwendet werden, muss maxLoad größer als softMaxLoad sein.

Attribute

In der folgenden Tabelle werden die Attribute für flexible Einschränkungen für Lastanforderungen und ‑limits beschrieben.

Elternteil Attributname Attributtyp Attributbeschreibung
loadLimits softMaxLoad String (Format „int64“) Die bevorzugte maximale Last für ein Fahrzeug. Wenn die Last des Fahrzeugs diesen Wert überschreitet, fallen Kosten an.
loadLimits costPerUnitAboveSoftMax Zahl Die Kosten pro Lasteinheit über softMaxLoad. Dieses Feld ist erforderlich, wenn Sie softMaxLoad verwenden. Weitere Informationen zu Kosten finden Sie im Schlüsselkonzept Kostenmodell.

Codebeispiel

Das folgende Beispiel zeigt die Struktur der Attribute für flexible Einschränkungen von loadLimits:

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}