Criar uma mensagem de solicitação

Como descrito resumidamente em Visão geral da otimização de rotas, uma solicitação básica consiste em Modelo, Envios e Veículos como entidades obrigatórias:

  • Modelo captura configurações e restrições para toda a solicitação, incluindo Shipments e Vehicles.
  • As remessas representam tarefas ou remessas reais que incluem VisitRequests de coleta e entrega. As remessas têm configurações e restrições locais.
  • Veículos representam veículos, motoristas ou funcionários. Os veículos também têm configurações e restrições locais.

As propriedades de cada entidade descrevem parte de um problema de otimização em um nível específico de granularidade. As restrições do modelo são aplicadas a todas as remessas e veículos, enquanto as restrições e propriedades especificadas nas remessas ou veículos são específicas para uma única remessa ou veículo.

Para consultar a documentação completa sobre cada tipo de mensagem, consulte a documentação de referência para mensagens ShipmentModel (REST, gRPC), Shipment (REST, gRPC) e Vehicle (REST e gRPC).

OptimizeToursRequest propriedades

Algumas propriedades comumente usadas da mensagem OptimizeToursRequest de nível superior (REST, gRPC) incluem:

  • searchMode indica se é necessário retornar a primeira solução que satisfaça as restrições especificadas ou encontrar a melhor solução possível dentro de um prazo definido.
  • considerRoadTraffic determina se o tráfego em tempo real é usado ou não para rota e estimativa de HEC.
  • populateTransitionPolylines determina se as polilinhas de rota são ou não retornadas na resposta.

Propriedades do modelo

Algumas propriedades comumente usadas da mensagem ShipmentModel (REST, gRPC) incluem:

  • globalStartTime representa o horário de início mais antigo dos trajetos em todos os veículos e remessas. Nenhum veículo pode iniciar suas primeiras transições e envios antes desse período.
  • globalEndTime representa o horário de término mais recente das rotas em todos os veículos e remessas. Todas as remessas e transições atribuídas precisam ser concluídas antes desse período.

Propriedades do envio

Algumas propriedades comumente usadas da mensagem Shipment (REST, gRPC) incluem:

  • pickups[] e deliveries[] representam o local em que uma remessa pode ser retirada ou descartada. As propriedades pickups[] e deliveries[] usam a mensagem VisitRequest (REST, gRPC).
  • loadDemands representam a carga necessária para que um veículo conclua um envio. A propriedade load_limits (REST, gRPC) correspondente dos veículos representa quanta carga um veículo pode acomodar ao mesmo tempo. Leia mais sobre a carga em Demandas e limites de carga.
  • penalty_cost representa o custo incorrido se um frete for pulado. Leia mais sobre custos em Parâmetros do modelo de custo.

Propriedades do veículo

Algumas propriedades comumente usadas da mensagem Vehicle (REST, gRPC) incluem:

  • startLocation representa o ponto em que um veículo precisa iniciar o trajeto. Essa propriedade é opcional. Se não for especificado, o trajeto do veículo começará no local da primeira remessa atribuída.
  • endLocation representa o local onde um veículo precisa encerrar o trajeto. Essa propriedade é opcional. Se não for especificado, o trajeto do veículo terminará no local da última remessa atribuída.
  • startTimeWindows[] representa quando um veículo pode iniciar um trajeto. Essa propriedade é opcional.
  • endTimeWindows[] representa quando um veículo pode iniciar e encerrar um trajeto. As duas propriedades são opcionais.
  • loadLimits representa a capacidade disponível do veículo para atender às demandas de carga das remessas. Leia mais sobre as demandas e limites de carga em Demandas e limites de carga.

Um exemplo de solicitação completo no formato JSON é semelhante a:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

OptimizeTours e BatchOptimizeTours consomem mensagens de solicitação como o exemplo acima, mas de maneiras diferentes. Antes de fazer uma solicitação de otimização de rotas, é importante entender a diferença entre os dois métodos:

Comparar OptimizeTours e BatchOptimizeTours