Class: Google::Cloud::Optimization::V1::InjectedSolutionConstraint::ConstraintRelaxation::Relaxation

Inherits:
Object
  • Object
show all
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 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.

Defined Under Namespace

Modules: Level

Instance Attribute Summary collapse

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.

Returns:



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.

Returns:



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.

Returns:

  • (::Integer)

    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