Ladeanforderungen und -limits

Die Property „loadDemands“ wird 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 Lieferung 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 beobachten, wenn Lieferungen abgeholt und zugestellt werden
  • Zuordnung von Schwerlastfahrzeugen zu Schwerlastlieferungen priorisieren

Lastanforderungen und ‑limits werden in diesen Attributen angegeben:

  • loadDemands gibt die Kapazität an, die für eine bestimmte Lieferung 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. Diese Liste kann Ihnen helfen, Ihre Anfrage zu validieren und Fehler in Ihrer Antwort zu beheben.

Properties

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 Lieferungen und Fahrzeuge anwenden. Ein einzelner Lasttyp gilt sowohl für die Lastanforderung einer Lieferung als auch für das Lastlimit eines Fahrzeugs.

Für Lasttypen wird die Syntax des Map-Typs von Protocol Buffers verwendet. Verwenden Sie beim Benennen eines Lasttyps Kennungen, 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 spezifische Attribute, um die Kapazitätsanforderungen für Lieferungen und Fahrzeuge zu definieren. In der folgenden Tabelle werden diese Attribute beschrieben:

Objekt Hat Kinder Attribut Property-Typ Property-Beschreibung
Load loadDemands amount String (Format „int64“) Definiert die Kapazitätsanforderung der Lieferung 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

Im folgenden Beispiel wird die Struktur einer Lastanforderung gezeigt, 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": [ ...
    ]
  }
}

Im folgenden Beispiel wird die einfachste Struktur eines Lastlimits gezeigt, bei der Sie den loadLimits Typ als String und das maxLoad Attribut 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 Hundetagesgeschäft betreiben und eine Route optimieren, um einige Hunde in einem Fahrzeug mit einer begrenzten Anzahl von Transportboxen zu transportieren.

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

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

Hat Kinder Attribut Typ Wert Szenario
loadDemands Lasttyp String dogUnit Definiert den Lasttyp für die Lieferung. In diesem Beispiel wird dogUnit verwendet, wobei jede dogUnit einen Hund darstellt.
loadDemands amount Zahl 1. Lieferung: 1
2. Lieferung: 3
Gibt die Menge des definierten Lasttyps an. In diesem Beispiel definieren Sie zwei Lieferungen. Bei der ersten Lieferung holen Sie einen Hund ab, bei der zweiten drei Hunde.
loadLimits Lasttyp String dogUnit Definiert den Typ des Lastlimits, das auf das Fahrzeug angewendet wird. Dieser Wert muss mit dem Lasttyp der Lieferung ü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 Lieferungen und wie die einzelnen Lieferungen die Lastlimits des Fahrzeugs nutzen:

Das Fahrzeug beginnt die Route mit sechs leeren Feldern, die die Ladegrenzen des Fahrzeugs darstellen. Für die erste Sendung ist Platz für einen Hund erforderlich, für die zweite Sendung für drei Hunde. Am Ende sind 4 der 6 Plätze belegt und 2 Plätze bleiben frei.

In diesem Beispiel haben die Lastanforderungen der einzelnen Lieferungen und die Lastlimits des Fahrzeugs folgende 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önnten Sie den Lasttyp von „Hundeeinheiten“ in „Gewichtseinheiten“ ändern, um das Gewicht der Hunde zu begrenzen, oder in „Lineare Maßeinheiten“, 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 Lieferung 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.

Weiche Lastlimits

Sie können Lastlimits als weiche 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 Routenplanung Vorrang vor der strikten Einhaltung des Lastlimits hat.

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

Properties

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

Hat Kinder Property-Name Property-Typ Property-Beschreibung
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 softMaxLoad verwendet wird. Weitere Informationen zu Kosten finden Sie unter Schlüsselkonzept: Kostenmodell.

Codebeispiel

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

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