OR-Tools  9.3
RoutingDimension

Detailed Description

Dimensions represent quantities accumulated at nodes along the routes.

They represent quantities such as weights or volumes carried along the route, or distance or times.

Quantities at a node are represented by "cumul" variables and the increase or decrease of quantities between nodes are represented by "transit" variables. These variables are linked as follows:

if j == next(i), cumuls(j) = cumuls(i) + transits(i) + slacks(i) + state_dependent_transits(i)

where slack is a positive slack variable (can represent waiting times for a time dimension), and state_dependent_transits is a non-purely functional version of transits_. Favour transits over state_dependent_transits when possible, because purely functional callbacks allow more optimisations and make the model faster and easier to solve. for a given vehicle, it is passed as an external vector, it would be better to have this information here.

Definition at line 2590 of file routing.h.

Classes

struct  NodePrecedence
 

Public Types

typedef std::function< int64_t(int, int)> PickupToDeliveryLimitFunction
 Limits, in terms of maximum difference between the cumul variables, between the pickup and delivery alternatives belonging to a single pickup/delivery pair in the RoutingModel. More...
 

Public Member Functions

 ~RoutingDimension ()
 
RoutingModelmodel () const
 Returns the model on which the dimension was created. More...
 
int64_t GetTransitValue (int64_t from_index, int64_t to_index, int64_t vehicle) const
 Returns the transition value for a given pair of nodes (as var index); this value is the one taken by the corresponding transit variable when the 'next' variable for 'from_index' is bound to 'to_index'. More...
 
int64_t GetTransitValueFromClass (int64_t from_index, int64_t to_index, int64_t vehicle_class) const
 Same as above but taking a vehicle class of the dimension instead of a vehicle (the class of a vehicle can be obtained with vehicle_to_class()). More...
 
IntVarCumulVar (int64_t index) const
 Get the cumul, transit and slack variables for the given node (given as int64_t var index). More...
 
IntVarTransitVar (int64_t index) const
 
IntVarFixedTransitVar (int64_t index) const
 
IntVarSlackVar (int64_t index) const
 
const std::vector< IntVar * > & cumuls () const
 Like CumulVar(), TransitVar(), SlackVar() but return the whole variable vectors instead (indexed by int64_t var index). More...
 
const std::vector< IntVar * > & fixed_transits () const
 
const std::vector< IntVar * > & transits () const
 
const std::vector< IntVar * > & slacks () const
 
const std::vector< SortedDisjointIntervalList > & forbidden_intervals () const
 Returns forbidden intervals for each node. More...
 
SortedDisjointIntervalList GetAllowedIntervalsInRange (int64_t index, int64_t min_value, int64_t max_value) const
 Returns allowed intervals for a given node in a given interval. More...
 
int64_t GetFirstPossibleGreaterOrEqualValueForNode (int64_t index, int64_t min_value) const
 Returns the smallest value outside the forbidden intervals of node 'index' that is greater than or equal to a given 'min_value'. More...
 
int64_t GetLastPossibleLessOrEqualValueForNode (int64_t index, int64_t max_value) const
 Returns the largest value outside the forbidden intervals of node 'index' that is less than or equal to a given 'max_value'. More...
 
const std::vector< int64_t > & vehicle_capacities () const
 Returns the capacities for all vehicles. More...
 
const RoutingModel::TransitCallback2transit_evaluator (int vehicle) const
 Returns the callback evaluating the transit value between two node indices for a given vehicle. More...
 
const RoutingModel::TransitCallback2class_transit_evaluator (RoutingVehicleClassIndex vehicle_class) const
 Returns the callback evaluating the transit value between two node indices for a given vehicle class. More...
 
const RoutingModel::TransitCallback1GetUnaryTransitEvaluator (int vehicle) const
 Returns the unary callback evaluating the transit value between two node indices for a given vehicle. More...
 
