U턴 회피

U턴 방지는 픽업 및 배송 객체의 `ShipmentModel.Shipment` 에 있습니다.

유턴 방지는 방문의 특정 픽업 또는 배송 위치에서 차량이 유턴하지 못하도록 하는 경로 최적화 기능입니다. 유턴 방지를 설정하면 차량이 방문 위치에 도착할 때와 떠날 때 동일한 방향을 향해야 한다고 지정합니다.

유턴 방지는 다음과 같이 작동합니다.

  1. 특정 방문에 유턴 방지 속성을 설정합니다.
  2. API는 양방향 도로에서 이동 방향을 모두 고려하고 가장 최적의 경로를 선택합니다.
  3. API는 차량이 방문 위치에서 유턴하지 않고 도착하고 떠나는 경로를 생성합니다. 운전자는 이 위치에 도달하기 위해 도로를 건너야 할 수 있습니다.

이 속성은 차량 크기, 교통 표지판 또는 평상시 교통상황으로 인해 유턴이 어렵거나 불가능한 상황에 적합합니다.

속성

유턴 방지 속성은 VisitRequest 객체 내에 정의됩니다. 이 객체는 배송의 pickupsdeliveries 배열 내에서 사용됩니다.

속성 유형 설명
avoidUTurns 부울 true로 설정하면 API는 차량이 이 방문 위치에서 유턴하지 못하도록 합니다. 차량이 동일한 방향을 향한 채 도착하고 떠납니다.

이 섹션에서는 두 가지 유형의 예를 다룹니다.

  • 유턴 방지 구조를 보여주는 코드 샘플
  • 기능이 포함된 요청 예

코드 샘플

다음 예는 픽업 및 배송 내에서 avoidUTurns의 구조를 보여줍니다.

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

요청 예

다음 예는 유턴 방지를 통합하는 기본 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로 유턴 방지

sideOfRoad는 별도의 기능이지만 차량을 목적지에 가장 가까운 도로변으로 라우팅하여 많은 유턴을 방지하므로 유턴 방지와 밀접한 관련이 있습니다. 이렇게 하면 차량이 특정 방향에서 방문 위치에 접근하게 되므로 유턴할 필요가 없습니다.

실제로 방문 위치에 도달하기 위해 도로를 걸어서 건너는 것이 안전한 경우 유턴 방지를 사용해야 합니다. 도로를 건너는 것이 권장되지 않거나 불가능한 경우 대신 sideOfRoadtrue 로 설정하는 것이 좋습니다.

sideOfRoad 속성은 Waypoint 객체 내에 정의됩니다.

다른 기능과의 상호작용

유턴 방지는 다음과 같은 방식으로 다른 라우팅 기능과 상호작용합니다.

  • 도로변: avoidUTurnssideOfRoadtrue로 모두 설정하면 차량을 방문 위치에 가장 가까운 도로변으로 라우팅하는 동안 유턴을 방지할 가능성이 약간 높아집니다. 하지만 이렇게 하면 유턴 방지 제한사항과 관련된 추가 복잡성이 발생합니다. 대부분의 방문 위치에서 이러한 속성 중 하나만 설정해도 유턴을 방지할 수 있습니다.
  • 삽입된 솔루션: 유턴 방지를 사용하면 API 응답에 생성된 ShipmentRoute.Visit 내에 injectedSolutionLocationToken이 포함되어 선택한 도로변을 기록합니다. 향후 요청에서 이 방문을 삽입된 솔루션으로 재사용하는 경우 이 토큰을 API로 다시 전달해야 합니다.

제한사항

유턴 방지는 최선의 노력 방식으로 제공되는 기능입니다. 다음 조건에서는 API가 생성된 경로에 유턴을 포함할 수 있습니다.

  • 이동 모드가 DRIVING 이외의 모드로 설정되어 있습니다.
  • 특정 방문 위치의 도착 및 출발 위치가 다릅니다. 이 경우 API는 오류를 반환합니다.
  • 방문이 막다른 도로에 있어 나가려면 유턴해야 합니다.
  • 유턴이 실제 방문 위치가 아닌 경로를 따라 발생합니다.
  • 기동은 API에서 유턴으로 분류하지 않는 다른 도로로의 매우 급격한 회전입니다.