Kehrtwende

Die Vermeidung von Wendemanövern ist in `ShipmentModel.Shipment` in den Abhol- und Lieferobjekten vorhanden.

Die Funktion „Keine Wendemanöver“ optimiert die Routen so, dass Fahrzeuge am jeweiligen Abhol- oder Lieferort eines Besuchs nicht wenden. Wenn Sie die Vermeidung von Wendemanövern festlegen, geben Sie an, dass das Fahrzeug bei der Ankunft und beim Verlassen eines Besuchsorts in dieselbe Richtung fahren soll.

Die Funktion „U-Turns vermeiden“ funktioniert so:

  1. Sie legen die Eigenschaft für das Vermeiden von U-Turns für einen bestimmten Besuch fest.
  2. Die API berücksichtigt beide Fahrtrichtungen auf zweispurigen Straßen und wählt den optimalsten Weg aus.
  3. Die API generiert eine Route, auf der das Fahrzeug ankommt und wieder abfährt, ohne am Besuchsort zu wenden. Der Fahrer muss möglicherweise die Straße überqueren, um diesen Ort zu erreichen.

Diese Eigenschaft ist ideal für Situationen, in denen das Wenden aufgrund der Fahrzeuggröße, der Verkehrszeichen oder der üblichen Verkehrsbedingungen schwierig oder unmöglich ist.

Attribute

Die Einstellung zum Vermeiden von Wendemanövern wird im Objekt VisitRequest definiert. Dieses Objekt wird in den Arrays pickups und deliveries einer Sendung verwendet.

Attribut Typ Beschreibung
avoidUTurns boolean Wenn der Wert auf true festgelegt ist, verhindert die API, dass das Fahrzeug an diesem Besuchsort wendet. Das Fahrzeug kommt an und fährt in dieselbe Richtung wieder ab.

Beispiele

Dieser Abschnitt enthält zwei Arten von Beispielen:

  • Codebeispiele, die die Struktur der Vermeidung von Wendemanövern veranschaulichen.
  • Ein Anfragebeispiel, das das Feature enthält.

Codebeispiele

Das folgende Beispiel zeigt die Struktur von avoidUTurns bei einer Abholung und einer Zustellung:

"pickups":[
  {
    "arrivalLocation": {
      "latitude": 37.42506261000996,
      "longitude": -122.09535511930135
    },
    "avoidUTurns": true
  }
],
"deliveries":[
  {
    "arrivalLocation": {
      "latitude": 37.42421503206021,
      "longitude": -122.09526063135228
    },
    "avoidUTurns": true
  }
]

Beispielanfrage

Das folgende Beispiel zeigt eine einfache optimizeTours-Anfrage, die das Vermeiden von U-Turns berücksichtigt. Diese Anfrage enthält die folgenden Elemente:

  • Eine Sendung mit Abholung und Zustellung im model-Objekt.
  • Das Attribut avoidUTurns ist sowohl für den Abhol- als auch für den Lieferort auf true festgelegt, damit das Fahrzeug an diesen Haltestellen nicht die Richtung ändert.
  {
    "model": {
      "shipments":[
        {
          "pickups":[
            {
              "arrivalLocation": {
                "latitude": 37.42506261000996,
                "longitude": -122.09535511930135
              },
              "avoidUTurns": true
            }
          ],
          "deliveries":[
            {
              "arrivalLocation": {
                "latitude": 37.42421503206021,
                "longitude": -122.09526063135228
              },
              "avoidUTurns": true
            }
          ]
        }
      ],
      "vehicles":[
        {
          "travelMode": "DRIVING",
          "costPerKilometer": 1.0
        }
      ]
    }
  }

Mit sideOfRoad Wendemanöver vermeiden

sideOfRoad ist zwar eine separate Funktion, aber eng mit der Vermeidung von Wendemanövern verbunden, da viele Wendemanöver verhindert werden, indem das Fahrzeug auf die Straßenseite geleitet wird, die dem Ziel am nächsten ist. So wird das Fahrzeug gezwungen, sich einem Besuchsort aus einer bestimmten Richtung zu nähern, sodass keine Kehrtwende erforderlich ist.

In der Praxis sollten Sie die Vermeidung von Wendemanövern verwenden, wenn es sicher ist, die Straße zu Fuß zu überqueren, um zum Besuchsort zu gelangen. Wenn das Überqueren der Straße nicht empfohlen wird oder nicht möglich ist, sollten Sie sideOfRoad stattdessen auf true festlegen.

Die Property sideOfRoad wird in einem Waypoint-Objekt definiert.

Interaktion mit anderen Funktionen

Die Vermeidung von Wendemanövern interagiert mit anderen Routingfunktionen auf folgende Weise:

  • Straßenseite:Wenn Sie sowohl avoidUTurns als auch sideOfRoad auf true setzen, erhöht sich die Wahrscheinlichkeit, dass ein Wendemanöver vermieden wird, während das Fahrzeug zu der Straßenseite geleitet wird, die dem Besuchsort am nächsten liegt. Dies führt jedoch zu zusätzlichen Komplexitäten im Zusammenhang mit den Einschränkungen der U-Turn-Vermeidung. Für die meisten Besuchsstandorte reicht es aus, nur eine dieser Eigenschaften festzulegen, um Wendemanöver zu vermeiden.
  • Eingefügte Lösungen:Wenn Sie die U-Turn-Vermeidung verwenden, enthält die API-Antwort ein injectedSolutionLocationToken innerhalb des generierten ShipmentRoute.Visit, um aufzuzeichnen, welche Straßenseite ausgewählt wurde. Wenn Sie diesen Besuch jemals als eingefügte Lösung in einer zukünftigen Anfrage wiederverwenden, müssen Sie dieses Token an die API zurückgeben.

Beschränkungen

Die Funktion zum Vermeiden von U-Turns ist eine Best-Effort-Funktion. Die API kann unter den folgenden Bedingungen weiterhin Wendemanöver in eine generierte Route einfügen:

  • Der Reisemodus ist auf einen anderen Modus als DRIVING eingestellt.
  • Die Ankunfts- und Abfahrtsorte für einen bestimmten Besuchsort sind unterschiedlich. In diesem Fall gibt die API einen Fehler zurück.
  • Der Besuch befindet sich in einer Sackgasse, sodass zum Verlassen eine Kehrtwende erforderlich ist.
  • Das Wendemanöver erfolgt entlang der Route und nicht am eigentlichen Besuchsort.
  • Das Manöver ist eine sehr scharfe Kurve auf eine andere Straße, die von der API nicht als Wendemanöver eingestuft wird.