bool AreVehicleTransitsPositive (int vehicle) const
 Returns true iff the transit evaluator of 'vehicle' is positive for all arcs. More...
 
int vehicle_to_class (int vehicle) const
 
void SetSpanUpperBoundForVehicle (int64_t upper_bound, int vehicle)
 !defined(SWIGCSHARP) && !defined(SWIGJAVA) !defined(SWIGPYTHON) More...
 
void SetSpanCostCoefficientForVehicle (int64_t coefficient, int vehicle)
 Sets a cost proportional to the dimension span on a given vehicle, or on all vehicles at once. More...
 
void SetSpanCostCoefficientForAllVehicles (int64_t coefficient)
 
void SetGlobalSpanCostCoefficient (int64_t coefficient)
 Sets a cost proportional to the global dimension span, that is the difference between the largest value of route end cumul variables and the smallest value of route start cumul variables. More...
 
void SetCumulVarPiecewiseLinearCost (int64_t index, const PiecewiseLinearFunction &cost)
 Sets a piecewise linear cost on the cumul variable of a given variable index. More...
 
bool HasCumulVarPiecewiseLinearCost (int64_t index) const
 Returns true if a piecewise linear cost has been set for a given variable index. More...
 
const PiecewiseLinearFunctionGetCumulVarPiecewiseLinearCost (int64_t index) const
 Returns the piecewise linear cost of a cumul variable for a given variable index. More...
 
void SetCumulVarSoftUpperBound (int64_t index, int64_t upper_bound, int64_t coefficient)
 Sets a soft upper bound to the cumul variable of a given variable index. More...
 
bool HasCumulVarSoftUpperBound (int64_t index) const
 Returns true if a soft upper bound has been set for a given variable index. More...
 
int64_t GetCumulVarSoftUpperBound (int64_t index) const
 Returns the soft upper bound of a cumul variable for a given variable index. More...
 
int64_t GetCumulVarSoftUpperBoundCoefficient (int64_t index) const
 Returns the cost coefficient of the soft upper bound of a cumul variable for a given variable index. More...
 
void SetCumulVarSoftLowerBound (int64_t index, int64_t lower_bound, int64_t coefficient)
 Sets a soft lower bound to the cumul variable of a given variable index. More...
 
bool HasCumulVarSoftLowerBound (int64_t index) const
 Returns true if a soft lower bound has been set for a given variable index. More...
 
int64_t GetCumulVarSoftLowerBound (int64_t index) const
 Returns the soft lower bound of a cumul variable for a given variable index. More...
 
int64_t GetCumulVarSoftLowerBoundCoefficient (int64_t index) const
 Returns the cost coefficient of the soft lower bound of a cumul variable for a given variable index. More...
 
void SetBreakIntervalsOfVehicle (std::vector< IntervalVar * > breaks, int vehicle, int pre_travel_evaluator, int post_travel_evaluator)
 Sets the breaks for a given vehicle. More...
 
void SetBreakIntervalsOfVehicle (std::vector< IntervalVar * > breaks, int vehicle, std::vector< int64_t > node_visit_transits)
 Deprecated, sets pre_travel(i, j) = node_visit_transit[i]. More...
 
void SetBreakDistanceDurationOfVehicle (int64_t distance, int64_t duration, int vehicle)
 With breaks supposed to be consecutive, this forces the distance between breaks of size at least minimum_break_duration to be at most distance. More...
 
void InitializeBreaks ()
 Sets up vehicle_break_intervals_, vehicle_break_distance_duration_, pre_travel_evaluators and post_travel_evaluators. More...
 
bool HasBreakConstraints () const
 Returns true if any break interval or break distance was defined. More...
 
void SetBreakIntervalsOfVehicle (std::vector< IntervalVar * > breaks, int vehicle, std::vector< int64_t > node_visit_transits, std::function< int64_t(int64_t, int64_t)> delays)
 Deprecated, sets pre_travel(i, j) = node_visit_transit[i] and post_travel(i, j) = delays(i, j). More...
 
