Evasão do retorno em U

A prevenção de inversão de marcha está presente em "ShipmentModel.Shipment" nos objetos de coleta e entrega.

A prevenção de retornos é um recurso de otimização de rotas que impede que os veículos façam retornos no local específico de coleta ou entrega de uma visita. Ao definir a prevenção de retornos, você especifica que o veículo deve estar na mesma direção ao chegar e sair de um local de visita.

A prevenção de retornos funciona da seguinte maneira:

  1. Você define a propriedade de prevenção de retornos em uma visita específica.
  2. A API considera as duas direções de viagem em vias de mão dupla e escolhe o caminho mais adequado.
  3. A API gera um trajeto em que o veículo chega e sai sem fazer um retorno no local da visita. O motorista pode precisar atravessar a rua para chegar a esse local.

Essa propriedade é ideal para situações em que fazer um retorno é difícil ou impossível devido ao tamanho do veículo, placas de trânsito ou condições de trânsito normais.

Propriedades

A propriedade de prevenção de retornos é definida no VisitRequest objeto. Esse objeto é usado nas matrizes pickups e deliveries de uma remessa.

Propriedade Tipo Descrição
avoidUTurns booleano Quando definido como true, a API impede que o veículo faça um retorno nesse local de visita. O veículo vai chegar e sair na mesma direção.

Exemplos

Esta seção abrange dois tipos de exemplos:

  • Amostras de código que ilustram a estrutura da prevenção de retornos.
  • Um exemplo de solicitação que inclui o recurso.

Amostras de código

O exemplo a seguir mostra a estrutura de avoidUTurns em uma retirada e uma entrega:

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

Exemplo de solicitação

O exemplo a seguir mostra uma solicitação básica de optimizeTours que incorpora a prevenção de retornos. Essa solicitação inclui os seguintes elementos:

  • Uma remessa com uma coleta e uma entrega dentro do objeto model.
  • A propriedade avoidUTurns definida como true nos locais de retirada e entrega para impedir que o veículo mude de direção nessas paradas.
  {
    "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
        }
      ]
    }
  }

Evitar retornos com sideOfRoad

Embora sideOfRoad seja um recurso separado, ele está intimamente relacionado à prevenção de retornos , porque impede muitos retornos ao direcionar o veículo para o lado da estrada mais próximo do destino. Isso força o veículo a se aproximar de um local de visita em uma direção específica, o que elimina a necessidade de fazer um retorno.

Na prática, use a prevenção de retornos quando for seguro atravessar a rua a pé para chegar ao local da visita. Se atravessar a rua não for recomendado ou possível, considere definir sideOfRoad como true em vez disso.

A propriedade sideOfRoad é definida em um objeto Waypoint.

Interação com outros recursos

A prevenção de retornos interage com outros recursos de roteamento das seguintes maneiras:

  • Lado da estrada: definir avoidUTurns e sideOfRoad como true aumenta ligeiramente as chances de evitar um retorno ao direcionar o veículo para o lado da estrada mais próximo do local da visita. No entanto, isso introduz complexidades extras relacionadas às restrições da prevenção de retornos. Para a maioria dos locais de visita, definir apenas uma dessas propriedades é suficiente para evitar retornos.
  • Soluções injetadas: quando você usa a prevenção de retornos, a resposta da API inclui um injectedSolutionLocationToken dentro do ShipmentRoute.Visit gerado para registrar o lado da estrada selecionado. Se você reutilizar essa visita como uma solução injetada em uma solicitação futura, será necessário transmitir esse token de volta para a API.

Limitações

A prevenção de retornos é um recurso de melhor esforço. A API ainda pode incluir retornos em um trajeto gerado nas seguintes condições:

  • O modo de viagem está definido como um modo diferente de DRIVING.
  • Os locais de chegada e partida de um local de visita específico são diferentes. Nesse caso, a API retorna um erro.
  • A visita está localizada em uma rua sem saída, exigindo um retorno para sair.
  • O retorno ocorre ao longo do trajeto, e não no local da visita.
  • A manobra é uma curva muito acentuada em uma estrada diferente, que a API não classifica como um retorno.