Solução injetada na solicitação, incluindo informações sobre quais visitas devem ser limitadas e como elas devem ser limitadas.
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 remessas ignoradas precisam atender às suposições de validade básicas listadas para |
skippedShipments[] |
As remessas da solução a serem injetadas foram ignoradas. Alguns podem ser omitidos da solução original. Veja o campo |
constraintRelaxations[] |
Para zero ou mais grupos de veículos, especifica quando e quanto relaxar restrições. Se este campo estiver vazio, todos os trajetos com veículos não vazios serão totalmente restritos. |
ConstraintRelaxation
Para um grupo de veículos, especifica em quais limites as restrições de visitas serão reduzidas e em qual nível. As remessas listadas no campo skipped_shipment
são restritas a serem ignoradas, ou seja, não podem ser realizadas.
Representação JSON |
---|
{
"relaxations": [
{
object ( |
Campos | |
---|---|
relaxations[] |
Todos os relaxamentos de restrição de visita que se aplicam às visitas em trajetos com veículos em |
vehicleIndices[] |
Especifica os índices de veículos aos quais a restrição de visita Um índice de veículos é 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 limitados, e não será possível inserir ou adicionar novas visitas a esses trajetos. Além disso, os horários de início e término de um veículo em routes
são totalmente limitados, 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 satisfaz:
route.visits(j).start_time >= relaxations(i).threshold_time
Ej + 1 >= relaxations(i).threshold_visit_count
Da mesma forma, a partida do veículo é relaxada para relaxations(i).level
se atender a:
vehicleStartTime >= relaxations(i).threshold_time
Erelaxations(i).threshold_visit_count == 0
e a extremidade do veículo será relaxada pararelaxations(i).level
se atender a:vehicleEndTime >= 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 thresholdVisitCount
OU a thresholdTime
, adicione dois relaxations
com o mesmo level
: um com apenas thresholdVisitCount
definido e outro com apenas thresholdTime
definidos. Se uma visita satisfizer as condições de vários relaxations
, o nível mais descontraído será aplicado. Como resultado, do início do veículo até as visitas ao trajeto até o final, 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 das visitas ao trajeto que não atendem às condições de limite de qualquer relaxations
são totalmente limitados, e nenhuma visita pode ser inserida nessas sequências. Além disso, se o início ou fim de um veículo não atender às condições de relaxamento, o tempo vai 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 |
thresholdTime |
O momento em que o Um carimbo de data/hora no formato UTC "Zulu" RFC3339, com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: |
thresholdVisitCount |
É o número de visitas a partir das quais o Se for |
Nível
Expressa os diferentes níveis de relaxamento de restrição, que são aplicados para uma visita e os seguintes quando ele satisfaz as condições de 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 limitadas. 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 os horários de início/término do veículo serão afrouxados, mas cada visita permanece vinculada ao mesmo veículo, e a sequência da visita deve ser observada: nenhuma visita pode ser inserida entre eles ou antes deles. |
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 permanecem simplesmente vinculadas ao veículo. |
RELAX_ALL_AFTER_THRESHOLD |
Igual ao RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , mas o veículo também é calmo: as visitas são totalmente sem custo financeiro dentro do limite ou após essa data e podem apresentar problemas. |