Class: Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation
- Inherits:
-
Object
- Object
- Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation
- Extended by:
- Protobuf::MessageExts::ClassMethods
- Includes:
- Protobuf::MessageExts
- Defined in:
- proto_docs/google/cloud/optimization/v1/fleet_routing.rb
Overview
If relaxations
is empty, the start time and sequence of all visits
on routes
are fully constrained and no new visits may be inserted or
added to those routes. Also, a vehicle's start and end time in
routes
is fully constrained, unless the vehicle is empty (i.e., has no
visits and has used_if_route_is_empty
set to false in the model).
relaxations(i).level
specifies the constraint relaxation level applied
to a visit #j that satisfies:
route.visits(j).start_time >= relaxations(i).threshold_time
ANDj + 1 >= relaxations(i).threshold_visit_count
Similarly, the vehicle start is relaxed to relaxations(i).level
if it
satisfies:
vehicle_start_time >= relaxations(i).threshold_time
ANDrelaxations(i).threshold_visit_count == 0
and the vehicle end is relaxed torelaxations(i).level
if it satisfies:vehicle_end_time >= relaxations(i).threshold_time
ANDroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
To apply a relaxation level if a visit meets the threshold_visit_count
OR the threshold_time
add two relaxations
with the same level
:
one with only threshold_visit_count
set and the other with only
threshold_time
set. If a visit satisfies the conditions of multiple
relaxations
, the most relaxed level applies. As a result, from the
vehicle start through the route visits in order to the vehicle end, the
relaxation level becomes more relaxed: i.e., the relaxation level is
non-decreasing as the route progresses.
The timing and sequence of route visits that do not satisfy the
threshold conditions of any relaxations
are fully constrained
and no visits may be inserted into these sequences. Also, if a
vehicle start or end does not satisfy the conditions of any
relaxation the time is fixed, unless the vehicle is empty.
Defined Under Namespace
Modules: Level
Instance Attribute Summary collapse
-
#level ⇒ ::Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation::Level
The constraint relaxation level that applies when the conditions at or after
threshold_time
AND at leastthreshold_visit_count
are satisfied. -
#threshold_time ⇒ ::Google::Protobuf::Timestamp
The time at or after which the relaxation
level
may be applied. -
#threshold_visit_count ⇒ ::Integer
The number of visits at or after which the relaxation
level
may be applied.
Instance Attribute Details
#level ⇒ ::Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation::Level
Returns The constraint relaxation level that applies when the conditions
at or after threshold_time
AND at least threshold_visit_count
are
satisfied.
2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 |
# File 'proto_docs/google/cloud/optimization/v1/fleet_routing.rb', line 2620 class Relaxation include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Expresses the different constraint relaxation levels, which are # applied for a visit and those that follow when it satisfies the # threshold conditions. # # The enumeration below is in order of increasing relaxation. module Level # Implicit default relaxation level: no constraints are relaxed, # i.e., all visits are fully constrained. # # This value must not be explicitly used in `level`. LEVEL_UNSPECIFIED = 0 # Visit start times and vehicle start/end times will be relaxed, but # each visit remains bound to the same vehicle and the visit sequence # must be observed: no visit can be inserted between them or before # them. RELAX_VISIT_TIMES_AFTER_THRESHOLD = 1 # Same as `RELAX_VISIT_TIMES_AFTER_THRESHOLD`, but the visit sequence # is also relaxed: visits can only be performed by this vehicle, but # can potentially become unperformed. RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD = 2 # Same as `RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD`, but the # vehicle is also relaxed: visits are completely free at or after the # threshold time and can potentially become unperformed. RELAX_ALL_AFTER_THRESHOLD = 3 end end |
#threshold_time ⇒ ::Google::Protobuf::Timestamp
Returns The time at or after which the relaxation level
may be applied.
2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 |
# File 'proto_docs/google/cloud/optimization/v1/fleet_routing.rb', line 2620 class Relaxation include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Expresses the different constraint relaxation levels, which are # applied for a visit and those that follow when it satisfies the # threshold conditions. # # The enumeration below is in order of increasing relaxation. module Level # Implicit default relaxation level: no constraints are relaxed, # i.e., all visits are fully constrained. # # This value must not be explicitly used in `level`. LEVEL_UNSPECIFIED = 0 # Visit start times and vehicle start/end times will be relaxed, but # each visit remains bound to the same vehicle and the visit sequence # must be observed: no visit can be inserted between them or before # them. RELAX_VISIT_TIMES_AFTER_THRESHOLD = 1 # Same as `RELAX_VISIT_TIMES_AFTER_THRESHOLD`, but the visit sequence # is also relaxed: visits can only be performed by this vehicle, but # can potentially become unperformed. RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD = 2 # Same as `RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD`, but the # vehicle is also relaxed: visits are completely free at or after the # threshold time and can potentially become unperformed. RELAX_ALL_AFTER_THRESHOLD = 3 end end |
#threshold_visit_count ⇒ ::Integer
Returns The number of visits at or after which the relaxation level
may be
applied. If threshold_visit_count
is 0 (or unset), the level
may be
applied directly at the vehicle start.
If it is route.visits_size() + 1
, the level
may only be applied to
the vehicle end. If it is more than route.visits_size() + 1
,
level
is not applied at all for that route.
2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 |
# File 'proto_docs/google/cloud/optimization/v1/fleet_routing.rb', line 2620 class Relaxation include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Expresses the different constraint relaxation levels, which are # applied for a visit and those that follow when it satisfies the # threshold conditions. # # The enumeration below is in order of increasing relaxation. module Level # Implicit default relaxation level: no constraints are relaxed, # i.e., all visits are fully constrained. # # This value must not be explicitly used in `level`. LEVEL_UNSPECIFIED = 0 # Visit start times and vehicle start/end times will be relaxed, but # each visit remains bound to the same vehicle and the visit sequence # must be observed: no visit can be inserted between them or before # them. RELAX_VISIT_TIMES_AFTER_THRESHOLD = 1 # Same as `RELAX_VISIT_TIMES_AFTER_THRESHOLD`, but the visit sequence # is also relaxed: visits can only be performed by this vehicle, but # can potentially become unperformed. RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD = 2 # Same as `RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD`, but the # vehicle is also relaxed: visits are completely free at or after the # threshold time and can potentially become unperformed. RELAX_ALL_AFTER_THRESHOLD = 3 end end |