Os objetivos são parâmetros que podem ser usados para especificar metas de otimização de alto nível em vez de fornecer parâmetros de custo específicos do modelo de custo.
É possível usar vários objetivos em uma única solicitação e atribuir a cada um deles um peso relativo para controlar a influência na otimização geral. Os objetivos afetam todo o pedido, influenciando todos os seus veículos e envios. Por fim, você também pode usar objetivos para iniciar o desenvolvimento do seu próprio modelo de custo, conforme descrito em Gerar um modelo de custo.
É possível usar objetivos para controlar os seguintes impactos no seu plano de rota:
- Tempo total de viagem ou distância dos seus trajetos.
- Tempo total de trabalho em todos os veículos.
- Número total de veículos usados.
Propriedades
A propriedade objectives é uma matriz de tipos de mensagem Objective
em ShipmentModel. Cada Objective define uma
meta de otimização específica e contém os campos listados na tabela
a seguir:
| Campo | Tipo | Descrição |
|---|---|---|
type |
Enumeração |
Especifica a meta de otimização predefinida. Os valores aceitos são:
|
weight |
Duplo |
Define a importância relativa desse objetivo. Ao usar vários objetivos, o valor weight controla a influência desse objetivo específico na otimização geral da rota em comparação com os outros. Pode ser qualquer número não negativo e não precisa somar 1. O valor padrão é 1.0.
|
Exemplos
Esta seção aborda dois tipos de exemplos:
- Um exemplo de código que ilustra a estrutura da matriz
objectives. - Um exemplo de solicitação que inclui a matriz
objectives.
Amostras de código
O exemplo a seguir mostra a estrutura de objectives:
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
Exemplo de solicitação
O exemplo a seguir mostra a estrutura de uma solicitação básica de optimizeTours que incorpora vários objetivos, em que MIN_TRAVEL_TIME é três vezes mais importante que MIN_WORKING_TIME.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
Gerar um modelo de custo
Os objetivos são uma maneira rápida de definir metas de otimização, mas, em alguns casos, eles podem não ser específicos o suficiente. Para atingir suas metas de rotas exatas, talvez seja necessário o controle granular disponível apenas com parâmetros do modelo de custo.
Para começar a desenvolver seu próprio modelo de custo, adicione objetivos à solicitação e converta os objetivos da solicitação em parâmetros do modelo de custo usando o modo de resolução TRANSFORM_AND_RETURN_REQUEST.
Quando você envia uma solicitação usando esse modo de resolução, acontece o seguinte:
- A API converte seus objetivos em parâmetros do modelo de custo e os retorna em um
processedRequest. Em seguida, ajuste os parâmetros do modelo de custo conforme necessário para refinar seu plano de rota. - Ao usar vários objetivos, a API combina os custos de todos os seus objetivos e os dimensiona de acordo com os respectivos pesos.
- Você não vai receber uma cobrança por essa solicitação, já que a API não fornece uma rota otimizada, apenas converte os objetivos em parâmetros de modelo de custo.
Exemplo de solicitação
O exemplo a seguir mostra uma solicitação usando o objetivo MIN_TRAVEL_TIME e o modo de resolução TRANSFORM_AND_RETURN_REQUEST:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" }
Exemplo de resposta
Esta é a resposta correspondente à solicitação anterior. Essa resposta inclui os parâmetros do modelo de custo gerado e o objetivo original para referência.
{ "processedRequest": { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.425062610009959, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.424215032060211, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerHour": 30, "costPerTraveledHour": 330, "costPerKilometer": 0.2 } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" } }