const std::vector< IntervalVar * > & GetBreakIntervalsOfVehicle (int vehicle) const
 Returns the break intervals set by SetBreakIntervalsOfVehicle(). More...
 
const std::vector< std::pair< int64_t, int64_t > > & GetBreakDistanceDurationOfVehicle (int vehicle) const
 Returns the pairs (distance, duration) specified by break distance constraints. More...
 
int GetPreTravelEvaluatorOfVehicle (int vehicle) const
 !defined(SWIGPYTHON) More...
 
int GetPostTravelEvaluatorOfVehicle (int vehicle) const
 
const RoutingDimensionbase_dimension () const
 Returns the parent in the dependency tree if any or nullptr otherwise. More...
 
int64_t ShortestTransitionSlack (int64_t node) const
 It makes sense to use the function only for self-dependent dimension. More...
 
const std::string & name () const
 Returns the name of the dimension. More...
 
const ReverseArcListGraph< int, int > & GetPathPrecedenceGraph () const
 Accessors. More...
 
void SetPickupToDeliveryLimitFunctionForPair (PickupToDeliveryLimitFunction limit_function, int pair_index)
 
bool HasPickupToDeliveryLimits () const
 
int64_t GetPickupToDeliveryLimitForPair (int pair_index, int pickup, int delivery) const
 
void AddNodePrecedence (NodePrecedence precedence)
 
const std::vector< NodePrecedence > & GetNodePrecedences () const
 
void AddNodePrecedence (int64_t first_node, int64_t second_node, int64_t offset)
 
int64_t GetSpanUpperBoundForVehicle (int vehicle) const
 
const std::vector< int64_t > & vehicle_span_upper_bounds () const
 
int64_t GetSpanCostCoefficientForVehicle (int vehicle) const
 
int64_t GetSpanCostCoefficientForVehicleClass (RoutingVehicleClassIndex vehicle_class) const
 
const std::vector< int64_t > & vehicle_span_cost_coefficients () const
 
int64_t global_span_cost_coefficient () const
 
int64_t GetGlobalOptimizerOffset () const
 
int64_t GetLocalOptimizerOffsetForVehicle (int vehicle) const
 
void SetSoftSpanUpperBoundForVehicle (SimpleBoundCosts::BoundCost bound_cost, int vehicle)
 If the span of vehicle on this dimension is larger than bound, the cost will be increased by cost * (span - bound). More...
 
bool HasSoftSpanUpperBounds () const
 
SimpleBoundCosts::BoundCost GetSoftSpanUpperBoundForVehicle (int vehicle) const
 
void SetQuadraticCostSoftSpanUpperBoundForVehicle (SimpleBoundCosts::BoundCost bound_cost, int vehicle)
 If the span of vehicle on this dimension is larger than bound, the cost will be increased by cost * (span - bound)^2. More...
 
bool HasQuadraticCostSoftSpanUpperBounds () const
 
SimpleBoundCosts::BoundCost GetQuadraticCostSoftSpanUpperBoundForVehicle (int vehicle) const
 

Member Typedef Documentation

◆ PickupToDeliveryLimitFunction

typedef std::function<int64_t(int, int)> PickupToDeliveryLimitFunction

Limits, in terms of maximum difference between the cumul variables, between the pickup and delivery alternatives belonging to a single pickup/delivery pair in the RoutingModel.

The indices passed to the function respectively correspond to the position of the pickup in the vector of pickup alternatives, and delivery position in the delivery alternatives for this pickup/delivery pair. These limits should only be set when each node index appears in at most one pickup/delivery pair, i.e. each pickup (delivery) index is in a single pickup/delivery pair.first (pair.second).

Definition at line 2872 of file routing.h.

Constructor & Destructor Documentation

◆ ~RoutingDimension()

