Ziele

Zu den Zielvorhabenattributen gehören „objectives“ in „ShipmentModel“ sowie „type“ und „weight“ in „objectives“.

Mit Zielvorhaben können Sie allgemeine Optimierungsziele angeben, anstatt bestimmte Kostenparameter aus dem Kostenmodell bereitzustellen.

Sie können mehrere Ziele in einer einzelnen Anfrage verwenden und jedem Ziel eine relative Gewichtung zuweisen, um zu steuern, wie stark es die Gesamtoptimierung beeinflusst. Ziele wirken sich auf Ihre gesamte Anfrage aus und beeinflussen alle Ihre Fahrzeuge und Sendungen. Schließlich können Sie auch Zielvorhaben verwenden, um mit der Entwicklung Ihres eigenen Kostenmodells zu beginnen, wie unter Kostenmodell erstellen beschrieben.

Mit Zielvorhaben können Sie die folgenden Auswirkungen auf Ihren Routenplan steuern:

  • Gesamtreisezeit oder ‑strecke Ihrer Routen.
  • Gesamte Arbeitszeit für alle Fahrzeuge.
  • Gesamtzahl der verwendeten Fahrzeuge.

Attribute

Das Attribut objectives ist ein Array von Objective-Nachrichtentypen in ShipmentModel. Jedes Objective definiert ein bestimmtes Optimierungsziel und enthält die in der folgenden Tabelle aufgeführten Felder:

Feld Typ Beschreibung
type Enum Gibt das vordefinierte Optimierungsziel an. Zulässige Werte:
  • DEFAULT: Hier wird ein Standardsatz von Kosten verwendet, um eine Basislösung zu gewährleisten. So wird verhindert, dass extreme Werte verwendet werden, um ein Ziel zu erreichen. DEFAULT wird automatisch Anfragen hinzugefügt, die ein Zielvorhaben enthalten, und zwar mit einem weight von 1.0. Wenn Sie dieses Zielvorhaben aktiv in Ihre Anfrage einbeziehen, wird in der Lösung die von Ihnen angegebene weight verwendet.
  • MIN_DISTANCE: Minimiert die insgesamt zurückgelegte Strecke.
  • MIN_WORKING_TIME: Minimiert die gesamte Arbeitszeit, summiert über alle Fahrzeuge.
  • MIN_TRAVEL_TIME: Minimiert die gesamte Fahrzeit, summiert über alle Fahrzeuge.
  • MIN_NUM_VEHICLES: Minimiert die Anzahl der verwendeten Fahrzeuge.
weight Double Definiert die relative Bedeutung dieses Zielvorhabens. Wenn Sie mehrere Zielvorhaben verwenden, steuert der Wert weight, wie stark dieses spezifische Zielvorhaben die gesamte Routenoptimierung im Vergleich zu den anderen beeinflusst. Das kann eine beliebige nicht negative Zahl sein. Die Summe muss nicht 1 ergeben. Der Standardwert ist 1.0.

Beispiele

Dieser Abschnitt enthält zwei Arten von Beispielen:

  • Ein Codebeispiel, das die Struktur des objectives-Arrays veranschaulicht.
  • Ein Beispiel für eine Anfrage, die das Array objectives enthält.

Codebeispiele

Das folgende Beispiel zeigt die Struktur von objectives:

"objectives": [
  {
    "type": "OBJECTIVE_TYPE",
    "weight": WEIGHT
  }
]

Beispielanfrage

Das folgende Beispiel zeigt die Struktur einer einfachen optimizeTours-Anfrage mit mehreren Zielvorhaben, wobei MIN_TRAVEL_TIME dreimal so wichtig ist wie MIN_WORKING_TIME.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME",
        "weight": 3.0
      },
      {
        "type": "MIN_WORKING_TIME"
      }
    ]
  }
}

Kostenmodell erstellen

Mit Zielvorhaben lassen sich Optimierungsziele schnell festlegen. In einigen Fällen sind sie jedoch möglicherweise nicht spezifisch genug. Um Ihre genauen Routing-Ziele zu erreichen, benötigen Sie möglicherweise die detaillierte Steuerung, die nur über Parameter des Kostenmodells verfügbar ist.

Sie können mit der Entwicklung Ihres eigenen Kostenmodells beginnen, indem Sie Ihrer Anfrage Ziele hinzufügen und diese dann im Lösungsmodus TRANSFORM_AND_RETURN_REQUEST in Kostenmodellparameter umwandeln.

Wenn Sie eine Anfrage mit diesem Lösungsmodus senden, passiert Folgendes:

  • Die API wandelt Ihre Ziele in Parameter für das Kostenmodell um und gibt sie in einem processedRequest zurück. Anschließend können Sie die Parameter des Kostenmodells nach Bedarf anpassen, um Ihren Routenplan zu optimieren.
  • Wenn Sie mehrere Zielvorhaben verwenden, werden die Kosten aller Zielvorhaben in der API kombiniert und anhand der jeweiligen Gewichtungen skaliert.
  • Für diese Anfrage wird Ihnen nichts in Rechnung gestellt, da die API keine optimierte Route bereitstellt, sondern nur die Zielvorhaben in Kostenmodellparameter umwandelt.

Beispielanfrage

Das folgende Beispiel zeigt eine Anfrage mit dem Zielvorhaben MIN_TRAVEL_TIME und dem Lösungsmodus TRANSFORM_AND_RETURN_REQUEST:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME"
      }
    ]
  },
  "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
}

Beispielantwort

Das ist die Antwort auf die vorherige Anfrage. Diese Antwort enthält sowohl die generierten Kostenmodellparameter als auch das ursprüngliche Ziel als Referenz.

{
  "processedRequest": {
    "model": {
      "shipments": [
        {
          "pickups": [
            {
              "arrivalLocation": {
                "latitude": 37.425062610009959,
                "longitude": -122.09535511930135
              }
            }
          ],
          "deliveries": [
            {
              "arrivalLocation": {
                "latitude": 37.424215032060211,
                "longitude": -122.09526063135228
              }
            }
          ]
        }
      ],
      "vehicles": [
        {
          "travelMode": "DRIVING",
          "costPerHour": 30,
          "costPerTraveledHour": 330,
          "costPerKilometer": 0.2
        }
      ],
      "objectives": [
        {
          "type": "MIN_TRAVEL_TIME"
        }
      ]
    },
    "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
  }
}