Solução injetada na solicitação, incluindo informações sobre quais visitas precisam ser restritas.
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 as remessas ignoradas precisam atender às suposições básicas de validade listadas para |
skippedShipments[] |
Os envios da solução a serem injetados foram ignorados. 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 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. As remessas listadas no campo skipped_shipment
estão restritas a serem ignoradas. ou seja, elas não podem ser realizadas.
Representação JSON |
---|
{
"relaxations": [
{
object ( |
Campos | |
---|---|
relaxations[] |
Todos os relaxamentos de restrição de visitas que serão aplicados às visitas nos trajetos com veículos em |
vehicleIndices[] |
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, os horários de início e término de um veículo em routes
são totalmente restritos, 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 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:
vehicleStartTime >= relaxations(i).threshold_time
Erelaxations(i).threshold_visit_count == 0
e a extremidade do veículo é relaxada pararelaxations(i).level
se satisfizer: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
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.
Representação JSON |
---|
{
"level": enum ( |
Campos | |
---|---|
level |
O nível de relaxamento de restrição que se aplica quando as condições em |
thresholdTime |
É a hora em que a Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: |
thresholdVisitCount |
É 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 limitadas. 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 à RELAX_VISIT_TIMES_AFTER_THRESHOLD , mas a sequência da visita também é flexível: as visitas permanecem simplesmente ligadas ao veículo. |
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. |