Solução injetada na solicitação, incluindo informações sobre quais visitas precisam ser restringidas e como elas precisam ser restringidas.
Representação JSON |
---|
{ "routes": [ { object ( |
Campos | |
---|---|
routes[] |
Rotas da solução a ser injetada. Algumas rotas podem ser omitidas da solução original. As rotas e os envios pulados precisam atender às suposições de validade básicas listadas para |
skipped |
Envios ignorados da solução a ser injetada. Alguns podem ser omitidos da solução original. Consulte o campo |
constraint |
Para zero ou mais grupos de veículos, especifica quando e quanto relaxar 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 relaxadas e em qual nível. Os envios listados no campo skipped_shipment
são restritos a serem pulados, ou seja, não podem ser realizados.
Representação JSON |
---|
{
"relaxations": [
{
object ( |
Campos | |
---|---|
relaxations[] |
Todas as flexibilizações de restrição de visitas que serão aplicadas a visitas em trajetos com veículos em |
vehicle |
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 tenha usedIfRouteIsEmpty
definido como falso no modelo).
relaxations(i).level
especifica o nível de relaxamento de restrição aplicado a uma visita #j que atende 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 ele atender aos seguintes requisitos:
vehicleStartTime >= relaxations(i).threshold_time
Erelaxations(i).threshold_visit_count == 0
e a extremidade do veículo é relaxada pararelaxations(i).level
se ela atender aos seguintes requisitos:vehicleEndTime >= relaxations(i).threshold_time
Eroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Para aplicar um nível de relaxamento se uma visita atende aos requisitos de thresholdVisitCount
OU thresholdTime
, adicione duas relaxations
com o mesmo level
: uma com apenas thresholdVisitCount
definida e a outra com apenas thresholdTime
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é as visitas de rota em ordem até o final do veículo, o nível de relaxamento se torna mais relaxado, ou seja, o nível de relaxamento não diminui à medida que a rota avança.
O tempo e a sequência de visitas de 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 qualquer relaxamento, o tempo será fixo, a menos que o veículo esteja vazio.
Representação JSON |
---|
{
"level": enum ( |
Campos | |
---|---|
level |
O nível de relaxamento de restrição que se aplica quando as condições em ou após |
threshold |
O tempo em que ou após o qual a Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: |
threshold |
O número de visitas a partir do qual a flexibilização Se for |
Nível
Expressa os diferentes níveis de relaxamento de restrição, que são aplicados a uma visita e às que seguem quando ela atende às condições de limite.
A enumeração abaixo está em ordem de relaxamento crescente.
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 término da visita e do veículo serão relaxados, mas cada visita continua vinculada ao mesmo veículo, e a sequência de visitas precisa 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 é relaxada: as visitas só podem ser realizadas por esse 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 é relaxado: as visitas são totalmente sem custo financeiro no horário limite ou depois dele e podem não ser realizadas. |