Interpretar a resposta

Desenvolvedores do Espaço Econômico Europeu (EEE)

A API Route Optimization retorna rotas para veículos na solicitação correspondente. Os envios são atribuídos a veículos ou podem ser ignorados, dependendo das propriedades da solicitação.

Uma mensagem OptimizeToursResponse (REST, gRPC) tem duas propriedades principais de nível superior:

  • routes[] são as rotas de cada veículo com os envios atribuídos. Cada Route contém métricas que refletem as propriedades desse trajeto individual.
  • metrics são métricas agregadas para toda a resposta, em todos os veículos e planos de rota. As métricas de nível superior contêm as mesmas propriedades das métricas por rota, com valores agregados em todas as rotas.

Algumas propriedades nem sempre são preenchidas, dependendo dos resultados da otimização:

  1. skippedShipments[] lista os envios que não são realizados por nenhum veículo. Um envio pode ser ignorado se não puder ser realizado dentro das restrições especificadas ou se o custo para realizar o envio exceder o custo da penalidade. Por exemplo, se a coleta ou entrega de um envio tiver uma timeWindow muito estreita, talvez não seja possível ou econômico para um veículo realizar a visita durante a janela de tempo necessária.
  2. validationErrors[] especifica erros que tornam a solicitação inválida ou impossível de resolver quando o solvingMode da solicitação está definido como VALIDATE_ONLY. No modo DEFAULT_SOLVE normal, os erros de validação aparecem em uma mensagem de erro em vez do corpo da resposta. O modo de resolução VALIDATE_ONLY pode informar vários erros de uma só vez, o que é útil para depurar solicitações rapidamente.

Propriedades de rota

Cada entrada routes[] é uma mensagem ShipmentRoute (REST, gRPC). Cada ShipmentRoute representa a atribuição de rota para um veículo específico da solicitação. As propriedades importantes de ShipmentRoute relacionadas ao Vehicle correspondente incluem:

  • vehicleIndex é o índice baseado em zero do Vehicle na mensagem de solicitação correspondente. As respostas REST omitem essa propriedade quando o valor é zero.
  • vehicleStartTime é o horário em que o veículo precisa começar a rota.
  • vehicleEndTime é o horário em que o veículo deve terminar a rota.

Em uma resposta, routes será semelhante a:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        ...
      ],
      "transitions": [
        ...
      ],
      "metrics": {
        ...
      },
      ...
    }
  ],
  ...
}

Cada ShipmentRoute inclui uma lista ordenada de visits que o veículo vai concluir. Cada Visit (REST, gRPC) representa um VisitRequest (REST, gRPC) da solicitação correspondente. As propriedades importantes de Visit incluem:

  • shipmentIndex é o índice baseado em zero do envio a que essa visita pertence na solicitação correspondente.
  • isPickup é verdadeiro quando uma visita é uma coleta e falso quando uma visita é uma entrega. As respostas REST omitem essa propriedade quando o valor é falso.
  • visitRequestIndex é o índice baseado em zero do VisitRequest de Shipment.pickups ou Shipment.deliveries na solicitação correspondente que o Visit representa. As respostas REST omitem essa propriedade quando o valor é zero.
  • startTime é o horário em que a visita deve começar.
  • loadDemands mapeia o tipo de carga para a quantidade de carga exigida para concluir a Visit. Os valores de carga são negativos para visitas de entrega, representando a carga que está sendo removida do veículo.

Um exemplo de Visit é:

{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}

Cada ShipmentRoute inclui uma lista ordenada de transitions que representam viagens entre visits para um determinado veículo. As propriedades importantes da mensagem Transition (REST, gRPC) incluem:

  • startTime é o horário em que o veículo vai começar a realizar a transição.
  • travelDuration é a duração da viagem do veículo para concluir a transição.
  • travelDistanceMeters é a distância em metros que o veículo precisa percorrer para concluir a transição.
  • trafficInfoUnavailable indica se as informações de trânsito estão disponíveis para a transição.
  • waitDuration representa o tempo de inatividade que o veículo passa esperando antes de poder iniciar a próxima Visit. Isso pode ocorrer devido ao start_time da Visit a seguir.
  • totalDuration é a duração total da transição, incluindo tempos de viagem, espera, pausa e atraso.
  • vehicleLoads mapeia o tipo de carga para a quantidade de carga transportada pelo veículo durante essa transição.

Um exemplo de Transition é:

{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}

Para mais informações sobre a relação entre vists e transitions, consulte Otimização da ordem de paradas de coleta e entrega e a ShipmentRoute documentação de referência (REST, gRPC). Para mais informações sobre as routePolyline e routeToken propriedades de uma Transition mensagem, consulte Polilinhas de transição e tokens de rota.

Propriedades de métricas

A mensagem Metrics (REST, gRPC) resume toda a solução. Algumas propriedades importantes de Metrics incluem:

  • totalCost é o custo total incorrido na conclusão das rotas. Saiba mais sobre os custos em Parâmetros do modelo de custo.
  • usedVehicleCount é o número total de veículos usados na solução. Os veículos podem ter rotas vazias quando o otimizador determina que o uso deles não é necessário.
  • skippedMandatoryShipmentCount é o número de envios ignorados que são "obrigatórios". Um envio obrigatório não especifica um penaltyCost que é incorrido se o envio for ignorado. Os envios obrigatórios ainda podem ser ignorados se a performance deles não for viável nas restrições especificadas. Saiba mais sobre os custos em Parâmetros do modelo de custo.

Outras métricas são informadas como mensagens AggregatedMetrics (REST, gRPC). O tipo de mensagem AggregatedMetrics é usado para a propriedade Metrics.aggregatedRouteMetrics e para a propriedade ShipmentRoute.metrics . Metrics.aggregatedRouteMetrics contém métricas agregadas em todos os ShipmentRoutes no OptimizeToursResponse. Cada ShipmentRoute.metrics propriedade contém métricas para esse ShipmentRoute específico.

As propriedades importantes de AggregatedMetrics incluem:

  • performedShipmentCount é o número de envios realizados por veículos em todas as rotas.
  • travelDuration é o tempo total que os veículos passam em trânsito ao concluir as rotas.
  • waitDuration é o tempo total que os veículos passam esperando ao concluir as rotas.
  • delayDuration é o tempo total de atraso dos veículos. Geralmente, esse valor é zero, a menos que TransitionAttributes sejam usados na solicitação.
  • breakDuration é o tempo total que os veículos passam em pausas ao concluir as rotas.
  • visitDuration é o tempo total que os veículos passam realizando visitas ao concluir as rotas. Esse é efetivamente a soma de todos os VisitRequest.duration valores para VisitRequests correspondentes a Visits atribuídos ao veículo aplicável.
  • totalDuration é a duração total necessária para concluir as rotas dos veículos.
  • travelDistanceMeters é a distância total percorrida pelos veículos ao concluir as rotas.
  • maxLoads mapeia os tipos de carga para a quantidade máxima de carga transportada pelos veículos em qualquer ponto das rotas.

Um exemplo de mensagem Metrics é:

{
  "routes": [
    ...
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}

Exemplo completo

Um exemplo de resposta completa para a solicitação de Criar uma solicitação é:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2024-02-13T00:19:31Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1151s",
          "travelDistanceMeters": 9599,
          "waitDuration": "0s",
          "totalDuration": "1151s",
          "startTime": "2024-02-13T00:19:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2322s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2322s",
        "travelDistanceMeters": 18603
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 18.603
      },
      "routeTotalCost": 18.603
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}