Solución insertada en la solicitud, incluida información sobre qué visitas se deben restringir y cómo se deben restringir
Representación JSON |
---|
{ "routes": [ { object ( |
Campos | |
---|---|
routes[] |
Son las rutas de la solución que se insertarán. Es posible que se omitan algunas rutas de la solución original. Las rutas y los envíos omitidos deben satisfacer las suposiciones de validez básicas que se enumeran para |
skipped |
Se omitieron los envíos de la solución para insertar. Es posible que se omitan algunos de la solución original. Consulta el campo |
constraint |
Para cero o más grupos de vehículos, especifica cuándo y en qué medida se deben relajar las restricciones. Si este campo está vacío, todas las rutas de vehículos que no estén vacías estarán completamente restringidas. |
ConstraintRelaxation
Para un grupo de vehículos, especifica en qué umbrales se relajarán las restricciones de visitas y hasta qué nivel. Los envíos que se indican en el campo skipped_shipment
se omiten, es decir, no se pueden realizar.
Representación JSON |
---|
{
"relaxations": [
{
object ( |
Campos | |
---|---|
relaxations[] |
Todas las relajaciones de las restricciones de visitas que se aplicarán a las visitas en rutas con vehículos en |
vehicle |
Especifica los índices de vehículos a los que se aplica la restricción de visita Un índice de vehículo se asigna de la misma manera que |
Relajación
Si relaxations
está vacío, la hora de inicio y la secuencia de todas las visitas en routes
están completamente restringidas y no se pueden insertar ni agregar visitas nuevas a esas rutas. Además, la hora de inicio y finalización de un vehículo en routes
está completamente restringida, a menos que el vehículo esté vacío (es decir, no tenga visitas y tenga usedIfRouteIsEmpty
establecido como falso en el modelo).
relaxations(i).level
especifica el nivel de relajación de restricciones aplicado a una visita #j que satisface lo siguiente:
route.visits(j).start_time >= relaxations(i).threshold_time
Yj + 1 >= relaxations(i).threshold_visit_count
De manera similar, el inicio del vehículo se relaja a relaxations(i).level
si cumple con los siguientes requisitos:
vehicleStartTime >= relaxations(i).threshold_time
Yrelaxations(i).threshold_visit_count == 0
y el extremo del vehículo se relaja arelaxations(i).level
si se cumple con lo siguiente:vehicleEndTime >= relaxations(i).threshold_time
Yroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Para aplicar un nivel de relajación si una visita cumple con thresholdVisitCount
O thresholdTime
, agrega dos relaxations
con el mismo level
: uno con solo thresholdVisitCount
establecido y el otro con solo thresholdTime
establecido. Si una visita satisface las condiciones de varios relaxations
, se aplica el nivel más flexible. Como resultado, desde el inicio del vehículo hasta las visitas a la ruta hasta el final del vehículo, el nivel de relajación se vuelve más relajado, es decir, el nivel de relajación no disminuye a medida que avanza la ruta.
El tiempo y la secuencia de las visitas a la ruta que no satisfacen las condiciones de umbral de ningún relaxations
están completamente restringidos y no se pueden insertar visitas en estas secuencias. Además, si el inicio o el final de un vehículo no satisface las condiciones de ninguna relajación, la hora es fija, a menos que el vehículo esté vacío.
Representación JSON |
---|
{
"level": enum ( |
Campos | |
---|---|
level |
Es el nivel de relajación de restricciones que se aplica cuando se cumplen las condiciones en |
threshold |
Es la hora en la que se puede aplicar la relajación Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: |
threshold |
Es la cantidad de visitas en las que se puede aplicar la relajación Si es |
Nivel
Expresa los diferentes niveles de relajación de restricciones, que se aplican para una visita y los que siguen cuando se satisfacen las condiciones del umbral.
La enumeración que aparece a continuación está en orden de relajación creciente.
Enumeraciones | |
---|---|
LEVEL_UNSPECIFIED |
Nivel de relajación predeterminado implícito: No se relajan las restricciones, es decir, todas las visitas están completamente restringidas. Este valor no se debe usar de forma explícita en |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Se flexibilizarán las horas de inicio y finalización de las visitas y de los vehículos, pero cada visita seguirá vinculada al mismo vehículo y se deberá respetar la secuencia de visitas: no se puede insertar ninguna visita entre ellas ni antes de ellas. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Igual que RELAX_VISIT_TIMES_AFTER_THRESHOLD , pero la secuencia de visitas también es flexible: solo este vehículo puede realizar las visitas, pero es posible que no se realicen. |
RELAX_ALL_AFTER_THRESHOLD |
Igual que RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , pero el vehículo también está relajado: las visitas son completamente gratuitas en el momento del umbral o después de este, y es posible que no se realicen. |