Definition at line 6187 of file routing.cc.

Member Function Documentation

◆ AddNodePrecedence() [1/2]

void AddNodePrecedence ( int64_t  first_node,
int64_t  second_node,
int64_t  offset 
)
inline

Definition at line 2896 of file routing.h.

◆ AddNodePrecedence() [2/2]

void AddNodePrecedence ( NodePrecedence  precedence)
inline

Definition at line 2888 of file routing.h.

◆ AreVehicleTransitsPositive()

bool AreVehicleTransitsPositive ( int  vehicle) const
inline

Returns true iff the transit evaluator of 'vehicle' is positive for all arcs.

Definition at line 2697 of file routing.h.

◆ base_dimension()

const RoutingDimension * base_dimension ( ) const
inline

Returns the parent in the dependency tree if any or nullptr otherwise.

Definition at line 2843 of file routing.h.

◆ class_transit_evaluator()

const RoutingModel::TransitCallback2 & class_transit_evaluator ( RoutingVehicleClassIndex  vehicle_class) const
inline

Returns the callback evaluating the transit value between two node indices for a given vehicle class.

Definition at line 2680 of file routing.h.

◆ cumuls()

const std::vector< IntVar * > & cumuls ( ) const
inline

Like CumulVar(), TransitVar(), SlackVar() but return the whole variable vectors instead (indexed by int64_t var index).

Definition at line 2619 of file routing.h.

◆ CumulVar()

IntVar * CumulVar ( int64_t  index) const
inline

Get the cumul, transit and slack variables for the given node (given as int64_t var index).

Definition at line 2609 of file routing.h.

◆ fixed_transits()

const std::vector< IntVar * > & fixed_transits ( ) const
inline

Definition at line 2620 of file routing.h.

◆ FixedTransitVar()

IntVar * FixedTransitVar ( int64_t  index) const
inline

Definition at line 2611 of file routing.h.

◆ forbidden_intervals()

const std::vector< SortedDisjointIntervalList > & forbidden_intervals ( ) const
inline

Returns forbidden intervals for each node.

Definition at line 2625 of file routing.h.

◆ GetAllowedIntervalsInRange()

SortedDisjointIntervalList GetAllowedIntervalsInRange ( int64_t  index,
int64_t  min_value,
int64_t  max_value 
) const

Returns allowed intervals for a given node in a given interval.

Definition at line 6795 of file routing.cc.

◆ GetBreakDistanceDurationOfVehicle()

const std::vector< std::pair< int64_t, int64_t > > & GetBreakDistanceDurationOfVehicle ( int  vehicle) const

Returns the pairs (distance, duration) specified by break distance constraints.

Definition at line 7175 of file routing.cc.

◆ GetBreakIntervalsOfVehicle()

const std::vector< IntervalVar * > & GetBreakIntervalsOfVehicle ( int  vehicle) const

Returns the break intervals set by SetBreakIntervalsOfVehicle().

Definition at line 7140 of file routing.cc.

◆ GetCumulVarPiecewiseLinearCost()

const PiecewiseLinearFunction * GetCumulVarPiecewiseLinearCost ( int64_t  index) const

Returns the piecewise linear cost of a cumul variable for a given variable index.

The returned pointer has the same validity as this class.

Definition at line 6869 of file routing.cc.

◆ GetCumulVarSoftLowerBound()

int64_t GetCumulVarSoftLowerBound ( int64_t  index) const

Returns the soft lower bound of a cumul variable for a given variable index.

The "hard" lower bound of the variable is returned if no soft lower bound has been set.

Definition at line 6978 of file routing.cc.

◆ GetCumulVarSoftLowerBoundCoefficient()

int64_t GetCumulVarSoftLowerBoundCoefficient ( int64_t  index) const

Returns the cost coefficient of the soft lower bound of a cumul variable for a given variable index.

If no soft lower bound has been set, 0 is returned.

