Í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)OptimizeToursRequest
(mensagem)OptimizeToursRequest.SearchMode
(enum)OptimizeToursRequest.SolvingMode
(enum)OptimizeToursResponse
(mensagem)OptimizeToursResponse.Metrics
(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.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)Vehicle
(mensagem)Vehicle.DurationLimit
(mensagem)Vehicle.LoadLimit
(mensagem)Vehicle.LoadLimit.Interval
(mensagem)Vehicle.TravelMode
(enum)Vehicle.UnloadingPolicy
(enum)Waypoint
(mensagem)
RouteOptimization
Um serviço para otimizar passeios em veículos.
Validade de certos 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 devem estar em [0, 253402300799], ou seja, em [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- nanos precisam ser desfeitos ou definidos como 0.
google.protobuf.Duration
- os segundos devem estar em [0, 253402300799], ou seja, em [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- O valor de nanos precisa ser redefinido ou definido como 0.
google.type.LatLng
- a latitude deve estar em [-90.0, 90.0].
- e a longitude deve estar em [-180,0, 180,0].
- pelo menos uma das latitudes e longitudes deve ser diferente de zero.
BatchOptimizeTours |
---|
Otimiza os passeios em 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 ( O usuário pode consultar o Se o campo Se o campo
|
OptimizeTours |
---|
Envia uma Um modelo de O objetivo é fornecer uma atribuição de
|
AggregatedMetrics
Métricas agregadas para ShipmentRoute
(resp. para OptimizeToursResponse
em todos os elementos Transition
e/ou Visit
(resp. em todos os ShipmentRoute
).
Campos | |
---|---|
performed_shipment_count |
Número de envios realizados. Um par de retirada e entrega é contabilizado apenas uma vez. |
travel_duration |
Duração total da viagem para um trajeto ou solução. |
wait_duration |
Duração total de espera para uma rota ou solução. |
delay_duration |
Duração total do atraso de uma rota ou solução. |
break_duration |
Duração total do intervalo de um trajeto 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 de uma rota ou solução. |
max_loads |
Carga máxima alcançada em todo o trajeto (solução resp.) para cada uma das quantidades nesse trajeto (solução resp.), calculada como a máxima sobre todas as |
BatchOptimizeToursMetadata
Esse tipo não tem campos.
Metadados da operação para chamadas BatchOptimizeToursRequest
.
BatchOptimizeToursRequest
Solicitação para otimizar passeios em lote como uma operação assíncrona. Cada arquivo de entrada precisa conter um OptimizeToursRequest
, e cada arquivo de saída contém uma 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. Segmente o projeto e o local 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 arquivos e formatos de dados. |
AsyncModelConfig
Informações para resolver um modelo de otimização de forma assíncrona.
Campos | |
---|---|
display_name |
Opcional. Nome de modelo definido pelo usuário. Pode ser utilizado como alias pelos usuários para acompanhar 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
. É retornado na operação de longa duração após a conclusão da operação.
BreakRule
Regras para gerar intervalos para um veículo (por exemplo, intervalos para o almoço). Uma pausa é um período contíguo em que o veículo permanece ocioso na posição atual e não pode realizar nenhuma visita. Pode haver uma pausa:
- durante o percurso entre duas visitas (que inclui o tempo logo antes ou logo depois de uma visita, mas não no meio de uma visita). Nesse caso, o tempo em trânsito correspondente entre as visitas é estendido.
- ou antes de ligar o veículo (não é possível ligar no meio de um intervalo). Nesse caso, isso não afeta o horário de início do veículo.
- ou depois do fim do veículo (idto, com o horário de término do veículo).
Campos | |
---|---|
break_requests[] |
Sequência de intervalos. Consulte a mensagem |
frequency_constraints[] |
Várias |
BreakRequest
A sequência de pausas (ou seja, o número e a ordem) que se aplicam a cada veículo precisa ser conhecida com antecedência. Os BreakRequest
s repetidos definem essa sequência na ordem em que precisam ocorrer. As janelas de tempo (earliest_start_time
/ latest_start_time
) podem se sobrepor, mas precisam ser compatíveis com a ordem (marcada).
Campos | |
---|---|
earliest_start_time |
Obrigatório. Limite inferior (inclusive) no início do intervalo. |
latest_start_time |
Obrigatório. Limite superior (inclusive) no 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 "É preciso fazer um intervalo de pelo menos 1 hora a cada 12 horas". Supondo que isso possa ser interpretado como "Em qualquer janela de tempo deslizante de 12h, deve haver pelo menos um intervalo de pelo menos uma hora", esse exemplo seria convertido no 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 respeitarão todas essas restrições, além das janelas de tempo e durações mínimas já especificadas no BreakRequest
.
Na prática, uma FrequencyConstraint
pode ser aplicada a intervalos não consecutivos. Por exemplo, a programação a seguir respeita a programação "1h a cada 12h" exemplo:
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 esta restrição. Não negativo. Veja a descrição de |
max_inter_break_duration |
Obrigatório. Intervalo máximo permitido de qualquer intervalo de tempo no trajeto que não inclua pelo menos parcialmente uma pausa de |
DataFormat
Formatos de dados para arquivos de entrada e saída.
Enums | |
---|---|
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. Pode ser dura ou mole.
Se um limite flexível for definido, tanto soft_max_meters
quanto cost_per_kilometer_above_soft_max
precisarão ser definidos e não negativos.
Campos | |
---|---|
max_meters |
Um limite rígido que restringe a distância a ser no máximo max_meters. O limite não pode ser negativo. |
soft_max_meters |
Um limite flexível não aplica um limite máximo de distância, mas, quando violado, resulta em um custo que é somado a outros custos definidos no modelo, com a mesma unidade. Se definido, soft_max_meters precisa ser menor que max_meters e não pode ser negativo. |
cost_per_kilometer_below_soft_max |
Custo por quilômetro incorrido, aumentando até
Este custo não é suportado em |
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 com o formato |
InjectedSolutionConstraint
Solução injetada na solicitação, incluindo informações sobre quais visitas precisam ser restritas.
Campos | |
---|---|
routes[] |
Rotas da solução a ser injetada. Algumas rotas podem ser omitidas da solução original. As rotas e as remessas ignoradas precisam atender às suposições básicas de validade listadas para |
skipped_shipments[] |
Envios pulados 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 relaxar as restrições. Se este campo estiver vazio, todos os trajetos de veículos não vazios serão totalmente restritos. |
ConstraintRelaxation
Para um grupo de veículos, especifica em qual nível as restrições de visitas serão reduzidas. Os envios listados no campo skipped_shipment
são restritos a serem pulados, ou seja, não podem ser realizados.
Campos | |
---|---|
relaxations[] |
Todos os relaxamentos de restrição de visitas que serão aplicados às visitas nos trajetos com veículos em |
vehicle_indices[] |
Especifica os índices do veículo aos quais 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 visita nova 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
definido como falso no modelo).
relaxations(i).level
especifica o nível de relaxamento de restrição aplicado a uma visita #j que satisfaça:
route.visits(j).start_time >= relaxations(i).threshold_time
Ej + 1 >= relaxations(i).threshold_visit_count
Da mesma forma, a inicialização do veículo é relaxada para relaxations(i).level
se atender a:
vehicle_start_time >= relaxations(i).threshold_time
Erelaxations(i).threshold_visit_count == 0
e a extremidade do veículo é relaxada pararelaxations(i).level
se satisfizer:vehicle_end_time >= relaxations(i).threshold_time
Eroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Para aplicar um nível de relaxamento se uma visita atender a threshold_visit_count
OU a threshold_time
, adicione dois relaxations
com o mesmo level
: um com apenas threshold_visit_count
definido e outro com apenas threshold_time
definido. Se uma visita atender às condições de vários relaxations
, o nível mais descontraído será aplicado. Como resultado, do início do veículo às visitas do trajeto até o final do veículo, o nível de relaxamento fica mais relaxado, ou seja, o nível de relaxamento não diminui à medida que o trajeto avança.
O tempo e a sequência de visitas ao trajeto que não atendem às condições limite de qualquer relaxations
são totalmente restritos, e nenhuma visita pode ser inserida nessas sequências. Além disso, se a partida ou o fim de um veículo não satisfizer as condições de qualquer relaxamento, o tempo será fixado, a menos que o veículo esteja vazio.
Campos | |
---|---|
level |
O nível de relaxamento de restrição que se aplica quando as condições em |
threshold_time |
É a hora em que a |
threshold_visit_count |
É o número de visitas durante ou depois das quais o relaxamento Se for |
Nível
Expressa os diferentes níveis de relaxamento de restrição, que são aplicados a uma visita e aqueles que se seguem quando ela satisfaz as condições limite.
A enumeração abaixo está em ordem crescente de relaxamento.
Enums | |
---|---|
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 e de término da visita serão flexibilizados, mas cada visita permanece vinculada ao mesmo veículo e a sequência da visita deve ser observada: 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 realizadas por esse veículo, mas podem se tornar menos realizadas. |
RELAX_ALL_AFTER_THRESHOLD |
Igual a RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , mas o veículo é relaxado: as visitas são totalmente sem custo financeiro dentro do tempo limite ou depois dele e podem ter um desempenho inferior. |
InputConfig
Especifique uma entrada para [BatchOptimizeTours][google.maps.routeoptimization.v1.Route OptimizationService.BatchOptimizeTours].
Campos | |
---|---|
data_format |
Obrigatório. O formato de 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 cabeçalho opcional).
Campos | |
---|---|
lat_lng |
As coordenadas geográficas do waypoint. |
heading |
A orientação da bússola associada à direção do fluxo do tráfego. Esse valor é usado para especificar o lado da estrada a ser usado para retirada e entrega. Os valores de direção podem variar de 0 a 360, em que 0 especifica uma direção de norte, 90 especifica uma direção de leste etc. |
OptimizeToursRequest
Solicitação a ser dada a um solucionador de otimização de tour que define o modelo de remessa a ser resolvido, bem como os parâmetros de otimização.
Campos | |
---|---|
parent |
Obrigatório. Projeto ou local de destino para fazer uma ligação. Formato: * Se nenhum local for especificado, uma região será escolhida automaticamente. |
timeout |
Se esse tempo limite for definido, o servidor retornará uma resposta antes que o tempo limite tenha decorrido ou que o prazo do servidor para solicitações síncronas seja atingido, o que ocorrer primeiro. Para solicitações assíncronas, o servidor vai gerar uma solução (se possível) antes do tempo limite expirar. |
model |
Modelo de envio para resolver. |
solving_mode |
Por padrão, o modo de resolução é |
search_mode |
Modo de pesquisa usado para resolver a solicitação. |
injected_first_solution_routes[] |
Orientar o algoritmo de otimização para encontrar uma primeira solução semelhante a uma solução anterior. O modelo é restrito quando a primeira solução é criada. Quaisquer remessas 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 suposiçõ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, e um erro indicando a inviabilidade poderá ser retornado. |
injected_solution_constraint |
Limitar o algoritmo de otimização para encontrar uma solução final semelhante a uma anterior. Por exemplo, isso pode ser usado para congelar partes de rotas que já foram concluídas ou que estão a serem concluídas, mas não devem ser modificadas. Se a solução injetada não for viável, um erro de validação não será necessariamente retornado e um erro indicando inviabilidade poderá ser retornado. |
refresh_details_routes[] |
Se não estiverem vazios, os trajetos informados serão atualizados sem modificar a sequência subjacente de visitas ou tempos de viagem: apenas outros detalhes serão atualizados. Isso não resolve o modelo. Desde 11/2020, ele preenche apenas as polilinhas de trajetos não vazios e exige que Os campos Esse campo não pode ser usado com
|
interpret_injected_solutions_using_labels |
Se verdadeiro:
Essa interpretação se aplica aos campos Se verdadeiro, os rótulos nas seguintes categorias precisam aparecer no máximo uma vez na categoria:
Se um A remoção de visitas ao trajeto ou trajetos inteiros 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 autor da chamada precisa garantir que cada |
consider_road_traffic |
Considere a estimativa de tráfego no cálculo dos campos |
populate_polylines |
Se verdadeiro, as polilinhas serão preenchidas nas |
populate_transition_polylines |
Se for verdadeiro, as polilinhas serão preenchidas na resposta |
allow_large_deadline_despite_interruption_risk |
Se esse valor for definido, a solicitação poderá ter um prazo de até 60 minutos (consulte https://grpc.io/blog/deadlines). Caso contrário, o prazo máximo é de apenas 30 minutos. As solicitações de longa duração têm um risco de interrupção significativamente maior, mas ainda pequeno. |
use_geodesic_distances |
Se verdadeiro, 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 essa solicitação, informado no |
geodesic_meters_per_second |
Quando |
max_validation_errors |
Corta o número de erros de validação retornados. Esses erros normalmente são anexados a um payload de erro INVALID_MCC como um detalhe do 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, trocando a latência pela qualidade da solução. O prazo de solicitação global é aplicado em todos os modos.
Enums | |
---|---|
SEARCH_MODE_UNSPECIFIED |
Modo de pesquisa não especificado, equivalente a RETURN_FAST . |
RETURN_FAST |
Pare a pesquisa depois de encontrar a primeira solução válida. |
CONSUME_ALL_AVAILABLE_TIME |
Dedique todo o tempo disponível para procurar soluções melhores. |
SolvingMode
Define como o solucionador deve lidar com a solicitação. Em todos os modos, exceto VALIDATE_ONLY
, se a solicitação for inválida, você receberá um erro INVALID_REQUEST
. Consulte max_validation_errors
para limitar o número de erros retornados.
Enums | |
---|---|
DEFAULT_SOLVE |
Resolva o modelo. Os avisos podem ser emitidos em [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Valida o modelo sem resolvê-lo: preenche o maior número possível de OptimizeToursResponse.validation_errors . |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Só preenche IMPORTANTE: nem todos os envios inviáveis são retornados aqui, mas apenas os que são detectados como inviáveis durante o pré-processamento. |
OptimizeToursResponse
Resposta após resolver um problema de otimização de tour contendo as rotas seguidas por cada veículo, as remessas que foram ignoradas e o custo geral da solução.
Campos | |
---|---|
routes[] |
Trajetos calculados para cada veículo. a i-ésima rota corresponde ao i-ésimo veículo no modelo. |
request_label |
Cópia de |
skipped_shipments[] |
A lista de todos os envios pulados. |
validation_errors[] |
Lista de todos os erros de validação que detectamos de forma independente. Consulte "VÁRIOS ERROS" explicação para a mensagem |
metrics |
Métricas de duração, distância e uso desta solução. |
Métricas
Métricas gerais agregadas em todos os trajetos.
Campos | |
---|---|
aggregated_route_metrics |
Agregado sobre as rotas. Cada métrica é a soma (ou máximo, para as cargas) de todos os campos |
skipped_mandatory_shipment_count |
Número de envios obrigatórios pulados. |
used_vehicle_count |
Número de veículos usados. Observação: se um trajeto de veículo estiver vazio e |
earliest_vehicle_start_time |
O horário de início mais cedo de um veículo usado, calculado como o mínimo de 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 de |
costs |
Custo da solução, detalhado por campos de solicitação relacionados ao custo. As chaves são caminhos proto, em relação à entrada OptimizeToursRequests, 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 retirada da solução. Todos os custos definidos no modelo são informados em detalhes aqui, exceto os custos relacionados a TransitionAttributes, que são informados 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. |
OptimizeToursValidationError
Descreve um erro ou aviso encontrado ao validar um OptimizeToursRequest
.
Campos | |
---|---|
code |
Um erro de validação é definido pelo par ( Outros campos (abaixo) 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 serão "fatais", o que significa que interrompem todo o processo de validação. Esse é o caso de erros ESTABILIDADE: REFERÊNCIA: uma lista de todos os pares (código, nome):
|
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, consultar o veículo 4 e a primeira retirada da remessa 2 pode ser feito da seguinte maneira:
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. Você não deve confiar nele e usá-lo apenas para depuração manual do modelo. |
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 2 de start_time_windows
do veículo 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 evitar sobrecarregar a mensagem.
Campos | |
---|---|
name |
Nome do campo, por exemplo, "vehicles". |
sub_field |
Subcampo anidado recursivamente, se necessário. |
Campo de união
|
|
index |
Índice do campo se ele for repetido. |
key |
Chave se o campo for um mapa. |
OutputConfig
Especifique um destino para os resultados de [BatchOptimizeTours][google.maps.routeoptimization.v1.Route OptimizationService.BatchOptimizeTours].
Campos | |
---|---|
data_format |
Obrigatório. O formato de 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 atendidas ao calcular trajetos 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 é necessário evitar vias com pedágio onde for razoável. Será dada preferência aos trajetos que não contenham vias com pedágio. Aplicável apenas aos meios de transporte motorizados. |
avoid_highways |
Especifica se é necessário evitar rodovias quando for razoável. A preferência será dada às rotas que não contêm rodovias. Aplicável apenas aos meios de transporte motorizados. |
avoid_ferries |
Especifica se balsas devem ser evitadas quando for razoável. A preferência será dada a rotas que não incluem viagens de balsa. Aplicável apenas aos meios de transporte motorizados. |
avoid_indoor |
Opcional. Especifica se é necessário evitar a navegação em ambientes fechados, quando razoável. Será dada preferência para trajetos que não contenham navegação interna. Aplicável apenas ao modo de viagem |
Envio
O envio de um único item, de uma das coletas para uma das entregas. Para que o frete seja considerado realizado, um veículo único precisa visitar um dos locais de coleta (e diminuir a capacidade extra de acordo com isso) e, depois, visitar um dos locais de entrega (aumentar a capacidade extra de acordo com isso).
Campos | |
---|---|
display_name |
O nome de exibição definido pelo usuário para o envio. 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 à remessa. Se não for especificado, o veículo só vai precisar visitar um local correspondente às retiradas. |
load_demands |
Carregar as demandas do envio (por exemplo, peso, volume, número de paletes etc.). As chaves no mapa devem 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 pode realizar este envio. Se estiver vazio, todos os veículos poderão realizar essa ação. Os veículos são informados pelo índice na lista |
costs_per_vehicle[] |
Especifica o custo incorrido quando o envio é entregue por cada veículo. Se especificado, ele precisa ter:
Esses custos precisam estar na mesma unidade que |
costs_per_vehicle_indices[] |
Índices dos veículos aos quais |
pickup_to_delivery_absolute_detour_limit |
Especifica o tempo máximo de desvio absoluto em comparação com o caminho mais curto entre o embarque e a entrega. Se especificado, precisa ser não negativo, e o envio precisa conter pelo menos uma coleta e uma entrega. Por exemplo, permita t ser o menor tempo necessário para ir da opção de retirada selecionada diretamente para a opção de entrega selecionada. Em seguida, definir
Se os limites relativos e absolutos forem especificados na mesma remessa, o limite mais restrito será usado para cada par de retirada/entrega possível. Desde outubro de 2017, os desvios são aceitos apenas quando a duração da viagem não depende de veículos. |
pickup_to_delivery_time_limit |
Especifica a duração máxima entre o início da retirada e o início da entrega de uma remessa. Se especificado, o valor não pode ser negativo e a remessa precisa conter pelo menos uma retirada e uma entrega. Isso não depende das alternativas selecionadas para retirada e entrega nem da velocidade do veículo. Isso pode ser especificado ao lado de restrições de desvio máximo: a solução respeitará as duas especificações. |
shipment_type |
String não vazia que especifica um "tipo" para esse envio. Esse recurso pode ser usado para definir incompatibilidades ou requisitos entre É diferente de |
label |
Especifica um rótulo para a remessa. Esse rótulo é informado na resposta no |
ignore |
Se verdadeiro, ignore esse envio, mas não aplique um Ignorar uma remessa vai resultar em um erro de validação quando houver É permitido ignorar uma remessa realizada em |
penalty_cost |
Se o envio não for concluído, essa penalidade será adicionada ao custo total das rotas. Um envio é considerado concluído 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 ao custo no modelo e precisa ser positivo. IMPORTANTE: se essa penalidade não for especificada, será considerada infinita, ou seja, o envio precisará 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 entre o embarque e a entrega. Se especificado, precisa ser não negativo, e o envio precisa conter pelo menos uma coleta e uma entrega. Por exemplo, vamos supor que t seja o tempo mais curto para ir da alternativa de retirada selecionada diretamente para a alternativa de entrega selecionada. Em seguida, definir
Se os limites relativos e absolutos forem especificados na mesma remessa, o limite mais restrito será usado para cada par de retirada/entrega possível. Desde 2017/10, os desvios só são permitidos quando a duração da viagem não depende de veículos. |
Carregar
Ao realizar uma visita, um valor predefinido pode ser adicionado à carga do veículo, no caso de retirada, ou subtraído, no caso de uma entrega. Essa mensagem define esse valor. Consulte load_demands
.
Campos | |
---|---|
amount |
O valor pelo qual a carga do veículo realizando a visita correspondente varia. Como é um número inteiro, os usuários são aconselhados a escolher uma unidade adequada para evitar a perda de precisão. Precisa ser ≥ 0. |
VisitRequest
Solicitação de visita que pode ser feita por um veículo: ela tem uma localização geográfica (ou duas, consulte abaixo), horários de abertura e fechamento representados por janelas de horário e um tempo de duração do serviço (o tempo gasto pelo veículo depois que ele chega à coleta ou entrega de mercadorias).
Campos | |
---|---|
arrival_location |
A localização geográfica de onde o veículo chega ao realizar este |
arrival_waypoint |
O waypoint onde o veículo chega ao realizar esta |
departure_location |
A localização geográfica de onde o veículo sai depois de concluir este |
departure_waypoint |
O waypoint de partida do veículo depois de concluir esta |
tags[] |
Especifica as tags anexadas à solicitação de visita. Strings vazias ou duplicadas não são permitidas. |
time_windows[] |
Janelas de tempo que restringem o horário de chegada em uma visita. Um veículo pode sair da janela de horário de chegada, ou seja, o horário de chegada + duração não precisam estar dentro de uma janela de horário. Isso poderá resultar em tempo de espera se o veículo chegar antes de A ausência de As janelas de tempo precisam ser separadas, ou seja, não podem se sobrepor ou ficar adjacentes a outra e precisam estar em ordem crescente.
|
duration |
Duração da visita, ou seja, o 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 um envio. Esse custo precisa estar na mesma unidade que |
load_demands |
Carregue as demandas desta solicitação de visita. Ele é parecido com o campo |
visit_types[] |
Especifica os tipos de visita. Pode ser usado para alocar o tempo necessário para que um veículo conclua a visita (consulte Cada tipo só pode aparecer uma vez. |
label |
Especifica um rótulo para este |
ShipmentModel
Um modelo de envio contém um conjunto de envios que precisam ser realizados por um conjunto de veículos, minimizando o custo geral, que é a soma de:
- o custo de rotear os veículos (soma do custo por tempo total, custo por tempo de viagem e custo fixo de todos os veículos).
- as penalidades de remessas não realizadas.
- o custo da duração global dos envios
Campos | |
---|---|
shipments[] |
Conjunto de remessas que devem ser executadas no modelo. |
vehicles[] |
Conjunto de veículos que podem ser usados para realizar visitas. |
global_start_time |
Horários globais de início e término 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 como padrão 00:00:00 UTC, 1o de janeiro de 1971 (ou seja, segundos: 31536000, nanos: 0). |
global_duration_cost_per_hour |
A "duração global" do plano geral é a diferença entre o horário de início efetivo mais próximo e o horário de término efetivo mais recente de todos os veículos. Os usuários podem atribuir um custo por hora a essa quantidade para tentar otimizar para a conclusão da tarefa mais cedo, 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 este campo estiver vazio, o Google Maps ou as distâncias geodésicas serão usadas, dependendo do valor do campo Exemplos de uso:
|
duration_distance_matrix_src_tags[] |
Tags que definem as origens 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 bundle_types incompatíveis (consulte |
shipment_type_requirements[] |
Conjuntos de requisitos de |
precedence_rules[] |
Conjunto de regras de precedência que precisam ser aplicadas no modelo. |
max_active_vehicles |
Restringe o número máximo de veículos ativos. Um veículo estará ativo se sua rota realizar pelo menos uma remessa. Isso pode ser usado para limitar o número de rotas no caso em que há menos motoristas do que veículos e a frota de veículos é heterogênea. A otimização vai selecionar o melhor subconjunto de veículos para uso. Precisa ser estritamente positivo. |
DurationDistanceMatrix
Especifica uma matriz de duração e distância dos locais de partida e de partida dos veículos para visitar e dos locais finais dos veículos.
Campos | |
---|---|
rows[] |
Especifica as linhas da matriz de duração e distância. Ele precisa ter a mesma quantidade 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 matriz. Cada partida de veículo precisa corresponder exatamente a uma matriz, ou seja, exatamente um dos campos Todas as matrizes precisam ter um |
Linha
Especifica uma linha da matriz de duração e distância.
Campos | |
---|---|
durations[] |
os valores de duração de uma linha específica. Ele precisa ter a mesma quantidade de elementos que |
meters[] |
Valores de distância de uma linha específica. Se nenhum custo ou restrição se referir a distâncias no modelo, este campo pode ser deixado em branco. Caso contrário, precisa ter a mesma quantidade de elementos que |
PrecedenceRule
Uma regra de precedência entre dois eventos (cada evento é a retirada ou a entrega de uma remessa): o "segundo" evento precisa começar pelo menos offset_duration
depois do "primeiro" foi iniciado.
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 ignorados.
Campos | |
---|---|
first_is_delivery |
Indica se a "primeira" é uma entrega. |
second_is_delivery |
Indica se o "segundo" é uma entrega. |
offset_duration |
O deslocamento entre o "primeiro" e "segundo" evento. Pode ser negativo. |
first_index |
Índice de envio do "primeiro" evento. Este campo precisa ser especificado. |
second_index |
Índice de envio do "segundo" evento. Este campo precisa ser especificado. |
ShipmentRoute
O trajeto de um veículo pode ser decomposto ao longo do eixo de tempo, desta forma (consideramos que há 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
Observe que fazemos uma diferença entre:
- "eventos pontuais", como início e fim do veículo e o início e o término de cada visita (também conhecido como chegada e partida). Eles acontecem em um determinado segundo.
- "intervalos de tempo", como as próprias visitas e a transição entre as visitas. Embora os intervalos de tempo às vezes possam ter duração zero, ou seja, começam e terminam 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 anterior a ela (mesmo índice) e uma transição depois dela (índice + 1).
- O início do veículo é sempre seguido pela transição 0.
- O fim do veículo é sempre precedido pela transição #n.
Aumentando o zoom, confira o que acontece durante uma Transition
e uma 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, confira como TRAVEL, BREAKS, DELAY e WAIT podem ser organizados durante uma transição.
- Elas não se sobrepõem.
- O DELAY é único e precisa ser um período contíguo de tempo antes da próxima visita (ou término do veículo). Portanto, basta saber a duração do atraso para saber o início e o fim.
- Os intervalos são períodos de tempo contíguos e não sobrepostos. A resposta especifica o horário de início e a duração de cada intervalo.
- VIAGEM e ESPERA são "preemptíveis": podem ser interrompidas várias vezes durante essa transição. Os clientes podem supor que a viagem acontece "assim que possível" e "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 executa a rota, identificado pelo índice na origem |
vehicle_label |
Rótulo do veículo que realiza esse trajeto, igual a |
vehicle_start_time |
Horário em que o veículo inicia o trajeto. |
vehicle_end_time |
Horário em que o veículo termina o trajeto. |
visits[] |
Sequência ordenada de visitas que representa uma rota. visits[i] é a i-ésima visita na rota. Se este campo estiver vazio, o veículo será considerado não utilizado. |
transitions[] |
Lista ordenada de transições para a rota. |
has_traffic_infeasibilities |
Quando
A chegada em next_visit provavelmente vai acontecer depois da janela de tempo atual devido ao aumento da estimativa do tempo de viagem de |
route_polyline |
A representação da polilinha codificada do trajeto. Esse campo só será preenchido se |
breaks[] |
Intervalos programados para o veículo que executa este trajeto. A sequência |
metrics |
Métricas de duração, distância e carga para essa rota. Os campos de |
route_costs |
Custo da rota, 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 todo o trajeto. Em outras palavras, custos["model.shipments.pickups.cost"] é a soma de todos os custos de retirada no trajeto. Todos os custos definidos no modelo são informados em detalhes aqui, com exceção dos custos relacionados a TransitionAttributes que só foram informados de maneira agregada a partir de 2022/01. |
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 pausa.
Campos | |
---|---|
start_time |
Início do intervalo. |
duration |
Duração de uma pausa. |
EncodedPolyline
A representação codificada de uma polilinha. Veja mais informações sobre a codificação de polilinhas aqui: 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. Veja a descrição de ShipmentRoute
.
Se o veículo não tiver 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 por |
delay_duration |
Soma das durações de atraso aplicadas a essa transição. Se for o caso, o atraso vai começar 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 no |
wait_duration |
Tempo gasto em espera durante essa transição. A duração da espera corresponde ao tempo de inatividade e não inclui o tempo de intervalo. Esse tempo de espera pode ser dividido em vários intervalos não contíguos. |
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 da rota seguida durante a transição. Esse campo só será preenchido se |
vehicle_loads |
Carregamentos 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. Em seguida, após cada visita, o |
VehicleLoad
Informa a carga real do veículo em algum ponto ao longo 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 |
Acesse
Uma visita realizada durante um trajeto. Essa visita corresponde a uma retirada ou entrega de Shipment
.
Campos | |
---|---|
shipment_index |
Índice do campo |
is_pickup |
Se verdadeiro, a visita corresponde a um embarque de |
visit_request_index |
Índice de |
start_time |
Horário em que a visita começa. O veículo pode chegar antes disso ao local da visita. Os horários são consistentes com o |
load_demands |
Demanda de carregamento total de visitas como a soma do envio e da solicitação de visita |
detour |
Tempo de desvio extra devido aos envios visitados na rota antes da visita e ao possível tempo de espera induzido pelos períodos de tempo. Se a visita for uma entrega, o desvio será calculado a partir da visita de embarque correspondente e será igual a:
Caso contrário, ele será calculado a partir do veículo
|
shipment_label |
Cópia do |
visit_label |
Cópia do |
ShipmentTypeIncompatibility
Especifica as incompatibilidades entre as remessas, dependendo do delivery_type. A exibição de remessas incompatíveis no mesmo trajeto é restrita com base no modo de incompatibilidade.
Campos | |
---|---|
types[] |
Lista de tipos incompatíveis. Duas remessas com |
incompatibility_mode |
Modo aplicado à incompatibilidade. |
IncompatibilityMode
Modos que definem como a aparência de remessas incompatíveis são restritas no mesmo trajeto.
Enums | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Modo de incompatibilidade não especificado. Esse valor nunca pode ser usado. |
NOT_PERFORMED_BY_SAME_VEHICLE |
Nesse modo, duas remessas com tipos incompatíveis nunca podem compartilhar o mesmo veículo. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Para duas remessas com tipos incompatíveis com o modo de incompatibilidade
|
ShipmentTypeRequirement
Especifica os requisitos entre as remessas com base em remessa_type. Os detalhes do requisito são definidos 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 de modo que um |
requirement_mode |
Modo aplicado ao requisito. |
RequirementMode
Modos que definem a aparência das remessas dependentes em um trajeto.
Enums | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Modo de requisito não especificado. Esse valor nunca pode ser usado. |
PERFORMED_BY_SAME_VEHICLE |
Neste modo, todos os "dependentes" remessas devem compartilhar o mesmo veículo que pelo menos um dos remessas. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Com o modo Uma condição A retirada de pedidos precisa ter:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Igual antes, exceto que os envios "dependentes" precisam ter um envio "obrigatório" no veículo no momento da entrega. |
SkippedShipment
Especifica os detalhes dos envios não realizados em uma solução. Em casos triviais e/ou se pudermos identificar o motivo da ação de ignorar, vamos informar o motivo aqui.
Campos | |
---|---|
index |
O índice corresponde ao índice da remessa na |
label |
Cópia do |
reasons[] |
Uma lista de motivos que explicam por que o envio foi pulado. Veja o comentário acima de |
Motivo
Se pudermos explicar por que o envio foi pulado, 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 remessa ignorada não pode ter motivos duplicados, ou seja, quando 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
}
A remessa ignorada é incompatível com todos os veículos. Os motivos podem ser diferentes para todos os veículos, exceto "Maçãs" de pelo menos um veículo a capacidade seja excedida (incluindo o veículo 1), pelo menos o valor de "Pera" de um veículo a capacidade 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_exceeded_capacity_type |
Se o código do motivo for |
example_vehicle_index |
Se o motivo estiver relacionado a uma incompatibilidade entre o envio e o veículo, esse campo vai mostrar o índice de um veículo relevante. |
Código
Código que identifica o tipo de motivo. A ordem não faz sentido. Em particular, ela não indica se um determinado motivo aparecerá antes de outro na solução, se ambos forem aplicáveis.
Enums | |
---|---|
CODE_UNSPECIFIED |
Isso nunca deve ser usado. |
NO_VEHICLE |
Nenhum veículo no modelo torna todos os envios inviáveis. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
A demanda da remessa excede a capacidade do veículo para alguns tipos de capacidade, uma delas é example_exceeded_capacity_type . |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
A distância mínima necessária para realizar o frete, ou seja, do Para essa computação, usamos as distâncias geodésicas. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
O tempo mínimo necessário para realizar a remessa, incluindo tempo de viagem, tempo de espera e tempo de serviço, excede o Observação: o tempo de viagem é calculado no melhor cenário, 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 item 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 poderá realizar esse envio no melhor cenário (consulte CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT para computação de tempo) se ele começar no horário de início mais cedo: o tempo total fará com que o veículo termine após o horário de término mais recente. |
VEHICLE_NOT_ALLOWED |
O campo allowed_vehicle_indices do frete não está vazio e o veículo não pertence a ele. |
TimeWindow
Elas restringem o horário de um evento, como o horário de chegada em uma visita ou os horários de início e término de um veículo.
Os limites rígidos da janela de tempo, start_time
e end_time
, aplicam 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 pela ocorrência do evento em soft_start_time
ou depois, incorrendo em um custo proporcional ao tempo antes de soft_start_time o evento ocorrer. O limite superior da janela de tempo flexível, soft_end_time
, expressa uma preferência para que o evento ocorra até soft_end_time
ao incorrer em um custo proporcional ao tempo após soft_end_time
ocorrer. 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 devem 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 da janela de tempo de hardware. Se não for especificado, ele será definido como |
end_time |
O horário de término da janela de tempo de hardware. Se não for especificado, ele será definido como |
soft_start_time |
O horário de início flexível da janela de tempo. |
soft_end_time |
É o horário de término flexível da janela. |
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 deve 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árias TransitionAttributes
podem ser aplicadas à mesma transição. Nesse caso, todos os custos extras são somados e a restrição ou o limite mais rigoroso é aplicado, seguindo a semântica natural "E".
Campos | |
---|---|
src_tag |
Tags que definem o conjunto de transições (src->dst) às quais esses atributos se aplicam. Uma visita de origem ou um início de veículo corresponde se a |
excluded_src_tag |
Consulte |
dst_tag |
Uma visita ao destino ou final do veículo corresponde se a |
excluded_dst_tag |
Consulte |
cost |
Especifica um custo para executar essa transição. Esse valor está na mesma unidade que todos os outros custos no modelo e não pode ser negativo. Ele é aplicado sobre todos os outros custos existentes. |
cost_per_kilometer |
Especifica um custo por quilômetro aplicado à distância percorrida durante essa transição. A soma de todos os valores |
distance_limit |
Especifica um limite para a distância percorrida ao realizar essa transição. A partir de junho de 2021, apenas os limites flexíveis são aceitos. |
delay |
Especifica um atraso incorrido ao realizar essa transição. Esse atraso sempre ocorre após a conclusão da visita de origem e antes do início da visita de destino. |
Veículo
Modela um veículo em um problema de envio. Resolver um problema de frete criará um trajeto entre start_location
e end_location
para este veículo. Um trajeto é uma sequência de visitas (consulte ShipmentRoute
).
Campos | |
---|---|
display_name |
Nome de exibição definido pelo usuário do veículo. Ele pode ter até 63 caracteres e usar caracteres UTF-8. |
travel_mode |
O meio de transporte 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 atendidas que afetam a forma como as rotas são calculadas para o veículo. |
start_location |
Localização geográfica em que o veículo inicia antes de retirar qualquer remessa. Se não for especificado, o veículo será iniciado na primeira retirada. Se o modelo de envio tiver matrizes de duração e distância, |
start_waypoint |
Waypoint que representa uma localização geográfica em que o veículo começa antes de retirar qualquer remessa. Se |
end_location |
Localização geográfica onde o veículo termina depois de concluir a última |
end_waypoint |
Waypoint que representa uma localização geográfica em que o veículo termina depois de concluir o último |
start_tags[] |
Especifica tags anexadas ao início do trajeto do veículo. Strings vazias ou duplicadas não são permitidas. |
end_tags[] |
Especifica tags anexadas ao final do trajeto do veículo. Strings vazias ou duplicadas não são permitidas. |
start_time_windows[] |
Janelas de tempo em que o veículo pode partir do local de início. Elas precisam estar dentro dos limites de tempo globais (consulte os campos As janelas de tempo do mesmo campo repetido precisam estar separadas, ou seja, não podem se sobrepor nem estar adjacentes a outra, e precisam estar em ordem cronológica.
|
end_time_windows[] |
Janelas de tempo em que o veículo pode chegar ao local de destino. Elas precisam estar dentro dos limites de tempo globais (consulte os campos As janelas de tempo do mesmo campo repetido precisam estar separadas, ou seja, não podem se sobrepor nem estar adjacentes a outra, e precisam estar em ordem cronológica.
|
unloading_policy |
Política de descarregamento 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 somados e precisam estar na mesma unidade que Custo por hora do trajeto do veículo. Esse custo é aplicado ao tempo total gasto pelo trajeto e inclui os tempos de viagem, de espera e de visita. Usar |
cost_per_traveled_hour |
Custo por hora percorrida do trajeto do veículo. Esse custo é aplicado apenas ao tempo de percurso do trajeto (ou seja, o que é informado em |
cost_per_kilometer |
Custo por quilômetro do trajeto 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 |
Este campo só é válido para veículos quando o trajeto deles não inclui envios. Ele indica se o veículo deve ser considerado usado ou não nesse caso. Se verdadeiro, o veículo vai do início ao local de destino, mesmo que não atenda nenhuma remessa, e os custos de tempo e distância resultantes desse início --> final da viagem são consideradas. Caso contrário, ele não vai do ponto inicial até o local final, e não há |
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 no trajeto do veículo. Em um determinado |
route_distance_limit |
Limite aplicado à distância total do trajeto do veículo. Em uma determinada |
extra_visit_duration_for_visit_type |
Especifica um mapa das strings visit_types para durações. A duração é um tempo além de Se um pedido de visita tiver vários tipos, uma duração será adicionada para cada um deles no mapa. |
break_rule |
Descreve a programação de pausas a ser aplicada a esse veículo. Se estiver vazio, nenhuma pausa será programada para este veículo. |
label |
Especifica um rótulo para este veículo. Esse rótulo é informado na resposta como o |
ignore |
Se for verdadeiro, Se uma remessa for realizada por um veículo ignorado no Se uma remessa for realizada 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 desse veículo. Por exemplo, definir como 2.0 significa que o veículo é mais lento e tem tempos de viagem que são o dobro do de veículos padrão. Esse múltiplo não afeta a duração das visitas. Ela vai afetar o custo se AVISO: os tempos de viagem serão arredondados para o segundo mais próximo após a aplicação desse múltiplo, mas antes de realizar qualquer operação numérica. Portanto, um pequeno múltiplo pode resultar em uma perda de precisão. Consulte também |
DurationLimit
Um limite que define a duração máxima do trajeto de um veículo. Pode ser dura ou mole.
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 rígido que restringe a duração a no máximo max_duration. |
soft_max_duration |
Um limite flexível que não impõe um limite de duração máximo, mas que, quando violado, faz com que a rota incorra em custos. 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áximo, 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 incorrida se o limite de O custo adicional será 0 se a duração estiver abaixo do limite. Caso contrário, o custo dependerá 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 de 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 da rota. |
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. |
Intervalo
Intervalo de valores de carga aceitáveis.
Campos | |
---|---|
min |
Uma carga mínima aceitável. Precisa ser ≥ 0. Se ambos forem especificados, |
max |
Uma carga máxima aceitável. Precisa ser ≥ 0. Se não for especificada, a carga máxima será irrestrita por esta mensagem. Se ambos forem especificados, |
TravelMode
Meios de transporte que podem ser usados por veículos.
Eles precisam ser um subconjunto dos modos de transporte da API Preferred Routes da Plataforma Google Maps. Consulte: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
Enums | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
Meio de transporte não especificado, equivalente a DRIVING . |
DRIVING |
Modo de transporte correspondente às rotas de carro (carro, ...). |
WALKING |
Meio de transporte correspondente às rotas a pé. |
UnloadingPolicy
Política sobre como um veículo pode ser descarregado. Aplicável apenas a fretes com retirada e entrega.
Outros envios são sem custo financeiro em qualquer lugar do trajeto, independentemente da unloading_policy
.
Enums | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Política de descarregamento não especificada; as entregas precisam ocorrer somente após as retiradas correspondentes. |
LAST_IN_FIRST_OUT |
As entregas precisam ser feitas em ordem inversa à das retiradas |
FIRST_IN_FIRST_OUT |
As entregas precisam ser feitas no mesmo pedido das retiradas |
Ponto de referência
Encapsula um waypoint. Os pontos de passagem marcam os locais de chegada e partida de Solicitações de visita e os locais de início e término dos veículos.
Campos | |
---|---|
side_of_road |
Opcional. Indica que o local deste waypoint deve ter uma preferência quanto à parada do veículo em um lado específico da via. Quando você define esse valor, o trajeto passa pelo local para que o veículo possa parar no lado da estrada para o qual o local está direcionado do centro da estrada. Esta opção não funciona para "WALKING" meio de transporte. |
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 por meio de coordenadas geográficas, incluindo um cabeçalho opcional. |
place_id |
O ID de lugar do PDI associado ao waypoint. |