Criar uma mensagem de solicitação

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

  • O modelo captura as configurações e restrições de toda a solicitação, incluindo Shipments e Vehicles.
  • Envios representam tarefas ou envios reais que incluem VisitRequests de coleta e entrega. Os envios têm configurações e restrições locais.
  • Veículos representam veículos, motoristas ou pessoal. 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 em todo o modelo são aplicadas a todos os envios e veículos, enquanto as restrições e propriedades especificadas em envios ou veículos são específicas para um único envio ou veículo.

Para conferir 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, gRPC).

OptimizeToursRequest propriedades

Algumas propriedades usadas com frequência da mensagem OptimizeToursRequest de nível superior (REST, gRPC) incluem:

  • searchMode indica se é necessário retornar a primeira solução que atende a 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 roteamento e estimativa de HEC.
  • populateTransitionPolylines determina se as polilinhas e os tokens de rota são retornados na resposta.

Propriedades do modelo

Algumas propriedades usadas com frequência da mensagem ShipmentModel (REST, gRPC) incluem:

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

Propriedades do envio

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

  • pickups[] e deliveries[] representam onde um envio pode ser retirado ou entregue. As propriedades pickups[] e deliveries[] usam a mensagem VisitRequest (REST, gRPC).
  • loadDemands representa a carga necessária para que um veículo conclua um envio. A propriedade load_limits correspondente dos veículos (REST, gRPC) representa a quantidade de carga que um veículo pode acomodar por vez. Leia mais sobre a carga em Solicitações e limites de carga.
  • penalty_cost representa o custo incorrido se um envio for pulado. Leia mais sobre custos em Parâmetros do modelo de custo.

Propriedades do veículo

Algumas propriedades usadas com frequência da mensagem Vehicle (REST, gRPC) incluem:

  • startLocation representa onde um veículo precisa iniciar o trajeto. Essa propriedade é opcional. Se não for especificado, a rota do veículo vai começar no local do primeiro envio atribuído.
  • endLocation representa onde um veículo precisa terminar o trajeto. Essa propriedade é opcional. Se não for especificado, a rota do veículo vai terminar no local do último frete atribuído.
  • startTimeWindows[] representa quando um veículo pode iniciar a rota. Essa propriedade é opcional.
  • endTimeWindows[] representa quando um veículo pode iniciar e terminar a rota. Ambas as propriedades são opcionais.
  • loadLimits representa a capacidade do veículo disponível para atender às demandas de carga dos envios. Leia mais sobre as demandas e os limites de carga em Demandas e limites de carga.

Um exemplo completo de solicitação no formato JSON é parecido com este:

{
  "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"
  }
}

O OptimizeTours e o 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:

Comparação entre OptimizeTours e BatchOptimizeTours