Definition at line 6986 of file routing.cc.

◆ GetCumulVarSoftUpperBound()

int64_t GetCumulVarSoftUpperBound ( int64_t  index) const

Returns the soft upper bound of a cumul variable for a given variable index.

The "hard" upper bound of the variable is returned if no soft upper bound has been set.

Definition at line 6926 of file routing.cc.

◆ GetCumulVarSoftUpperBoundCoefficient()

int64_t GetCumulVarSoftUpperBoundCoefficient ( int64_t  index) const

Returns the cost coefficient of the soft upper bound of a cumul variable for a given variable index.

If no soft upper bound has been set, 0 is returned.

Definition at line 6934 of file routing.cc.

◆ GetFirstPossibleGreaterOrEqualValueForNode()

int64_t GetFirstPossibleGreaterOrEqualValueForNode ( int64_t  index,
int64_t  min_value 
) const
inline

Returns the smallest value outside the forbidden intervals of node 'index' that is greater than or equal to a given 'min_value'.

min_value is in a forbidden interval.

min_value is not forbidden.

Definition at line 2633 of file routing.h.

◆ GetGlobalOptimizerOffset()

int64_t GetGlobalOptimizerOffset ( ) const
inline

Definition at line 2929 of file routing.h.

◆ GetLastPossibleLessOrEqualValueForNode()

int64_t GetLastPossibleLessOrEqualValueForNode ( int64_t  index,
int64_t  max_value 
) const
inline

Returns the largest value outside the forbidden intervals of node 'index' that is less than or equal to a given 'max_value'.

NOTE: If this method is called with a max_value lower than the node's cumul min, it will return -1.

max_value is in a forbidden interval.

max_value is not forbidden.

Definition at line 2652 of file routing.h.

◆ GetLocalOptimizerOffsetForVehicle()

int64_t GetLocalOptimizerOffsetForVehicle ( int  vehicle) const
inline

Definition at line 2933 of file routing.h.

◆ GetNodePrecedences()

const std::vector< NodePrecedence > & GetNodePrecedences ( ) const
inline

Definition at line 2891 of file routing.h.

◆ GetPathPrecedenceGraph()

const ReverseArcListGraph< int, int > & GetPathPrecedenceGraph ( ) const
inline

Accessors.

Definition at line 2858 of file routing.h.

◆ GetPickupToDeliveryLimitForPair()

int64_t GetPickupToDeliveryLimitForPair ( int  pair_index,
int  pickup,
int  delivery 
) const

Definition at line 7195 of file routing.cc.

◆ GetPostTravelEvaluatorOfVehicle()

int GetPostTravelEvaluatorOfVehicle ( int  vehicle) const

Definition at line 7153 of file routing.cc.

◆ GetPreTravelEvaluatorOfVehicle()

int GetPreTravelEvaluatorOfVehicle ( int  vehicle) const

!defined(SWIGPYTHON)

Definition at line 7147 of file routing.cc.

◆ GetQuadraticCostSoftSpanUpperBoundForVehicle()

SimpleBoundCosts::BoundCost GetQuadraticCostSoftSpanUpperBoundForVehicle ( int  vehicle) const
inline

Definition at line 2974 of file routing.h.

◆ GetSoftSpanUpperBoundForVehicle()

SimpleBoundCosts::BoundCost GetSoftSpanUpperBoundForVehicle ( int  vehicle) const
inline

Definition at line 2954 of file routing.h.

◆ GetSpanCostCoefficientForVehicle()

int64_t GetSpanCostCoefficientForVehicle ( int  vehicle) const
inline

Definition at line 2909 of file routing.h.

◆ GetSpanCostCoefficientForVehicleClass()

int64_t GetSpanCostCoefficientForVehicleClass ( RoutingVehicleClassIndex  vehicle_class) const
inline

Definition at line 2913 of file routing.h.

◆ GetSpanUpperBoundForVehicle()

