Índice
RouteOptimization(interface)AggregatedMetrics(mensagem)BatchOptimizeToursMetadata(mensagem)BatchOptimizeToursRequest(mensagem)BatchOptimizeToursRequest.AsyncModelConfig(mensagem)BatchOptimizeToursResponse(mensagem)BreakRule(mensagem)BreakRule.BreakRequest(mensagem)BreakRule.FrequencyConstraint(mensagem)DataFormat(enum)DistanceLimit(mensagem)GcsDestination(mensagem)GcsSource(mensagem)InjectedSolutionConstraint(mensagem)InjectedSolutionConstraint.ConstraintRelaxation(mensagem)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(mensagem)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(enum)InputConfig(mensagem)Location(mensagem)OptimizeToursLongRunningMetadata(mensagem)OptimizeToursRequest(mensagem)OptimizeToursRequest.SearchMode(enum)OptimizeToursRequest.SolvingMode(enum)OptimizeToursResponse(mensagem)OptimizeToursResponse.Metrics(mensagem)OptimizeToursUriMetadata(mensagem)OptimizeToursUriRequest(mensagem)OptimizeToursUriResponse(mensagem)OptimizeToursValidationError(mensagem)OptimizeToursValidationError.FieldReference(mensagem)OutputConfig(mensagem)RouteModifiers(mensagem)Shipment(mensagem)Shipment.Load(mensagem)Shipment.VisitRequest(mensagem)ShipmentModel(mensagem)ShipmentModel.DurationDistanceMatrix(mensagem)ShipmentModel.DurationDistanceMatrix.Row(mensagem)ShipmentModel.Objective(mensagem)ShipmentModel.Objective.Type(enum)ShipmentModel.PrecedenceRule(mensagem)ShipmentRoute(mensagem)ShipmentRoute.Break(mensagem)ShipmentRoute.EncodedPolyline(mensagem)ShipmentRoute.Transition(mensagem)ShipmentRoute.VehicleLoad(mensagem)ShipmentRoute.Visit(mensagem)ShipmentTypeIncompatibility(mensagem)ShipmentTypeIncompatibility.IncompatibilityMode(enum)ShipmentTypeRequirement(mensagem)ShipmentTypeRequirement.RequirementMode(enum)SkippedShipment(mensagem)SkippedShipment.Reason(mensagem)SkippedShipment.Reason.Code(enum)TimeWindow(mensagem)TransitionAttributes(mensagem)Uri(mensagem)Vehicle(mensagem)Vehicle.DurationLimit(mensagem)Vehicle.LoadLimit(mensagem)Vehicle.LoadLimit.Interval(mensagem)Vehicle.LoadLimit.LoadCost(mensagem)Vehicle.TravelMode(enum)Vehicle.UnloadingPolicy(enum)VehicleFullness(mensagem)Waypoint(mensagem)
RouteOptimization
Um serviço para otimizar tours de veículos.
Validade de determinados tipos de campos:
google.protobuf.Timestamp- Os horários estão no formato Unix: segundos desde 1970-01-01T00:00:00+00:00.
- Os segundos precisam estar no intervalo [0, 253402300799], ou seja, em [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- nanos precisa ser indefinido ou definido como 0.
google.protobuf.Duration- Os segundos precisam estar no intervalo [0, 253402300799], ou seja, em [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- nanos precisa ser indefinido ou definido como 0.
google.type.LatLng- A latitude precisa estar no intervalo [-90,0, 90,0].
- A longitude precisa estar no intervalo [-180.0, 180.0].
- pelo menos uma das coordenadas (latitude ou longitude) precisa ser diferente de zero.
| BatchOptimizeTours |
|---|
|
Otimiza os trajetos de veículos para uma ou mais mensagens Esse método é uma operação de longa duração (LRO, na sigla em inglês). As entradas para otimização (mensagens O usuário pode pesquisar Se o campo Se o campo
|
| OptimizeTours |
|---|
|
Envia um Um modelo O objetivo é fornecer uma atribuição de
|
| OptimizeToursLongRunning |
|---|
|
É uma variante do método A Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request para mais detalhes.
|
| OptimizeToursUri |
|---|
|
Esta é uma variante do método O cliente especifica o URI do Esse método é preferível ao A Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request para mais detalhes.
|
AggregatedMetrics
Métricas agregadas para ShipmentRoute (respectivamente para OptimizeToursResponse em todos os elementos Transition e/ou Visit (respectivamente em todos os elementos ShipmentRoute).
| Campos | |
|---|---|
performed_shipment_count |
Número de envios realizados. Um par de retirada e entrega só é contado uma vez. |
travel_duration |
A duração total da viagem para uma rota ou solução. |
wait_duration |
Duração total da espera para uma rota ou solução. |
delay_duration |
Duração total do atraso de um trajeto ou uma solução. |
break_duration |
Duração total do intervalo para uma rota ou solução. |
visit_duration |
Duração total da visita para um trajeto ou uma solução. |
total_duration |
A duração total precisa ser igual à soma de todas as durações acima. Para rotas, também corresponde a: |
travel_distance_meters |
Distância total percorrida de um trajeto ou uma solução. |
max_loads |
Carga máxima alcançada em toda a rota (ou solução), para cada uma das quantidades nessa rota (ou solução), calculada como o máximo em todos os |
performed_mandatory_shipment_count |
Número de envios obrigatórios realizados. Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
performed_shipment_penalty_cost_sum |
A soma do Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
BatchOptimizeToursMetadata
Esse tipo não tem campos.
Metadados de operação para chamadas BatchOptimizeToursRequest.
BatchOptimizeToursRequest
Solicitação para otimizar tours em lote como uma operação assíncrona. Cada arquivo de entrada precisa conter um OptimizeToursRequest, e cada arquivo de saída vai conter um OptimizeToursResponse. A solicitação contém informações para ler/gravar e analisar os arquivos. Todos os arquivos de entrada e saída precisam estar no mesmo projeto.
| Campos | |
|---|---|
parent |
Obrigatório. Projeto e local de destino para fazer uma chamada. Formato:
Se nenhum local for especificado, uma região será escolhida automaticamente. |
model_configs[] |
Obrigatório. Informações de entrada/saída de cada modelo de compra, como caminhos de arquivo e formatos de dados. |
AsyncModelConfig
Informações para resolver um modelo de otimização de forma assíncrona.
| Campos | |
|---|---|
display_name |
Opcional. Nome do modelo definido pelo usuário, que pode ser usado como alias para acompanhar os modelos. |
input_config |
Obrigatório. Informações sobre o modelo de entrada. |
output_config |
Obrigatório. As informações do local de saída desejado. |
BatchOptimizeToursResponse
Esse tipo não tem campos.
Resposta a um BatchOptimizeToursRequest. Esse valor é retornado na operação de longa duração após a conclusão da operação.
BreakRule
Regras para gerar intervalos de tempo para um veículo (por exemplo, intervalos para almoço). Uma pausa é um período contínuo em que o veículo permanece parado na posição atual e não pode fazer nenhuma visita. Uma interrupção pode ocorrer:
- durante o deslocamento entre duas visitas (incluindo o tempo imediatamente antes ou depois de uma visita, mas não no meio dela), caso em que ele estende o tempo de trânsito correspondente entre as visitas;
- ou antes da partida do veículo (ele não pode ser ligado no meio de uma pausa). Nesse caso, o horário de partida não é afetado.
- ou após o fim da viagem (idem, com o horário de término da viagem).
| Campos | |
|---|---|
break_requests[] |
Sequência de intervalos. Confira a mensagem |
frequency_constraints[] |
Vários |
BreakRequest
A sequência de intervalos (ou seja, número e ordem) aplicados a cada veículo precisa ser conhecida antecipadamente. Os BreakRequests repetidos definem essa sequência, na ordem em que precisam ocorrer. Os intervalos de tempo (earliest_start_time / latest_start_time) podem se sobrepor, mas precisam ser compatíveis com a ordem (isso é verificado).
| Campos | |
|---|---|
earliest_start_time |
Obrigatório. Limite inferior (inclusivo) do início do intervalo. |
latest_start_time |
Obrigatório. Limite superior (inclusivo) do início do intervalo. |
min_duration |
Obrigatório. Duração mínima do intervalo. Precisa ser positivo. |
FrequencyConstraint
É possível restringir ainda mais a frequência e a duração dos intervalos especificados acima, aplicando uma frequência mínima, como "É necessário fazer um intervalo de pelo menos uma hora a cada 12 horas". Supondo que isso possa ser interpretado como "Em qualquer janela de tempo móvel de 12 horas, é necessário haver pelo menos um intervalo de pelo menos uma hora", esse exemplo seria traduzido para o seguinte FrequencyConstraint:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
O tempo e a duração dos intervalos na solução vão respeitar todas essas restrições, além das janelas de tempo e durações mínimas já especificadas no BreakRequest.
Um FrequencyConstraint pode ser aplicado a intervalos não consecutivos. Por exemplo, a programação a seguir respeita o exemplo "1h a cada 12h":
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| Campos | |
|---|---|
min_break_duration |
Obrigatório. Duração mínima do intervalo para essa restrição. Não negativo. Veja a descrição de |
max_inter_break_duration |
Obrigatório. Extensão máxima permitida de qualquer intervalo de tempo na rota que não inclua, pelo menos parcialmente, uma pausa de |
DataFormat
Formatos de dados para arquivos de entrada e saída.
| Tipos enumerados | |
|---|---|
DATA_FORMAT_UNSPECIFIED |
Valor inválido. O formato não pode ser UNSPECIFIED. |
JSON |
JavaScript Object Notation. |
PROTO_TEXT |
Formato de texto dos buffers de protocolo. Consulte https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
Um limite que define uma distância máxima que pode ser percorrida. Ele pode ser físico ou digital.
Se um limite flexível for definido, soft_max_meters e cost_per_kilometer_above_soft_max precisarão ser definidos e não negativos.
| Campos | |
|---|---|
max_meters |
Um limite fixo que restringe a distância a no máximo max_meters. O limite não pode ser negativo. |
soft_max_meters |
Um limite flexível que não impõe um limite máximo de distância, mas, quando violado, resulta em um custo que se soma a outros custos definidos no modelo, com a mesma unidade. Se definido, soft_max_meters precisa ser menor que max_meters e não negativo. |
cost_per_kilometer_below_soft_max |
Custo por quilômetro incorrido, aumentando até Esse custo não é compatível com |
cost_per_kilometer_above_soft_max |
Custo por quilômetro incorrido se a distância estiver acima do limite de O custo não pode ser negativo. |
GcsDestination
O local do Google Cloud Storage em que os arquivos de saída serão gravados.
| Campos | |
|---|---|
uri |
Obrigatório. URI do Google Cloud Storage. |
GcsSource
O local do Google Cloud Storage em que o arquivo de entrada será lido.
| Campos | |
|---|---|
uri |
Obrigatório. URI de um objeto do Google Cloud Storage no formato |
InjectedSolutionConstraint
Solução injetada na solicitação, incluindo informações sobre quais visitas precisam ser restritas e como.
| Campos | |
|---|---|
routes[] |
Rotas da solução a serem injetadas. Alguns trajetos podem ser omitidos da solução original. As rotas e os envios ignorados precisam atender às proposições de validade básicas listadas para |
skipped_shipments[] |
Envios ignorados da solução a ser injetada. Alguns podem ser omitidos da solução original. Consulte o campo |
constraint_relaxations[] |
Para zero ou mais grupos de veículos, especifica quando e quanto flexibilizar as restrições. Se esse campo estiver vazio, todas as rotas de veículos não vazias serão totalmente restritas. |
ConstraintRelaxation
Para um grupo de veículos, especifica em quais limites as restrições de visitas serão flexibilizadas e em que nível. Os envios listados no campo skipped_shipment são restritos para serem ignorados, ou seja, não podem ser realizados.
| Campos | |
|---|---|
relaxations[] |
Todas as flexibilizações de restrição de visita que serão aplicadas a visitas em trajetos com veículos em |
vehicle_indices[] |
Especifica os índices de veículos a que a restrição de visita Um índice de veículo é mapeado da mesma forma que |
Relaxamento
Se relaxations estiver vazio, o horário de início e a sequência de todas as visitas em routes serão totalmente restritos, e nenhuma nova visita poderá ser inserida ou adicionada a esses trajetos. Além disso, o horário de início e término de um veículo em routes é totalmente restrito, a menos que o veículo esteja vazio (ou seja, não tenha visitas e used_if_route_is_empty esteja definido como "false" no modelo).
relaxations(i).level especifica o nível de relaxamento da restrição aplicado a uma visita #j que satisfaz:
route.visits(j).start_time >= relaxations(i).threshold_timeEj + 1 >= relaxations(i).threshold_visit_count
Da mesma forma, a partida do veículo é relaxada para relaxations(i).level se satisfizer:
vehicle_start_time >= relaxations(i).threshold_timeErelaxations(i).threshold_visit_count == 0e a extremidade do veículo é relaxada pararelaxations(i).levelse atender a estas condições:vehicle_end_time >= relaxations(i).threshold_timeEroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Para aplicar um nível de flexibilização se uma visita atender à threshold_visit_count OU à threshold_time, adicione duas relaxations com a mesma level: uma com apenas threshold_visit_count definida e outra com apenas threshold_time definida. Se uma visita atender às condições de vários relaxations, o nível mais flexível será aplicado. Como resultado, do início do veículo até o fim da rota, passando pelas visitas em ordem, o nível de flexibilidade aumenta. Ou seja, o nível de flexibilidade não diminui à medida que a rota avança.
O tempo e a sequência de visitas à rota que não atendem às condições de limite de qualquer relaxations são totalmente restritos, e nenhuma visita pode ser inserida nessas sequências. Além disso, se o início ou o fim de um veículo não atender às condições de flexibilização, o horário será fixo, a menos que o veículo esteja vazio.
| Campos | |
|---|---|
level |
O nível de flexibilização da restrição que se aplica quando as condições em ou após |
threshold_time |
O horário em que a flexibilização |
threshold_visit_count |
O número de visitas em que a flexibilização Se for |
Nível
Expressa os diferentes níveis de flexibilização de restrições, que são aplicados a uma visita e às seguintes quando ela atende às condições de limite.
A enumeração abaixo está em ordem crescente de relaxamento.
| Tipos enumerados | |
|---|---|
LEVEL_UNSPECIFIED |
Nível de relaxamento padrão implícito: nenhuma restrição é relaxada, ou seja, todas as visitas são totalmente restritas. Esse valor não pode ser usado explicitamente em |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Os horários de início da visita e do veículo serão flexibilizados, mas cada visita vai continuar vinculada ao mesmo veículo, e a sequência de visitas precisa ser respeitada: nenhuma visita pode ser inserida entre elas ou antes delas. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Igual a RELAX_VISIT_TIMES_AFTER_THRESHOLD, mas a sequência de visitas também é flexível: as visitas só podem ser feitas por este veículo, mas podem não ser realizadas. |
RELAX_ALL_AFTER_THRESHOLD |
Igual a RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, mas o veículo também está relaxado: as visitas são totalmente sem custo financeiro no horário limite ou depois dele e podem não ser realizadas. |
InputConfig
Especifique uma entrada para [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Campos | |
|---|---|
data_format |
Obrigatório. O formato dos dados de entrada. |
Campo de união source. Obrigatório. source pode ser apenas de um dos tipos a seguir: |
|
gcs_source |
Um local do Google Cloud Storage. Precisa ser um único objeto (arquivo). |
Local
Encapsula um local (um ponto geográfico e um título opcional).
| Campos | |
|---|---|
lat_lng |
As coordenadas geográficas do ponto de parada. |
heading |
A direção da bússola associada à direção do fluxo de tráfego. Esse valor é usado para especificar o lado da via a ser usado para embarque e desembarque. Os valores de direção podem variar de 0 a 360, em que 0 especifica uma direção para o norte, 90 especifica uma direção para o leste e assim por diante. |
OptimizeToursLongRunningMetadata
Esse tipo não tem campos.
Metadados de operação para chamadas OptimizeToursLongRunning.
OptimizeToursRequest
Solicitação a ser enviada a um solucionador de otimização de tour que define o modelo de envio a ser resolvido, bem como os parâmetros de otimização.
| Campos | |
|---|---|
parent |
Obrigatório. Segmente o projeto ou local para fazer uma chamada. Formato:
Se nenhum local for especificado, uma região será escolhida automaticamente. |
timeout |
Se esse tempo limite for definido, o servidor vai retornar uma resposta antes que o período de tempo limite termine ou que o prazo do servidor para solicitações síncronas seja atingido, o que acontecer primeiro. Para solicitações assíncronas, o servidor vai gerar uma solução (se possível) antes que o tempo limite expire. |
model |
Modelo de envio a ser resolvido. |
solving_mode |
Por padrão, o modo de solução é |
search_mode |
Modo de pesquisa usado para resolver a solicitação. |
injected_first_solution_routes[] |
Orienta o algoritmo de otimização a encontrar uma primeira solução semelhante a uma anterior. O modelo é restrito quando a primeira solução é criada. As entregas não realizadas em uma rota são implicitamente ignoradas na primeira solução, mas podem ser realizadas em soluções sucessivas. A solução precisa atender a algumas proposições básicas de validade:
Se a solução injetada não for viável, um erro de validação não será necessariamente retornado. Em vez disso, um erro indicando inviabilidade poderá ser retornado. |
injected_solution_constraint |
Restrinja o algoritmo de otimização para encontrar uma solução final semelhante a uma solução anterior. Por exemplo, isso pode ser usado para congelar partes de rotas que já foram concluídas ou que serão concluídas, mas não podem ser modificadas. Se a solução injetada não for viável, um erro de validação não será necessariamente retornado. Em vez disso, um erro indicando inviabilidade poderá ser retornado. |
refresh_details_routes[] |
Se não estiver vazio, as rotas fornecidas serão atualizadas sem modificar a sequência de visitas ou os tempos de viagem. Apenas outros detalhes serão atualizados. Isso não resolve o modelo. Desde 11/2020, isso só preenche as polilinhas de rotas não vazias e exige que Os campos Esse campo não pode ser usado com
|
interpret_injected_solutions_using_labels |
Se for verdade:
Essa interpretação se aplica aos campos Se for verdadeiro, os rótulos nas seguintes categorias vão aparecer no máximo uma vez em cada categoria:
Se um Remover visitas ou rotas inteiras de uma solução injetada pode afetar as restrições implícitas, o que pode levar a mudanças na solução, erros de validação ou inviabilidade. OBSERVAÇÃO: o caller precisa garantir que cada |
consider_road_traffic |
Considere a estimativa de tráfego ao calcular os campos |
populate_polylines |
Se for "true", as polilinhas serão preenchidas nas respostas |
populate_transition_polylines |
Se for "true", as polilinhas e os tokens de rota serão preenchidos na resposta |
allow_large_deadline_despite_interruption_risk |
Se esse campo for definido, a solicitação poderá ter um prazo (consulte https://grpc.io/blog/deadlines) de até 60 minutos. Caso contrário, o prazo máximo é de apenas 30 minutos. As solicitações de longa duração têm um risco significativamente maior (mas ainda pequeno) de interrupção. |
use_geodesic_distances |
Se for "true", as distâncias de viagem serão calculadas usando distâncias geodésicas em vez de distâncias do Google Maps, e os tempos de viagem serão calculados usando distâncias geodésicas com uma velocidade definida por |
label |
Rótulo que pode ser usado para identificar esta solicitação, informado de volta no |
geodesic_meters_per_second |
Quando |
max_validation_errors |
Trunca o número de erros de validação retornados. Esses erros geralmente são anexados a uma carga útil de erro INVALID_ARGUMENT como um detalhe de erro BadRequest (https://cloud.google.com/apis/design/errors#error_details), a menos que solving_mode=VALIDATE_ONLY. Consulte o campo |
SearchMode
Modo que define o comportamento da pesquisa, compensando a latência e a qualidade da solução. Em todos os modos, o prazo global da solicitação é aplicado.
| Tipos enumerados | |
|---|---|
SEARCH_MODE_UNSPECIFIED |
Modo de pesquisa não especificado, equivalente a RETURN_FAST. |
RETURN_FAST |
Pare a pesquisa depois de encontrar a primeira boa solução. |
CONSUME_ALL_AVAILABLE_TIME |
Use todo o tempo disponível para procurar soluções melhores. |
SolvingMode
Define como o solucionador deve processar a solicitação. Em todos os modos, exceto VALIDATE_ONLY, se a solicitação for inválida, você vai receber um erro INVALID_REQUEST. Consulte max_validation_errors para limitar o número de erros retornados.
| Tipos enumerados | |
|---|---|
DEFAULT_SOLVE |
Resolva o modelo. Os avisos podem ser emitidos em [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Valida apenas o modelo sem resolvê-lo: preenche o máximo possível de OptimizeToursResponse.validation_errors. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Só preenche IMPORTANTE: nem todos os envios inviáveis são retornados aqui, apenas aqueles detectados como inviáveis durante o pré-processamento. |
TRANSFORM_AND_RETURN_REQUEST |
Esse modo só funciona se Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request para mais detalhes. |
OptimizeToursResponse
Resposta após a solução de um problema de otimização de rotas que contém as rotas seguidas por cada veículo, as entregas que foram ignoradas e o custo geral da solução.
| Campos | |
|---|---|
routes[] |
Rotas calculadas para cada veículo. A i-ésima rota corresponde ao i-ésimo veículo no modelo. |
request_label |
Cópia do |
skipped_shipments[] |
A lista de todas as remessas ignoradas. |
validation_errors[] |
Lista de todos os erros de validação que conseguimos detectar de forma independente. Consulte a explicação "VÁRIOS ERROS" para a mensagem |
processed_request |
Em alguns casos, modificamos a solicitação recebida antes de resolvê-la, ou seja, adicionamos custos. Se solving_mode == TRANSFORM_AND_RETURN_REQUEST, a solicitação modificada será retornada aqui. Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request para mais detalhes. |
metrics |
Métricas de duração, distância e uso para esta solução. |
Métricas
Métricas gerais, agregadas em todas as rotas.
| Campos | |
|---|---|
aggregated_route_metrics |
Agregado nas rotas. Cada métrica é a soma (ou o máximo, para cargas) de todos os campos |
skipped_mandatory_shipment_count |
Número de envios obrigatórios ignorados. |
used_vehicle_count |
Número de veículos usados. Observação: se uma rota de veículo estiver vazia e |
earliest_vehicle_start_time |
O horário de início mais antigo para um veículo usado, calculado como o mínimo em todos os veículos usados de |
latest_vehicle_end_time |
O horário de término mais recente de um veículo usado, calculado como o máximo em todos os veículos usados de |
costs |
Custo da solução, detalhado por campos de solicitação relacionados a custos. As chaves são caminhos proto, relativos à entrada "OptimizeToursRequest", por exemplo, "model.shipments.pickups.cost", e os valores são o custo total gerado pelo campo de custo correspondente, agregado em toda a solução. Em outras palavras, costs["model.shipments.pickups.cost"] é a soma de todos os custos de coleta na solução. Todos os custos definidos no modelo são informados em detalhes aqui, exceto os custos relacionados a "TransitionAttributes", que são informados apenas de forma agregada a partir de 01/2022. |
total_cost |
Custo total da solução. A soma de todos os valores no mapa de custos. |
OptimizeToursUriMetadata
Esse tipo não tem campos.
Metadados de operação para chamadas OptimizeToursUri.
OptimizeToursUriRequest
Uma solicitação usada pelo método OptimizeToursUri.
| Campos | |
|---|---|
parent |
Obrigatório. Segmente o projeto ou local para fazer uma chamada. Formato:
Se nenhum local for especificado, uma região será escolhida automaticamente. |
input |
Obrigatório. O URI do objeto do Cloud Storage que contém o |
output |
Obrigatório. O URI do objeto do Cloud Storage que vai conter o |
OptimizeToursUriResponse
Uma resposta retornada pelo método OptimizeToursUri.
| Campos | |
|---|---|
output |
Opcional. O URI do objeto do Cloud Storage que contém o O |
OptimizeToursValidationError
Descreve um erro ou aviso encontrado ao validar um OptimizeToursRequest.
| Campos | |
|---|---|
code |
Um erro de validação é definido pelo par ( Os campos a seguir fornecem mais contexto sobre o erro. VÁRIOS ERROS: quando há vários erros, o processo de validação tenta gerar vários deles. Assim como um compilador, esse é um processo imperfeito. Alguns erros de validação são "graves", ou seja, interrompem todo o processo. Esse é o caso dos erros ESTABILIDADE: |
display_name |
O nome de exibição do erro. |
fields[] |
Um contexto de erro pode envolver 0, 1 (na maioria das vezes) ou mais campos. Por exemplo, para se referir à primeira coleta do veículo nº 4 e da remessa nº 2, faça o seguinte: No entanto, a cardinalidade de |
error_message |
String legível que descreve o erro. Há um mapeamento de um para um entre ESTABILIDADE: não estável. A mensagem de erro associada a um determinado |
offending_values |
Pode conter os valores dos campos. Essa opção nem sempre está disponível. Não confie nele e use apenas para depuração manual de modelos. |
FieldReference
Especifica um contexto para o erro de validação. Um FieldReference sempre se refere a um determinado campo nesse arquivo e segue a mesma estrutura hierárquica. Por exemplo, podemos especificar o elemento nº 2 de start_time_windows do veículo nº 5 usando:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
No entanto, omitimos entidades de nível superior, como OptimizeToursRequest ou ShipmentModel, para não sobrecarregar a mensagem.
| Campos | |
|---|---|
name |
Nome do campo, por exemplo, "vehicles". |
sub_field |
Subcampo aninhado recursivamente, se necessário. |
Campo de união
|
|
index |
Índice do campo, se repetido. |
key |
Chave se o campo for um mapa. |
OutputConfig
Especifique um destino para os resultados de [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Campos | |
|---|---|
data_format |
Obrigatório. O formato dos dados de saída. |
Campo de união destination. Obrigatório. destination pode ser apenas de um dos tipos a seguir: |
|
gcs_destination |
O local do Google Cloud Storage em que a saída será gravada. |
RouteModifiers
Encapsula um conjunto de condições opcionais a serem satisfeitas ao calcular rotas de veículos. Isso é semelhante a RouteModifiers na API Routes Preferred da Plataforma Google Maps. Consulte: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Campos | |
|---|---|
avoid_tolls |
Especifica se é preciso evitar vias com pedágio quando possível. A preferência será dada a trajetos sem pedágios. Válido apenas para modos de viagem motorizados. |
avoid_highways |
Especifica se é necessário evitar rodovias quando possível. A preferência será dada a trajetos que não incluem rodovias. Válido apenas para modos de viagem motorizados. |
avoid_ferries |
Especifica se é necessário evitar balsas quando possível. A preferência será dada a trajetos que não incluem viagens de balsa. Válido apenas para modos de viagem motorizados. |
avoid_indoor |
Opcional. Especifica se é preciso evitar a navegação em ambientes internos quando possível. A preferência será dada a rotas que não contêm navegação interna. Aplicável apenas ao modo de viagem |
Envio
O envio de um único item, de uma das retiradas para uma das entregas. Para que o envio seja considerado realizado, um veículo exclusivo precisa visitar um dos locais de coleta (e diminuir as capacidades disponíveis de acordo) e, em seguida, visitar um dos locais de entrega (e, portanto, aumentar as capacidades disponíveis de acordo).
| Campos | |
|---|---|
display_name |
O nome de exibição da remessa definido pelo usuário. Ele pode ter até 63 caracteres e usar caracteres UTF-8. |
pickups[] |
Conjunto de alternativas de retirada associadas ao envio. Se não for especificado, o veículo só precisará visitar um local correspondente às entregas. |
deliveries[] |
Conjunto de alternativas de entrega associadas ao envio. Se não for especificado, o veículo só precisará visitar um local correspondente às coletas. |
load_demands |
Demandas de carga do frete (por exemplo, peso, volume, número de paletes etc.). As chaves no mapa precisam ser identificadores que descrevem o tipo da carga correspondente, idealmente incluindo também as unidades. Por exemplo: "weight_kg", "volume_gallons", "pallet_count" etc. Se uma determinada chave não aparecer no mapa, a carga correspondente será considerada nula. |
allowed_vehicle_indices[] |
O conjunto de veículos que podem fazer essa entrega. Se estiver vazio, todos os veículos poderão realizar a ação. Os veículos são fornecidos pelo índice deles na lista |
costs_per_vehicle[] |
Especifica o custo incorrido quando esta remessa é entregue por cada veículo. Se especificado, ele precisa ter UMA das seguintes opções:
Esses custos precisam estar na mesma unidade que |
costs_per_vehicle_indices[] |
Índices dos veículos a que |
pickup_to_delivery_absolute_detour_limit |
Especifica o tempo máximo absoluto de desvio em comparação com o caminho mais curto da coleta até a entrega. Se especificado, ele precisa ser não negativo, e o frete precisa conter pelo menos uma coleta e uma entrega. Por exemplo, seja t o menor tempo necessário para ir da alternativa de retirada selecionada diretamente para a alternativa de entrega selecionada. Em seguida, a configuração Se os limites relativos e absolutos forem especificados no mesmo frete, o limite mais restritivo será usado para cada par possível de retirada/entrega. Desde outubro de 2017, os desvios só são aceitos quando as durações das viagens não dependem de veículos. |
pickup_to_delivery_time_limit |
Especifica a duração máxima desde o início da coleta até o início da entrega de uma remessa. Se especificado, ele precisa ser não negativo, e o frete precisa conter pelo menos uma coleta e uma entrega. Isso não depende de quais alternativas são selecionadas para retirada e entrega, nem da velocidade do veículo. Isso pode ser especificado junto com as restrições máximas de desvio: a solução vai respeitar as duas especificações. |
shipment_type |
String não vazia que especifica um "tipo" para este frete. Esse recurso pode ser usado para definir incompatibilidades ou requisitos entre Diferente de |
label |
Especifica um rótulo para este envio. Esse rótulo é informado na resposta no |
ignore |
Se for verdadeiro, ignore este envio, mas não aplique um Ignorar um envio resulta em um erro de validação quando há É permitido ignorar uma entrega feita em |
penalty_cost |
Se o envio não for concluído, essa penalidade será adicionada ao custo geral dos trajetos. Uma remessa é considerada concluída se uma das alternativas de retirada e entrega for visitada. O custo pode ser expresso na mesma unidade usada para todos os outros campos relacionados a custos no modelo e precisa ser positivo. IMPORTANTE: se essa penalidade não for especificada, ela será considerada infinita, ou seja, o envio precisa ser concluído. |
pickup_to_delivery_relative_detour_limit |
Especifica o tempo máximo de desvio relativo em comparação com o caminho mais curto da coleta até a entrega. Se especificado, ele precisa ser não negativo, e o frete precisa conter pelo menos uma coleta e uma entrega. Por exemplo, seja t o menor tempo necessário para ir da alternativa de retirada selecionada diretamente para a alternativa de entrega selecionada. Em seguida, a configuração Se os limites relativos e absolutos forem especificados no mesmo frete, o limite mais restritivo será usado para cada par possível de retirada/entrega. Desde outubro de 2017, os desvios só são aceitos quando as durações das viagens não dependem de veículos. |
Carregar
Ao realizar uma visita, uma quantidade predefinida pode ser adicionada à carga do veículo se for uma coleta ou subtraída se for uma entrega. Essa mensagem define esse valor. Consulte load_demands.
| Campos | |
|---|---|
amount |
A quantidade em que a carga do veículo que realiza a visita correspondente vai variar. Como é um número inteiro, recomendamos que os usuários escolham uma unidade adequada para evitar perda de precisão. Precisa ser ≥ 0. |
VisitRequest
Solicitação de uma visita que pode ser feita por um veículo: ela tem uma geolocalização (ou duas, consulte abaixo), horários de abertura e fechamento representados por intervalos de tempo e uma duração de serviço (tempo gasto pelo veículo depois que ele chega para retirar ou entregar mercadorias).
| Campos | |
|---|---|
arrival_location |
A geolocalização em que o veículo chega ao realizar esse |
arrival_waypoint |
O ponto de parada em que o veículo chega ao realizar este |
departure_location |
A geolocalização de onde o veículo sai após concluir este |
departure_waypoint |
O ponto de parada em que o veículo sai após concluir este |
tags[] |
Especifica tags anexadas à solicitação de visita. Não é permitido usar strings vazias ou duplicadas. |
time_windows[] |
Intervalos de tempo que restringem o horário de chegada em uma visita. Um veículo pode sair fora da janela de tempo de chegada. Ou seja, o horário de chegada e a duração não precisam estar dentro de uma janela de tempo. Isso pode resultar em tempo de espera se o veículo chegar antes de A ausência de As janelas de tempo não podem se sobrepor ou ser adjacentes umas às outras e precisam estar em ordem crescente.
|
duration |
Duração da visita, ou seja, tempo gasto pelo veículo entre a chegada e a partida (a ser adicionado ao possível tempo de espera; consulte |
cost |
Custo para atender a essa solicitação de visita em um trajeto de veículo. Isso pode ser usado para pagar custos diferentes para cada retirada ou entrega alternativa de uma remessa. Esse custo precisa estar na mesma unidade que |
load_demands |
Carrega as demandas desta solicitação de visita. É igual ao campo |
visit_types[] |
Especifica os tipos de visita. Isso pode ser usado para alocar o tempo extra necessário para um veículo concluir essa visita (consulte Um tipo só pode aparecer uma vez. |
label |
Especifica um rótulo para este |
avoid_u_turns |
Especifica se retornos devem ser evitados em trajetos de carro nesse local. A prevenção de retornos é o melhor esforço possível, mas não é garantida. Este é um recurso experimental, e o comportamento dele está sujeito a mudanças. Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request para mais detalhes. |
ShipmentModel
Um modelo de frete contém um conjunto de fretes que precisam ser realizados por um conjunto de veículos, minimizando o custo geral, que é a soma de:
- o custo de roteamento dos veículos (soma do custo por tempo total, custo por tempo de viagem e custo fixo em todos os veículos).
- as penalidades de envio não realizado.
- o custo da duração global dos fretes
| Campos | |
|---|---|
shipments[] |
Conjunto de envios que precisam ser realizados no modelo. |
vehicles[] |
Conjunto de veículos que podem ser usados para realizar visitas. |
objectives[] |
O conjunto de objetivos para esse modelo, que vamos transformar em custos. Se não estiver vazio, o modelo de entrada não poderá ter custo. Para receber a solicitação modificada, use Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request para mais detalhes. |
global_start_time |
Horário de início e término global do modelo: nenhum horário fora desse intervalo pode ser considerado válido. O período do modelo precisa ser inferior a um ano, ou seja, Ao usar campos |
global_end_time |
Se não for definido, será usado 00:00:00 UTC, 1º de janeiro de 1971 (ou seja, segundos: 31536000, nanos: 0) como padrão. |
global_duration_cost_per_hour |
A "duração global" do plano geral é a diferença entre o horário de início efetivo mais cedo e o horário de término efetivo mais tarde de todos os veículos. Os usuários podem atribuir um custo por hora a essa quantidade para tentar otimizar a conclusão mais rápida do trabalho, por exemplo. Esse custo precisa estar na mesma unidade que |
duration_distance_matrices[] |
Especifica as matrizes de duração e distância usadas no modelo. Se esse campo estiver vazio, o Google Maps ou as distâncias geodésicas serão usados, dependendo do valor do campo Exemplos de uso:
|
duration_distance_matrix_src_tags[] |
Tags que definem as fontes das matrizes de duração e distância. As tags correspondem a |
duration_distance_matrix_dst_tags[] |
Tags que definem os destinos das matrizes de duração e distância; As tags correspondem a |
transition_attributes[] |
Atributos de transição adicionados ao modelo. |
shipment_type_incompatibilities[] |
Conjuntos de shipment_types incompatíveis (consulte |
shipment_type_requirements[] |
Conjuntos de requisitos |
precedence_rules[] |
Conjunto de regras de precedência que precisam ser aplicadas no modelo. IMPORTANTE: o uso de regras de precedência limita o tamanho do problema que pode ser otimizado. As solicitações que usam regras de precedência e incluem muitos envios podem ser rejeitadas. |
max_active_vehicles |
Restringe o número máximo de veículos ativos. Um veículo está ativo se a rota dele realizar pelo menos uma entrega. Isso pode ser usado para limitar o número de rotas quando há menos motoristas do que veículos e a frota é heterogênea. Em seguida, a otimização seleciona o melhor subconjunto de veículos para usar. Precisa ser estritamente positivo. |
DurationDistanceMatrix
Especifica uma matriz de duração e distância dos locais de início e fim da visita e do veículo.
| Campos | |
|---|---|
rows[] |
Especifica as linhas da matriz de duração e distância. Ele precisa ter o mesmo número de elementos que |
vehicle_start_tag |
Tag que define a quais veículos essa matriz de duração e distância se aplica. Se estiver vazio, isso se aplica a todos os veículos, e só pode haver uma única matriz. Cada início de veículo precisa corresponder a exatamente uma matriz. Ou seja, exatamente um campo Todas as matrizes precisam ter um |
Linha
Especifica uma linha da matriz de duração e distância.
| Campos | |
|---|---|
durations[] |
Valores de duração para uma determinada linha. Ele precisa ter o mesmo número de elementos que |
meters[] |
Valores de distância para uma determinada linha. Se não houver custos ou restrições relacionados a distâncias no modelo, deixe em branco. Caso contrário, ele precisa ter tantos elementos quanto |
Objetivo
Os objetivos substituem completamente o modelo de custo e, portanto, são incompatíveis com os custos preexistentes. Cada objetivo é mapeado para vários custos predefinidos, por exemplo, veículos, remessas ou atributos de transição.
Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request para mais detalhes.
| Campos | |
|---|---|
type |
O tipo de objetivo. |
weight |
Quanto esse objetivo deve contar em relação aos outros. Pode ser qualquer número não negativo. Os pesos não precisam somar 1. Os pesos têm como padrão 1,0. |
Tipo
O tipo de objetivo que será mapeado para um conjunto de custos.
| Tipos enumerados | |
|---|---|
DEFAULT |
Um conjunto padrão de custos será usado para garantir uma solução razoável. Observação: esse objetivo pode ser usado sozinho, mas também será sempre adicionado com peso 1,0, como um valor de referência, aos objetivos especificados pelo usuário, se ainda não estiver presente. |
MIN_DISTANCE |
objetivos "MIN". Minimizar a distância total percorrida. |
MIN_WORKING_TIME |
Minimizar o tempo total de trabalho, somado em todos os veículos. |
MIN_TRAVEL_TIME |
Igual ao acima, mas com foco apenas no tempo de viagem. |
MIN_NUM_VEHICLES |
Minimize o número de veículos usados. |
PrecedenceRule
Uma regra de precedência entre dois eventos (cada evento é a coleta ou a entrega de uma remessa): o evento "segundo" precisa começar pelo menos offset_duration depois que o "primeiro" começar.
Várias precedências podem se referir aos mesmos eventos (ou relacionados), por exemplo: "a retirada de B acontece após a entrega de A" e "a retirada de C acontece após a retirada de B".
Além disso, as precedências só se aplicam quando os dois envios são realizados e são ignoradas caso contrário.
| Campos | |
|---|---|
first_is_delivery |
Indica se o evento "first" é uma entrega. |
second_is_delivery |
Indica se o evento "segundo" é uma entrega. |
offset_duration |
O deslocamento entre o primeiro e o segundo evento. Ele pode ser negativo. |
first_index |
Índice de envio do evento "first". Este campo precisa ser especificado. |
second_index |
Índice de envio do segundo evento. Este campo precisa ser especificado. |
ShipmentRoute
A rota de um veículo pode ser decomposta ao longo do eixo de tempo da seguinte maneira (supondo que haja n visitas):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Observação: fazemos uma distinção entre:
- "eventos pontuais", como o início e o fim do veículo e o início e o fim de cada visita (ou seja, chegada e partida). Elas acontecem em um determinado segundo.
- "intervalos de tempo", como as visitas em si e a transição entre elas. Embora os intervalos de tempo às vezes possam ter duração zero, ou seja, começar e terminar no mesmo segundo, eles geralmente têm uma duração positiva.
Invariantes:
- Se houver n visitas, haverá n+1 transições.
- Uma visita é sempre cercada por uma transição antes (mesmo índice) e uma transição depois (índice + 1).
- O início do veículo é sempre seguido pela transição nº 0.
- O fim do veículo é sempre precedido pela transição nº n.
Confira o que acontece durante um Transition e um Visit:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Por fim, veja como TRAVEL, BREAKS, DELAY e WAIT podem ser organizados durante uma transição.
- Elas não se sobrepõem.
- O DELAY é exclusivo e precisa ser um período contínuo imediatamente antes da próxima visita (ou do fim da viagem do veículo). Assim, basta saber a duração do atraso para saber o horário de início e término.
- Os INTERVALOS são períodos contíguos e não sobrepostos. A resposta especifica o horário de início e a duração de cada intervalo.
- TRAVEL e WAIT são "preemptable": podem ser interrompidos várias vezes durante essa transição. Os clientes podem presumir que a viagem acontece "assim que possível" e que "esperar" preenche o tempo restante.
Um exemplo (complexo):
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| Campos | |
|---|---|
vehicle_index |
Veículo que está fazendo o trajeto, identificado pelo índice na |
vehicle_label |
Rótulo do veículo que está fazendo essa rota, igual a |
vehicle_start_time |
Horário em que o veículo inicia o trajeto. |
vehicle_end_time |
Hora em que o veículo termina o trajeto. |
visits[] |
Sequência ordenada de visitas que representam um trajeto. "visits[i]" é a i-ésima visita no trajeto. Se esse campo estiver vazio, o veículo será considerado como não utilizado. |
transitions[] |
Lista ordenada de transições para a rota. |
has_traffic_infeasibilities |
Quando A chegada em next_visit provavelmente vai acontecer mais tarde do que a janela de tempo atual devido ao aumento da estimativa de tempo de viagem |
route_polyline |
A representação da polilinha codificada do trajeto. Esse campo só será preenchido se |
breaks[] |
Intervalos programados para o veículo que está fazendo esse trajeto. A sequência |
metrics |
Métricas de duração, distância e carga para essa rota. Os campos de |
vehicle_fullness |
Campo Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
route_costs |
Custo do trajeto, detalhado por campos de solicitação relacionados a custos. As chaves são caminhos de proto, relativos ao OptimizeToursRequest de entrada, por exemplo, "model.shipments.pickups.cost", e os valores são o custo total gerado pelo campo de custo correspondente, agregado em toda a rota. Em outras palavras, costs["model.shipments.pickups.cost"] é a soma de todos os custos de coleta ao longo do trajeto. Todos os custos definidos no modelo são informados em detalhes aqui, exceto os custos relacionados a "TransitionAttributes", que são informados apenas de forma agregada a partir de 01/2022. |
route_total_cost |
Custo total do trajeto. A soma de todos os custos no mapa de custos. |
Intervalo
Dados que representam a execução de uma interrupção.
| Campos | |
|---|---|
start_time |
Horário de início de um intervalo. |
duration |
Duração de uma pausa. |
EncodedPolyline
A representação codificada de uma polilinha. Saiba mais sobre a codificação de polilinhas: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
| Campos | |
|---|---|
points |
String que representa pontos codificados da polilinha. |
Transição
Transição entre dois eventos na rota. Consulte a descrição de ShipmentRoute.
Se o veículo não tiver um start_location e/ou end_location, as métricas de viagem correspondentes serão 0.
| Campos | |
|---|---|
travel_duration |
Duração da viagem durante essa transição. |
travel_distance_meters |
Distância percorrida durante a transição. |
traffic_info_unavailable |
Quando o tráfego é solicitado via |
delay_duration |
Soma das durações de atraso aplicadas a essa transição. Se houver, o atraso começa exatamente |
break_duration |
Soma da duração dos intervalos que ocorrem durante essa transição, se houver. Os detalhes sobre o horário de início e a duração de cada intervalo são armazenados em |
wait_duration |
Tempo gasto esperando durante essa transição. A duração da espera corresponde ao tempo ocioso e não inclui o tempo de intervalo. Além disso, esse tempo de espera pode ser dividido em vários intervalos não contínuos. |
total_duration |
Duração total da transição, fornecida para conveniência. É igual a:
|
start_time |
Horário de início dessa transição. |
route_polyline |
A representação da polilinha codificada do trajeto seguido durante a transição. Esse campo só será preenchido se |
route_token |
Apenas saída. Um token opaco que pode ser transmitido ao SDK Navigation para reconstruir a rota durante a navegação e, em caso de novo trajeto, respeitar a intenção original quando a rota foi criada. Trate esse token como um blob opaco. Não compare o valor dele em várias solicitações, porque ele pode mudar mesmo que o serviço retorne exatamente a mesma rota. Esse campo só será preenchido se |
vehicle_loads |
Cargas de veículos durante essa transição, para cada tipo que aparece no As cargas durante a primeira transição são as cargas iniciais do trajeto do veículo. Depois de cada visita, os |
VehicleLoad
Informa a carga real do veículo em algum ponto do trajeto, para um determinado tipo (consulte Transition.vehicle_loads).
| Campos | |
|---|---|
amount |
A quantidade de carga no veículo para o tipo especificado. A unidade de carga geralmente é indicada pelo tipo. Consulte |
Acessar
Uma visita realizada durante um trajeto. Essa visita corresponde a uma retirada ou entrega de um Shipment.
| Campos | |
|---|---|
shipment_index |
Índice do campo |
is_pickup |
Se for verdadeiro, a visita vai corresponder a uma retirada de um |
visit_request_index |
Índice de |
start_time |
Horário em que a visita começa. O veículo pode chegar antes desse horário no local da visita. Os horários são consistentes com o |
load_demands |
Demanda total de carga de visitas como a soma da solicitação de envio e de visita |
detour |
Tempo extra de desvio devido às entregas visitadas na rota antes da visita e ao possível tempo de espera induzido pelas janelas de tempo. Se a visita for uma entrega, o desvio será calculado com base na visita de coleta correspondente e será igual a: Caso contrário, ele será calculado com base no |
shipment_label |
Cópia do |
visit_label |
Cópia do |
injected_solution_location_token |
Um token opaco que representa informações sobre um local de visita. Esse campo pode ser preenchido nas visitas das rotas de resultado quando Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request para mais detalhes. |
ShipmentTypeIncompatibility
Especifica incompatibilidades entre envios, dependendo do shipment_type. A aparência de envios incompatíveis na mesma rota é restrita com base no modo de incompatibilidade.
| Campos | |
|---|---|
types[] |
Lista de tipos incompatíveis. Dois envios com |
incompatibility_mode |
Modo aplicado à incompatibilidade. |
IncompatibilityMode
Modos que definem como a aparência de envios incompatíveis é restrita na mesma rota.
| Tipos enumerados | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Modo de incompatibilidade não especificado. Esse valor nunca pode ser usado. |
NOT_PERFORMED_BY_SAME_VEHICLE |
Nesse modo, dois envios com tipos incompatíveis nunca podem compartilhar o mesmo veículo. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Nesse modo, dois envios com tipos incompatíveis nunca podem estar no mesmo veículo ao mesmo tempo:
|
ShipmentTypeRequirement
Especifica requisitos entre envios com base no shipment_type. As especificidades do requisito são definidas pelo modo de requisito.
| Campos | |
|---|---|
required_shipment_type_alternatives[] |
Lista de tipos de frete alternativos exigidos pelo |
dependent_shipment_types[] |
Todas as remessas com um tipo no campo OBSERVAÇÃO: não são permitidas cadeias de requisitos em que um |
requirement_mode |
Modo aplicado ao requisito. |
RequirementMode
Modos que definem a aparência de envios dependentes em um trajeto.
| Tipos enumerados | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Modo de requisito não especificado. Esse valor nunca pode ser usado. |
PERFORMED_BY_SAME_VEHICLE |
Nesse modo, todas as remessas "dependentes" precisam compartilhar o mesmo veículo que pelo menos uma das remessas "obrigatórias". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
No modo Portanto, uma retirada de envio "dependente" precisa ter:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Igual ao anterior, exceto que as entregas "dependentes" precisam ter uma entrega "obrigatória" no veículo no momento da entrega. |
SkippedShipment
Especifica detalhes de envios não realizados em uma solução. Para casos triviais e/ou se conseguirmos identificar o motivo da omissão, informamos o motivo aqui.
| Campos | |
|---|---|
index |
O índice corresponde ao índice da remessa no |
label |
Cópia do |
reasons[] |
Uma lista de motivos que explicam por que o envio foi ignorado. Consulte o comentário acima |
penalty_cost |
Esta é uma cópia do Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
estimated_incompatible_vehicle_ratio |
É a proporção estimada de veículos que não podem fazer essa entrega por pelo menos um dos motivos abaixo. Observação: isso só é preenchido quando os motivos envolvem um veículo. Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
Motivo
Se pudermos explicar por que o envio foi ignorado, os motivos serão listados aqui. Se o motivo não for o mesmo para todos os veículos, reason terá mais de um elemento. Uma entrega ignorada não pode ter motivos duplicados, ou seja, em que todos os campos são iguais, exceto example_vehicle_index. Exemplo:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
O envio ignorado é incompatível com todos os veículos. Os motivos podem ser diferentes para todos os veículos, mas a capacidade de "Maçãs" de pelo menos um veículo seria excedida (incluindo o veículo 1), a capacidade de "Peras" de pelo menos um veículo seria excedida (incluindo o veículo 3) e o limite de distância de pelo menos um veículo seria excedido (incluindo o veículo 1).
| Campos | |
|---|---|
code |
Consulte os comentários do código. |
example_vehicle_indices[] |
Igual a Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
example_exceeded_capacity_type |
Se o código do motivo for |
example_vehicle_index |
Se o motivo estiver relacionado a uma incompatibilidade entre o veículo e a entrega, esse campo vai fornecer o índice de um veículo relevante. |
Código
Código que identifica o tipo de motivo. A ordem aqui não tem significado. Em particular, ele não indica se um determinado motivo vai aparecer antes de outro na solução, caso ambos sejam aplicáveis.
| Tipos enumerados | |
|---|---|
CODE_UNSPECIFIED |
Isso nunca deve ser usado. |
NO_VEHICLE |
Não há um veículo no modelo que torne todos os envios inviáveis. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
A demanda do frete excede a capacidade de um veículo para alguns tipos de capacidade, um dos quais é example_exceeded_capacity_type. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
A distância mínima necessária para realizar esse envio, ou seja, do Para esse cálculo, usamos as distâncias geodésicas. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
O tempo mínimo necessário para realizar esse envio, incluindo tempo de viagem, espera e serviço, excede a Observação: o tempo de viagem é calculado no melhor cenário possível, ou seja, como distância geodésica x 36 m/s (aproximadamente 130 km/hora). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Igual ao exemplo acima, mas comparamos apenas o tempo mínimo de viagem e o travel_duration_limit do veículo. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
O veículo não pode fazer esse envio no melhor cenário (consulte CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT para cálculo de tempo) se ele começar no horário de início mais cedo: o tempo total faria com que o veículo terminasse depois do horário de término mais tarde. |
VEHICLE_NOT_ALLOWED |
O campo allowed_vehicle_indices da remessa não está vazio e o veículo não pertence a ele. |
VEHICLE_IGNORED |
O campo Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
SHIPMENT_IGNORED |
O campo Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
O envio é adiado no Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
A flexibilização da rota do veículo especificada no Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
ZERO_PENALTY_COST |
O envio tem um custo de penalidade zero. Embora isso possa ser útil como uma opção de modelagem avançada, também pode explicar por que um envio foi ignorado. Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
TimeWindow
As janelas de tempo restringem o horário de um evento, como o horário de chegada em uma visita ou o horário de início e término de um veículo.
Os limites de período fixos, start_time e end_time, impõem o horário mais cedo e mais tarde do evento, de modo que start_time <= event_time <=
end_time. O limite inferior da janela de tempo flexível, soft_start_time, expressa uma preferência para que o evento aconteça em soft_start_time ou depois, incorrendo em um custo proporcional ao tempo antes de soft_start_time em que o evento ocorre. O limite superior da janela de tempo flexível, soft_end_time, expressa uma preferência para que o evento aconteça em soft_end_time ou antes, incorrendo em um custo proporcional ao tempo decorrido após soft_end_time. start_time, end_time, soft_start_time e soft_end_time precisam estar dentro dos limites de tempo globais (consulte ShipmentModel.global_start_time e ShipmentModel.global_end_time) e respeitar:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
| Campos | |
|---|---|
start_time |
O horário de início do período rígido. Se não for especificado, será definido como |
end_time |
O horário de término do período fixo. Se não for especificado, será definido como |
soft_start_time |
O horário de início gradual do período. |
soft_end_time |
O horário de término flexível do período. |
cost_per_hour_before_soft_start_time |
Um custo por hora adicionado a outros custos no modelo se o evento ocorrer antes de soft_start_time, calculado como: Esse custo precisa ser positivo, e o campo só pode ser definido se soft_start_time tiver sido definido. |
cost_per_hour_after_soft_end_time |
Um custo por hora adicionado a outros custos no modelo se o evento ocorrer após Esse custo precisa ser positivo, e o campo só pode ser definido se |
TransitionAttributes
Especifica atributos de transições entre duas visitas consecutivas em um trajeto. Vários TransitionAttributes podem ser aplicados à mesma transição. Nesse caso, todos os custos extras são somados, e a restrição ou o limite mais rígido é aplicado (seguindo a semântica natural "E").
| Campos | |
|---|---|
src_tag |
Tags que definem o conjunto de transições (origem -> destino) a que esses atributos se aplicam. Uma visita à origem ou um início de veículo corresponderá se o |
excluded_src_tag |
Consulte |
dst_tag |
Uma visita ao destino ou um fim de viagem de veículo correspondem se o |
excluded_dst_tag |
Consulte |
cost |
Especifica um custo para realizar essa transição. Essa unidade é a mesma de todos os outros custos no modelo e não pode ser negativa. Ela é aplicada sobre todos os outros custos atuais. |
cost_per_kilometer |
Especifica um custo por quilômetro aplicado à distância percorrida durante essa transição. Ele é adicionado a qualquer |
distance_limit |
Especifica um limite para a distância percorrida durante essa transição. Desde 06/2021, apenas limites flexíveis são aceitos. |
delay |
Especifica um atraso incorrido ao realizar essa transição. Esse atraso sempre ocorre depois de terminar a visita de origem e antes de começar a visita de destino. |
URI
Um identificador de recursos universal que aponta para um recurso que pode ser lido e gravado pela API Route Optimization.
| Campos | |
|---|---|
uri |
O URI do recurso. O recurso ainda não existe. O conteúdo do recurso é codificado como JSON ou textproto. Apenas recursos do Google Cloud Storage são aceitos. Se o recurso for codificado como JSON, o nome dele precisará ter o sufixo |
Veículo
Modela um veículo em um problema de frete. Resolver um problema de envio vai criar um trajeto começando em start_location e terminando em end_location para esse veículo. Um trajeto é uma sequência de visitas (consulte ShipmentRoute).
| Campos | |
|---|---|
display_name |
O nome de exibição do veículo definido pelo usuário. Ele pode ter até 63 caracteres e usar caracteres UTF-8. |
travel_mode |
O modo de viagem que afeta as vias utilizáveis pelo veículo e a velocidade dele. Consulte também |
route_modifiers |
Um conjunto de condições a serem satisfeitas que afetam a forma como as rotas são calculadas para o veículo especificado. |
start_location |
Localização geográfica em que o veículo começa antes de pegar qualquer envio. Se não for especificado, o veículo vai começar na primeira coleta. Se o modelo de frete tiver matrizes de duração e distância, |
start_waypoint |
Ponto de referência que representa um local geográfico onde o veículo começa antes de coletar qualquer entrega. Se nem |
end_location |
Localização geográfica em que o veículo termina depois de concluir a última |
end_waypoint |
Ponto de parada que representa um local geográfico em que o veículo termina depois de concluir o último |
start_tags[] |
Especifica tags anexadas ao início do trajeto do veículo. Não é permitido usar strings vazias ou duplicadas. |
end_tags[] |
Especifica tags anexadas ao final do trajeto do veículo. Não é permitido usar strings vazias ou duplicadas. |
start_time_windows[] |
Períodos em que o veículo pode sair do local de partida. Eles precisam estar dentro dos limites de tempo globais (consulte os campos Os períodos pertencentes ao mesmo campo repetido precisam ser disjuntos, ou seja, nenhum período pode se sobrepor ou ser adjacente a outro, e eles precisam estar em ordem cronológica.
|
end_time_windows[] |
Períodos em que o veículo pode chegar ao local de destino. Eles precisam estar dentro dos limites de tempo globais (consulte os campos Os períodos pertencentes ao mesmo campo repetido precisam ser disjuntos, ou seja, nenhum período pode se sobrepor ou ser adjacente a outro, e eles precisam estar em ordem cronológica.
|
unloading_policy |
Política de descarga aplicada ao veículo. |
load_limits |
Capacidades do veículo (peso, volume, número de paletes, por exemplo). As chaves no mapa são os identificadores do tipo de carga, consistentes com as chaves do campo |
cost_per_hour |
Custos do veículo: todos os custos são somados e precisam estar na mesma unidade de Custo por hora da rota do veículo. Esse custo é aplicado ao tempo total gasto no trajeto e inclui tempo de viagem, tempo de espera e tempo de visita. Usar |
cost_per_traveled_hour |
Custo por hora de viagem do trajeto do veículo. Esse custo é aplicado apenas ao tempo de viagem do trajeto (ou seja, o informado em |
cost_per_kilometer |
Custo por quilômetro da rota do veículo. Esse custo é aplicado à distância informada no |
fixed_cost |
Custo fixo aplicado se este veículo for usado para lidar com uma remessa. |
used_if_route_is_empty |
Esse campo só se aplica a veículos quando a rota deles não atende a nenhuma entrega. Ele indica se o veículo deve ser considerado usado ou não nesse caso. Se for verdadeiro, o veículo vai do local de início até o de término, mesmo que não atenda a nenhuma entrega, e os custos de tempo e distância resultantes da viagem de início para término serão considerados. Caso contrário, ele não vai da origem ao destino, e nenhum |
route_duration_limit |
Limite aplicado à duração total do trajeto do veículo. Em um determinado |
travel_duration_limit |
Limite aplicado à duração da viagem do trajeto do veículo. Em um determinado |
route_distance_limit |
Limite aplicado à distância total do trajeto do veículo. Em um determinado |
extra_visit_duration_for_visit_type |
Especifica um mapa de strings visit_types para durações. A duração é o tempo além de Se um pedido de visita tiver vários tipos, uma duração será adicionada para cada tipo no mapa. |
break_rule |
Descreve a programação de pausas a ser aplicada neste veículo. Se estiver vazio, nenhuma pausa será programada para esse veículo. |
label |
Especifica um rótulo para o veículo. Esse rótulo é informado na resposta como o |
ignore |
Se for verdadeiro, Se um veículo ignorado em Se um envio for realizado por um veículo ignorado em |
travel_duration_multiple |
Especifica um fator multiplicativo que pode ser usado para aumentar ou diminuir os tempos de viagem deste veículo. Por exemplo, definir como 2,0 significa que esse veículo é mais lento e tem tempos de viagem que são o dobro dos veículos padrão. Esse múltiplo não afeta as durações das visitas. Isso afeta o custo se AVISO: os tempos de viagem serão arredondados para o segundo mais próximo depois que esse múltiplo for aplicado, mas antes de realizar qualquer operação numérica. Portanto, um múltiplo pequeno pode resultar em uma perda de precisão. Consulte também |
DurationLimit
Um limite que define uma duração máxima do trajeto de um veículo. Ele pode ser físico ou digital.
Quando um campo de limite flexível é definido, o limite máximo flexível e o custo associado precisam ser definidos juntos.
| Campos | |
|---|---|
max_duration |
Um limite fixo que restringe a duração a no máximo max_duration. |
soft_max_duration |
Um limite flexível que não impõe uma duração máxima, mas que, quando violado, gera um custo para a rota. Esse custo é somado a outros custos definidos no modelo, com a mesma unidade. Se definido, |
quadratic_soft_max_duration |
Um limite flexível que não impõe um limite de duração máxima, mas que, quando violado, faz com que a rota incorra em um custo quadrático na duração. Esse custo é somado a outros custos definidos no modelo, com a mesma unidade. Se definido,
|
cost_per_hour_after_soft_max |
Custo por hora incorrido se o limite de O custo não pode ser negativo. |
cost_per_square_hour_after_quadratic_soft_max |
Custo por hora quadrada incorrido se o limite de O custo adicional é 0 se a duração for inferior ao limite. Caso contrário, o custo depende da duração da seguinte forma: O custo não pode ser negativo. |
LoadLimit
Define um limite de carga aplicável a um veículo, por exemplo, "este caminhão só pode transportar até 3.500 kg". Consulte load_limits.
| Campos | |
|---|---|
soft_max_load |
Um limite flexível da carga. Consulte |
cost_per_unit_above_soft_max |
Se a carga exceder |
start_load_interval |
O intervalo de carga aceitável do veículo no início do trajeto. |
end_load_interval |
O intervalo de carga aceitável do veículo no final do trajeto. |
max_load |
A quantidade máxima aceitável de carga. |
cost_per_kilometer |
Custo de movimentar uma unidade de carga por um quilômetro para este veículo. Isso pode ser usado como um proxy para o consumo de combustível: se a carga for um peso (em Newtons), carga*quilômetro terá a dimensão de uma energia. Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request para mais detalhes. |
cost_per_traveled_hour |
Custo de viajar com uma unidade de carga durante uma hora para este veículo. Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request para mais detalhes. |
Intervalo
Intervalo de valores de carga aceitáveis.
| Campos | |
|---|---|
min |
Uma carga mínima aceitável. Precisa ser ≥ 0. Se os dois forem especificados, |
max |
Uma carga máxima aceitável. Precisa ser ≥ 0. Se não for especificado, a carga máxima não será restrita por esta mensagem. Se os dois forem especificados, |
LoadCost
Custo de mover uma unidade de carga durante um Transition. Para uma determinada carga, o custo é a soma de duas partes:
- min(carga,
load_threshold) *cost_per_unit_below_threshold - max(0, carga -
load_threshold) *cost_per_unit_above_threshold
Com esse custo, as soluções preferem atender primeiro às demandas altas ou, de maneira equivalente, fazer as retiradas de demandas altas por último. Por exemplo, se um veículo tiver
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
e a rota é start,pickup,pickup,delivery,delivery,end com transições:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
então o custo incorrido por este LoadCost é (cost_below * load_below * kilometers + cost_above * load_above * kms)
- transição 0: 0,0
- transição 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transição 2: 2,0 * 15 * 1,0 + 10,0 * (20 - 15) * 1,0 = 80,0
- transição 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transição 4: 0,0
Então, o LoadCost ao longo do trajeto é de 120.
No entanto, se a rota for start,pickup,delivery,pickup,delivery,end com transições:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
o custo incorrido por esse LoadCost é
- transição 0: 0,0
- transição 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transição 2: 0,0
- transição 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transição 4: 0,0
Aqui, o LoadCost no trajeto é 40,0.
LoadCost torna as soluções com transições pesadas mais caras.
Experimental: consulte https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request para mais detalhes.
| Campos | |
|---|---|
load_threshold |
Quantidade de carga acima da qual o custo de movimentação de uma unidade de carga muda de cost_per_unit_below_threshold para cost_per_unit_above_threshold. Precisa ser >= 0. |
cost_per_unit_below_threshold |
Custo de movimentação de uma unidade de carga, para cada unidade entre 0 e o limite. Precisa ser um valor finito e >= 0. |
cost_per_unit_above_threshold |
Custo de movimentação de uma unidade de carga para cada unidade acima do limite. No caso especial em que o limite é igual a 0, esse é um custo fixo por unidade. Precisa ser um valor finito e >= 0. |
TravelMode
Meios de transporte que podem ser usados por veículos.
Eles precisam ser um subconjunto dos modos de viagem da API Routes da Plataforma Google Maps. Consulte: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
Observação: as rotas WALKING estão na versão Beta e podem não ter calçadas ou caminhos para pedestres claros. Você precisa mostrar esse aviso ao usuário para todos os trajetos a pé exibidos no app.
| Tipos enumerados | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Meio de transporte não especificado, equivalente a DRIVING. |
DRIVING |
Meio de transporte correspondente às rotas de carro (carro, etc.). |
WALKING |
Meio de transporte correspondente às rotas a pé. |
UnloadingPolicy
Política sobre como um veículo pode ser descarregado. Aplica-se apenas a remessas com retirada e entrega.
Outros envios podem ocorrer em qualquer lugar da rota, independente de unloading_policy.
| Tipos enumerados | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Política de descarga não especificada. As entregas só podem ocorrer após as respectivas retiradas. |
LAST_IN_FIRST_OUT |
As entregas precisam ocorrer na ordem inversa das retiradas |
FIRST_IN_FIRST_OUT |
As entregas precisam ocorrer na mesma ordem das retiradas |
VehicleFullness
VehicleFullness é uma métrica que calcula o nível de ocupação de um veículo. Cada campo VehicleFullness está entre 0 e 1, calculado como a proporção entre um campo de métrica limitado (por exemplo, AggregatedMetrics.travel_distance_meters) e o limite de veículo relacionado (por exemplo, Vehicle.route_distance_limit), se existir. Caso contrário, a proporção de plenitude não será definida. Se o limite for 0, o campo será definido como 1. Observação: quando uma rota está sujeita a inviabilidades de trânsito, algumas proporções de ocupação bruta podem exceder 1,0. Por exemplo, o veículo pode exceder o limite de distância. Nesses casos, limitamos os valores de plenitude a 1,0.
| Campos | |
|---|---|
max_fullness |
Máximo de todos os outros campos nesta mensagem. |
distance |
A proporção entre |
travel_duration |
A proporção entre [AggregatedMetrics.travel_duration_seconds][] e |
active_duration |
A proporção entre [AggregatedMetrics.total_duration_seconds][] e |
max_load |
A proporção máxima entre todos os tipos de [AggregatedMetrics.max_load][] e os respectivos |
active_span |
A proporção (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) para um determinado veículo. Se o denominador não estiver presente, ele usará ( |
Ponto de referência
Encapsula um ponto de parada. Os pontos de referência marcam os locais de chegada e partida de VisitRequests e os locais de início e término de Vehicles.
| Campos | |
|---|---|
side_of_road |
Opcional. Indica que o local deste waypoint tem uma preferência para que o veículo pare em um determinado lado da via. Quando você define esse valor, o trajeto passa pelo local para que o veículo possa parar na lateral da via em que o local está mais próximo do centro da via. Essa opção não funciona para o modo de viagem "A PÉ". |
vehicle_stopover |
Indica que o waypoint é destinado a veículos para parar, com a intenção de pegar ou deixar alguém. Essa opção funciona apenas para o modo de viagem "CARRO" e quando o "location_type" é "location". Experimental: o comportamento ou a existência deste campo podem mudar no futuro. |
Campo de união location_type. Diferentes maneiras de representar um local. location_type pode ser apenas de um dos tipos a seguir: |
|
location |
Um ponto especificado usando coordenadas geográficas, incluindo um título opcional. |
place_id |
O ID do lugar do PDI associado ao ponto de referência. Ao usar um ID de lugar para especificar o local de chegada ou partida de um VisitRequest, use um ID de lugar específico o suficiente para determinar um local LatLng para navegação até o lugar. Por exemplo, um ID de lugar que representa um edifício é adequado, mas um ID de lugar que representa uma rua não é recomendado. |