Reference documentation and code samples for the Cloud Optimization V1 API class Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation.
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_timeANDj + 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_timeANDrelaxations(i).threshold_visit_count == 0and the vehicle end is relaxed torelaxations(i).levelif it satisfies:vehicle_end_time >= relaxations(i).threshold_timeANDroute.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.
Inherits
- Object
Extended By
- Google::Protobuf::MessageExts::ClassMethods
Includes
- Google::Protobuf::MessageExts
Methods
#level
def level() -> ::Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation::Level-
(::Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation::Level) — The constraint relaxation level that applies when the conditions
at or after
threshold_timeAND at leastthreshold_visit_countare satisfied.
#level=
def level=(value) -> ::Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation::Level-
value (::Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation::Level) — The constraint relaxation level that applies when the conditions
at or after
threshold_timeAND at leastthreshold_visit_countare satisfied.
-
(::Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation::Level) — The constraint relaxation level that applies when the conditions
at or after
threshold_timeAND at leastthreshold_visit_countare satisfied.
#threshold_time
def threshold_time() -> ::Google::Protobuf::Timestamp-
(::Google::Protobuf::Timestamp) — The time at or after which the relaxation
levelmay be applied.
#threshold_time=
def threshold_time=(value) -> ::Google::Protobuf::Timestamp-
value (::Google::Protobuf::Timestamp) — The time at or after which the relaxation
levelmay be applied.
-
(::Google::Protobuf::Timestamp) — The time at or after which the relaxation
levelmay be applied.
#threshold_visit_count
def threshold_visit_count() -> ::Integer-
(::Integer) — The number of visits at or after which the relaxation
levelmay be applied. Ifthreshold_visit_countis 0 (or unset), thelevelmay be applied directly at the vehicle start.If it is
route.visits_size() + 1, thelevelmay only be applied to the vehicle end. If it is more thanroute.visits_size() + 1,levelis not applied at all for that route.
#threshold_visit_count=
def threshold_visit_count=(value) -> ::Integer-
value (::Integer) — The number of visits at or after which the relaxation
levelmay be applied. Ifthreshold_visit_countis 0 (or unset), thelevelmay be applied directly at the vehicle start.If it is
route.visits_size() + 1, thelevelmay only be applied to the vehicle end. If it is more thanroute.visits_size() + 1,levelis not applied at all for that route.
-
(::Integer) — The number of visits at or after which the relaxation
levelmay be applied. Ifthreshold_visit_countis 0 (or unset), thelevelmay be applied directly at the vehicle start.If it is
route.visits_size() + 1, thelevelmay only be applied to the vehicle end. If it is more thanroute.visits_size() + 1,levelis not applied at all for that route.