int64_t GetSpanUpperBoundForVehicle ( int  vehicle) const
inline

Definition at line 2901 of file routing.h.

◆ GetTransitValue()

int64_t GetTransitValue ( int64_t  from_index,
int64_t  to_index,
int64_t  vehicle 
) const

Returns the transition value for a given pair of nodes (as var index); this value is the one taken by the corresponding transit variable when the 'next' variable for 'from_index' is bound to 'to_index'.

Definition at line 6789 of file routing.cc.

◆ GetTransitValueFromClass()

int64_t GetTransitValueFromClass ( int64_t  from_index,
int64_t  to_index,
int64_t  vehicle_class 
) const
inline

Same as above but taking a vehicle class of the dimension instead of a vehicle (the class of a vehicle can be obtained with vehicle_to_class()).

Definition at line 2602 of file routing.h.

◆ GetUnaryTransitEvaluator()

const RoutingModel::TransitCallback1 & GetUnaryTransitEvaluator ( int  vehicle) const
inline

Returns the unary callback evaluating the transit value between two node indices for a given vehicle.

If the corresponding callback is not unary, returns a null callback.

Definition at line 2690 of file routing.h.

◆ global_span_cost_coefficient()

int64_t global_span_cost_coefficient ( ) const
inline

Definition at line 2925 of file routing.h.

◆ HasBreakConstraints()

bool HasBreakConstraints ( ) const

Returns true if any break interval or break distance was defined.

Definition at line 7136 of file routing.cc.

◆ HasCumulVarPiecewiseLinearCost()

bool HasCumulVarPiecewiseLinearCost ( int64_t  index) const

Returns true if a piecewise linear cost has been set for a given variable index.

Definition at line 6864 of file routing.cc.

◆ HasCumulVarSoftLowerBound()

bool HasCumulVarSoftLowerBound ( int64_t  index) const

Returns true if a soft lower bound has been set for a given variable index.

Definition at line 6973 of file routing.cc.

◆ HasCumulVarSoftUpperBound()

bool HasCumulVarSoftUpperBound ( int64_t  index) const

Returns true if a soft upper bound has been set for a given variable index.

Definition at line 6921 of file routing.cc.

◆ HasPickupToDeliveryLimits()

bool HasPickupToDeliveryLimits ( ) const

Definition at line 7191 of file routing.cc.

◆ HasQuadraticCostSoftSpanUpperBounds()

bool HasQuadraticCostSoftSpanUpperBounds ( ) const
inline

Definition at line 2971 of file routing.h.

◆ HasSoftSpanUpperBounds()

bool HasSoftSpanUpperBounds ( ) const
inline

Definition at line 2951 of file routing.h.

◆ InitializeBreaks()

void InitializeBreaks ( )

Sets up vehicle_break_intervals_, vehicle_break_distance_duration_, pre_travel_evaluators and post_travel_evaluators.

Definition at line 7126 of file routing.cc.

◆ model()

RoutingModel * model ( ) const
inline

Returns the model on which the dimension was created.

Definition at line 2594 of file routing.h.

◆ name()

const std::string & name ( ) const
inline

Returns the name of the dimension.

Definition at line 2854 of file routing.h.

◆ SetBreakDistanceDurationOfVehicle()

void SetBreakDistanceDurationOfVehicle ( int64_t  distance,
int64_t  duration,
int  vehicle 
)

With breaks supposed to be consecutive, this forces the distance between breaks of size at least minimum_break_duration to be at most distance.

This supposes that the time until route start and after route end are infinite breaks.

Definition at line 7159 of file routing.cc.

◆ SetBreakIntervalsOfVehicle() [1/3]

void SetBreakIntervalsOfVehicle ( std::vector< IntervalVar * >  breaks,
int  vehicle,
int  pre_travel_evaluator,
int  post_travel_evaluator 
)

Sets the breaks for a given vehicle.

