Reference documentation and code samples for the Google Maps Route Optimization V1 Client class 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_time AND
j + 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 AND
relaxations(i).threshold_visit_count == 0
and the vehicle end is relaxed to relaxations(i).level if it satisfies:
vehicle_end_time >= relaxations(i).threshold_time AND
route.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.
Generated from protobuf message google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
The time at or after which the relaxation level may be applied.
↳ threshold_visit_count
int
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.
getLevel
The constraint relaxation level that applies when the conditions
at or after threshold_time AND at least threshold_visit_count are
satisfied.
Returns
Type
Description
int
setLevel
The constraint relaxation level that applies when the conditions
at or after threshold_time AND at least threshold_visit_count are
satisfied.
Parameter
Name
Description
var
int
Returns
Type
Description
$this
getThresholdTime
The time at or after which the relaxation level may be applied.
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.
Returns
Type
Description
int
setThresholdVisitCount
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.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Google Maps Route Optimization V1 Client - Class Relaxation (0.4.1)\n\nVersion latestkeyboard_arrow_down\n\n- [0.4.1 (latest)](/php/docs/reference/maps-routeoptimization/latest/V1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation)\n- [0.4.0](/php/docs/reference/maps-routeoptimization/0.4.0/V1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation)\n- [0.3.3](/php/docs/reference/maps-routeoptimization/0.3.3/V1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation)\n- [0.2.0](/php/docs/reference/maps-routeoptimization/0.2.0/V1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation)\n- [0.1.0](/php/docs/reference/maps-routeoptimization/0.1.0/V1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation) \nReference documentation and code samples for the Google Maps Route Optimization V1 Client class Relaxation.\n\nIf `relaxations` is empty, the start time and sequence of all visits\non `routes` are fully constrained and no new visits may be inserted or\nadded to those routes. Also, a vehicle's start and end time in\n`routes` is fully constrained, unless the vehicle is empty (i.e., has no\nvisits and has `used_if_route_is_empty` set to false in the model).\n\n`relaxations(i).level` specifies the constraint relaxation level applied\nto a visit #j that satisfies:\n\n- `route.visits(j).start_time \u003e= relaxations(i).threshold_time` AND\n- `j + 1 \u003e= relaxations(i).threshold_visit_count` Similarly, the vehicle start is relaxed to `relaxations(i).level` if it satisfies:\n- `vehicle_start_time \u003e= relaxations(i).threshold_time` AND\n- `relaxations(i).threshold_visit_count == 0` and the vehicle end is relaxed to `relaxations(i).level` if it satisfies:\n- `vehicle_end_time \u003e= relaxations(i).threshold_time` AND\n- `route.visits_size() + 1 \u003e= 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.\n\nGenerated from protobuf message `google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation`\n\nNamespace\n---------\n\nGoogle \\\\ Maps \\\\ RouteOptimization \\\\ V1 \\\\ InjectedSolutionConstraint \\\\ ConstraintRelaxation\n\nMethods\n-------\n\n### __construct\n\nConstructor.\n\n### getLevel\n\nThe constraint relaxation level that applies when the conditions\nat or after `threshold_time` AND at least `threshold_visit_count` are\nsatisfied.\n\n### setLevel\n\nThe constraint relaxation level that applies when the conditions\nat or after `threshold_time` AND at least `threshold_visit_count` are\nsatisfied.\n\n### getThresholdTime\n\nThe time at or after which the relaxation `level` may be applied.\n\n### hasThresholdTime\n\n### clearThresholdTime\n\n### setThresholdTime\n\nThe time at or after which the relaxation `level` may be applied.\n\n### getThresholdVisitCount\n\nThe number of visits at or after which the relaxation `level` may be\napplied. If `threshold_visit_count` is 0 (or unset), the `level` may be\napplied directly at the vehicle start.\n\nIf it is `route.visits_size() + 1`, the `level` may only be applied to\nthe vehicle end. If it is more than `route.visits_size() + 1`,\n`level` is not applied at all for that route.\n\n### setThresholdVisitCount\n\nThe number of visits at or after which the relaxation `level` may be\napplied. If `threshold_visit_count` is 0 (or unset), the `level` may be\napplied directly at the vehicle start.\n\nIf it is `route.visits_size() + 1`, the `level` may only be applied to\nthe vehicle end. If it is more than `route.visits_size() + 1`,\n`level` is not applied at all for that route."]]