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 Model, Shipments e Vehicles como entidades obrigatórias:

  • Modelo: captura configurações e restrições para toda a solicitação, incluindo Shipments e Vehicles.
  • Remessas representam tarefas ou remessas reais que incluem VisitRequests de retirada 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 em todo o modelo são aplicadas a todas as remessas e veículos, enquanto as restrições e propriedades especificadas em remessas ou veículos são específicas de uma única remessa ou veículo.

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

OptimzeToursRequest propriedades

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

  • searchMode indica se é necessário retornar a primeira solução que atenda às restrições especificadas ou encontrar a melhor solução possível dentro de um prazo definido.
  • considerRoadTraffic determina se o trânsito em tempo real é usado para trajetos e estimativas de HEC.
  • populateTransitionPolylines determina se as polilinhas do trajeto são retornadas na resposta.

Propriedades do modelo

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

  • globalStartTime representa o primeiro horário de início dos trajetos em todos os veículos e fretes. Nenhum veículo pode iniciar suas primeiras transições e envios antes desse período.
  • globalEndTime representa o último horário de término dos trajetos em todos os veículos e fretes. 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 onde uma remessa pode ser retirada ou entregue. As propriedades pickups[] e deliveries[] usam a mensagem VisitRequest (REST, gRPC).
  • loadDemands representa a carga necessária para um veículo concluir um envio. A propriedade load_limits correspondente (REST, gRPC) dos veículos representa a quantidade de carga que um veículo pode acomodar de uma só vez. Leia mais sobre carga em Demandas e limites de carga.
  • penalty_cost representa o custo incorrido se uma remessa for pulada. Leia mais sobre os custos em Parâmetros do modelo de custo.

Propriedades do veículo

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

  • startLocation representa onde um veículo precisa iniciar o trajeto. Essa propriedade é opcional. Se não for especificado, o trajeto do veículo vai começar no local da primeira remessa atribuída.
  • endLocation representa 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 seu trajeto. Essa propriedade é opcional.
  • endTimeWindows[] representa quando um veículo pode começar e terminar seu trajeto. As duas propriedades são opcionais.
  • loadLimits representam a capacidade do veículo disponível para atender às demandas de carga das remessas. Leia mais sobre demandas e limites de carga em Demandas e limites de carga.

Um exemplo completo de solicitação no formato JSON é semelhante a 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"
  }
}

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 rota, é importante entender a diferença entre os dois métodos:

Como comparar OptimizeTours e BatchOptimizeTours