Breaks are represented by IntervalVars. They may interrupt transits between nodes and increase the value of corresponding slack variables. A break may take place before the start of a vehicle, after the end of a vehicle, or during a travel i -> j.

In that case, the interval [break.Start(), break.End()) must be a subset of [CumulVar(i) + pre_travel(i, j), CumulVar(j) - post_travel(i, j)). In other words, a break may not overlap any node n's visit, given by [CumulVar(n) - post_travel(_, n), CumulVar(n) + pre_travel(n, _)). This formula considers post_travel(_, start) and pre_travel(end, _) to be 0; pre_travel will never be called on any (_, start) and post_travel will never we called on any (end, _). If pre_travel_evaluator or post_travel_evaluator is -1, it will be taken as a function that always returns 0.

Definition at line 7097 of file routing.cc.

◆ SetBreakIntervalsOfVehicle() [2/3]

void SetBreakIntervalsOfVehicle ( std::vector< IntervalVar * >  breaks,
int  vehicle,
std::vector< int64_t >  node_visit_transits 
)

Deprecated, sets pre_travel(i, j) = node_visit_transit[i].

Definition at line 7071 of file routing.cc.

◆ SetBreakIntervalsOfVehicle() [3/3]

void SetBreakIntervalsOfVehicle ( std::vector< IntervalVar * >  breaks,
int  vehicle,
std::vector< int64_t >  node_visit_transits,
std::function< int64_t(int64_t, int64_t)>  delays 
)

Deprecated, sets pre_travel(i, j) = node_visit_transit[i] and post_travel(i, j) = delays(i, j).

Definition at line 7082 of file routing.cc.

◆ SetCumulVarPiecewiseLinearCost()

void SetCumulVarPiecewiseLinearCost ( int64_t  index,
const PiecewiseLinearFunction cost 
)

Sets a piecewise linear cost on the cumul variable of a given variable index.

If f is a piecewise linear function, the resulting cost at 'index' will be f(CumulVar(index)). As of 3/2017, only non-decreasing positive cost functions are supported.

Definition at line 6845 of file routing.cc.

◆ SetCumulVarSoftLowerBound()

void SetCumulVarSoftLowerBound ( int64_t  index,
int64_t  lower_bound,
int64_t  coefficient 
)

Sets a soft lower bound to the cumul variable of a given variable index.

If the value of the cumul variable is less than the bound, a cost proportional to the difference between this value and the bound is added to the cost function of the model: cumulVar > lower_bound -> cost = 0 cumulVar <= lower_bound -> cost = coefficient * (lower_bound - cumulVar). This is also handy to model earliness costs when the dimension represents time.

Definition at line 6963 of file routing.cc.

◆ SetCumulVarSoftUpperBound()

void SetCumulVarSoftUpperBound ( int64_t  index,
int64_t  upper_bound,
int64_t  coefficient 
)

Sets a soft upper bound to the cumul variable of a given variable index.

If the value of the cumul variable is greater than the bound, a cost proportional to the difference between this value and the bound is added to the cost function of the model: cumulVar <= upper_bound -> cost = 0 cumulVar > upper_bound -> cost = coefficient * (cumulVar - upper_bound) This is also handy to model tardiness costs when the dimension represents time.

Definition at line 6911 of file routing.cc.

◆ SetGlobalSpanCostCoefficient()

void SetGlobalSpanCostCoefficient ( int64_t  coefficient)

Sets a cost proportional to the global dimension span, that is the difference between the largest value of route end cumul variables and the smallest value of route start cumul variables.

In other words: global_span_cost = coefficient * (Max(dimension end value) - Min(dimension start value)).

Definition at line 6840 of file routing.cc.

◆ SetPickupToDeliveryLimitFunctionForPair()

void SetPickupToDeliveryLimitFunctionForPair ( PickupToDeliveryLimitFunction  limit_function,
int  pair_index 
)

