U ターン回避

U ターン回避は、集荷と配達のオブジェクトの `ShipmentModel.Shipment` にあります。

U ターン回避は、車両が訪問の特定の集荷場所または配達場所で U ターンしないようにするルート最適化機能です。U ターン回避を設定すると、車両が訪問場所に到着したときと出発したときに同じ方向を向くように指定できます。

U ターン回避は次のように機能します。

  1. U ターン回避プロパティは特定の訪問に設定します。
  2. この API は、双方向道路の両方向の移動を考慮して、最適なパスを選択します。
  3. API は、車両が訪問場所で U ターンせずに到着して出発するルートを生成します。この場所に行くには、道路を横断する必要がある場合があります。

このプロパティは、車両のサイズ、交通標識、通常の交通状況により、U ターンが困難または不可能な場合に最適です。

プロパティ

U ターン回避プロパティは、VisitRequest オブジェクト内で定義されます。このオブジェクトは、配送の pickups 配列と deliveries 配列内で使用されます。

プロパティ タイプ 説明
avoidUTurns ブール値 true に設定すると、API は車両がこの訪問場所で U ターンすることを禁止します。車両は同じ方向を向いて到着し、出発します。

このセクションでは、次の 2 種類の例について説明します。

  • U ターン回避の構造を示すコードサンプル。
  • 特徴を含むリクエストの例。

コードサンプル

次の例は、集荷と配達内の avoidUTurns の構造を示しています。

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

リクエストの例

次の例は、U ターン回避を組み込んだ基本的な optimizeTours リクエストを示しています。このリクエストには次の要素が含まれます。

  • model オブジェクト内の集荷と配達を含む配送。
  • avoidUTurns プロパティが、乗車場所と降車場所の両方で true に設定されているため、車両がこれらの停車場所で方向を変えることはありません。
  {
    "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
        }
      ]
    }
  }

sideOfRoad で U ターンを回避する

sideOfRoad は別の機能ですが、目的地に最も近い道路の脇に車両を誘導することで多くの U ターンを回避するため、U ターン回避と密接に関連しています。これにより、車両は特定の方向から訪問場所に近づくため、U ターンを行う必要がなくなります。

実際には、訪問場所に徒歩で安全に道路を渡れる場合に、U ターン回避を使用する必要があります。道路の横断が推奨されない場合や不可能な場合は、代わりに sideOfRoadtrue に設定することを検討してください。

sideOfRoad プロパティは、Waypoint オブジェクト内で定義されます。

他の機能との連携

U ターン回避は、他のルート設定機能と次のように連携します。

  • 道路脇: avoidUTurnssideOfRoad の両方を true に設定すると、車両を訪問場所に最も近い道路脇に誘導しながら、U ターンを回避できる可能性がわずかに高まります。ただし、この方法では、U ターン回避の制限に関連する複雑な処理が追加されます。ほとんどの訪問場所では、これらのプロパティのいずれか 1 つだけを設定すれば、U ターンを回避できます。
  • 挿入されたソリューション: U ターン回避を使用すると、API レスポンスには、生成された ShipmentRoute.Visit 内に injectedSolutionLocationToken が含まれ、選択された道路の側が記録されます。この訪問を将来のリクエストで挿入されたソリューションとして再利用する場合は、このトークンを API に渡す必要があります。

制限事項

U ターン回避はベスト エフォート機能です。API は、次の条件で生成されたルートに U ターンを含める場合があります。

  • トラベルモードが DRIVING 以外のモードに設定されている。
  • 特定の訪問場所の到着場所と出発場所が異なる。この場合、API はエラーを返します。
  • 訪問先は行き止まりの道路にあり、退出するには U ターンが必要です。
  • U ターンは実際の訪問場所ではなく、ルートに沿って行われます。
  • この操作は、別の道路への急な曲がり角であり、API はこれを U ターンとして分類しません。