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  | 
| skippedShipments[] | 
 Envios pulados da solução a ser injetada. Alguns podem ser omitidos da solução original. Consulte o campo  | 
| constraintRelaxations[] | 
 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  | 
| vehicleIndices[] | 
 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 da restrição aplicado a uma visita #j que atende a:
- route.visits(j).start_time >= relaxations(i).threshold_timeE
- j + 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_timeE
- relaxations(i).threshold_visit_count == 0e a extremidade do veículo é relaxada para- relaxations(i).levelse atender aos seguintes requisitos:
- vehicleEndTime >= relaxations(i).threshold_timeE
- route.visits_size() + 1 >= relaxations(i).threshold_visit_count
Para aplicar um nível de relaxamento se uma visita atende aos requisitos da thresholdVisitCount OU da 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  | 
| thresholdTime | 
 O tempo em que ou depois do qual o  Usa o RFC 3339, em que a saída gerada é sempre normalizada em Z e usa 0, 3, 6 ou 9 dígitos fracionários. Deslocamentos diferentes de "Z" também são aceitos. Exemplos:  | 
| thresholdVisitCount | 
 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. |