Definition at line 7181 of file routing.cc.

◆ SetQuadraticCostSoftSpanUpperBoundForVehicle()

void SetQuadraticCostSoftSpanUpperBoundForVehicle ( SimpleBoundCosts::BoundCost  bound_cost,
int  vehicle 
)
inline

If the span of vehicle on this dimension is larger than bound, the cost will be increased by cost * (span - bound)^2.

Definition at line 2961 of file routing.h.

◆ SetSoftSpanUpperBoundForVehicle()

void SetSoftSpanUpperBoundForVehicle ( SimpleBoundCosts::BoundCost  bound_cost,
int  vehicle 
)
inline

If the span of vehicle on this dimension is larger than bound, the cost will be increased by cost * (span - bound).

Definition at line 2943 of file routing.h.

◆ SetSpanCostCoefficientForAllVehicles()

void SetSpanCostCoefficientForAllVehicles ( int64_t  coefficient)

Definition at line 6834 of file routing.cc.

◆ SetSpanCostCoefficientForVehicle()

void SetSpanCostCoefficientForVehicle ( int64_t  coefficient,
int  vehicle 
)

Sets a cost proportional to the dimension span on a given vehicle, or on all vehicles at once.

"coefficient" must be nonnegative. This is handy to model costs proportional to idle time when the dimension represents time. The cost for a vehicle is span_cost = coefficient * (dimension end value - dimension start value).

Definition at line 6826 of file routing.cc.

◆ SetSpanUpperBoundForVehicle()

void SetSpanUpperBoundForVehicle ( int64_t  upper_bound,
int  vehicle 
)

!defined(SWIGCSHARP) && !defined(SWIGJAVA) !defined(SWIGPYTHON)

Sets an upper bound on the dimension span on a given vehicle. This is the preferred way to limit the "length" of the route of a vehicle according to a dimension.

Definition at line 6818 of file routing.cc.

◆ ShortestTransitionSlack()

int64_t ShortestTransitionSlack ( int64_t  node) const

It makes sense to use the function only for self-dependent dimension.

For such dimensions the value of the slack of a node determines the transition cost of the next transit. Provided that

  1. cumul[node] is fixed,
  2. next[node] and next[next[node]] (if exists) are fixed, the value of slack[node] for which cumul[next[node]] + transit[next[node]] is minimized can be found in O(1) using this function.

Definition at line 4497 of file routing_search.cc.

◆ slacks()

const std::vector< IntVar * > & slacks ( ) const
inline

Definition at line 2622 of file routing.h.

◆ SlackVar()

IntVar * SlackVar ( int64_t  index) const
inline

Definition at line 2614 of file routing.h.

◆ transit_evaluator()

const RoutingModel::TransitCallback2 & transit_evaluator ( int  vehicle) const
inline

Returns the callback evaluating the transit value between two node indices for a given vehicle.

Definition at line 2673 of file routing.h.

◆ transits()

const std::vector< IntVar * > & transits ( ) const
inline

Definition at line 2621 of file routing.h.

◆ TransitVar()

IntVar * TransitVar ( int64_t  index) const
inline

Definition at line 2610 of file routing.h.

◆ vehicle_capacities()

const std::vector< int64_t > & vehicle_capacities ( ) const
inline

Returns the capacities for all vehicles.

Definition at line 2668 of file routing.h.

◆ vehicle_span_cost_coefficients()

const std::vector< int64_t > & vehicle_span_cost_coefficients ( ) const
inline

Definition at line 2921 of file routing.h.

◆ vehicle_span_upper_bounds()

const std::vector< int64_t > & vehicle_span_upper_bounds ( ) const
inline

Definition at line 2905 of file routing.h.

◆ vehicle_to_class()

int vehicle_to_class ( int  vehicle) const
inline

Definition at line 2701 of file routing.h.


The documentation for this class was generated from the following files: