Java Reference

Java Reference

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 18 of file RoutingDimension.java.

Public Member Functions

synchronized void delete ()
 
RoutingModel model ()
 Returns the model on which the dimension was created. More...
 
long getTransitValue (long from_index, long to_index, long vehicle)
 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...
 
long getTransitValueFromClass (long from_index, long to_index, long vehicle_class)
 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...
 
IntVar cumulVar (long index)
 Get the cumul, transit and slack variables for the given node (given as int64 var index). More...
 
IntVar transitVar (long index)
 
IntVar fixedTransitVar (long index)
 
IntVar slackVar (long index)
 
IntVar[] cumuls ()
 Like CumulVar(), TransitVar(), SlackVar() but return the whole variable vectors instead (indexed by int64 var index). More...
 
IntVar[] fixed_transits ()
 
IntVar[] transits ()
 
IntVar[] slacks ()
 
void setSpanUpperBoundForVehicle (long upper_bound, int vehicle)
 Sets an upper bound on the dimension span on a given vehicle. More...
 
void setSpanCostCoefficientForVehicle (long coefficient, int vehicle)
 Sets a cost proportional to the dimension span on a given vehicle, or on all vehicles at once. More...
 
void setSpanCostCoefficientForAllVehicles (long coefficient)
 
void setGlobalSpanCostCoefficient (long 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 setCumulVarSoftUpperBound (long index, long upper_bound, long coefficient)
 Sets a soft upper bound to the cumul variable of a given variable index. More...
 
boolean hasCumulVarSoftUpperBound (long index)
 Returns true if a soft upper bound has been set for a given variable index. More...
 
long getCumulVarSoftUpperBound (long index)
 Returns the soft upper bound of a cumul variable for a given variable index. More...
 
long getCumulVarSoftUpperBoundCoefficient (long index)
 Returns the cost coefficient of the soft upper bound of a cumul variable for a given variable index. More...
 
void setCumulVarSoftLowerBound (long index, long lower_bound, long coefficient)
 Sets a soft lower bound to the cumul variable of a given variable index. More...
 
boolean hasCumulVarSoftLowerBound (long index)
 Returns true if a soft lower bound has been set for a given variable index. More...
 
long getCumulVarSoftLowerBound (long index)
 Returns the soft lower bound of a cumul variable for a given variable index. More...
 
long getCumulVarSoftLowerBoundCoefficient (long index)
 Returns the cost coefficient of the soft lower bound of a cumul variable for a given variable index. More...
 
void setBreakIntervalsOfVehicle (IntervalVar[] breaks, int vehicle, int pre_travel_evaluator, int post_travel_evaluator)
 Sets the breaks for a given vehicle. More...
 
void setBreakIntervalsOfVehicle (IntervalVar[] breaks, int vehicle, long[] node_visit_transits)
 Deprecated, sets pre_travel(i, j) = node_visit_transit[i]. More...
 
void SetBreakDistanceDurationOfVehicle (long distance, long 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 least distance. More...
 
void InitializeBreaks ()
 Sets up vehicle_break_intervals_, vehicle_break_distance_duration_, pre_travel_evaluators and post_travel_evaluators. More...
 
boolean HasBreakConstraints ()
 Returns true if any break interval or break distance was defined. More...
 
void setBreakIntervalsOfVehicle (IntervalVar[] breaks, int vehicle, long[] node_visit_transits, LongBinaryOperator group_delays)
 Deprecated, sets pre_travel(i, j) = node_visit_transit[i] and post_travel(i, j) = group_delays(i, j). More...
 
IntervalVar[] getBreakIntervalsOfVehicle (int vehicle)
 Returns the break intervals set by SetBreakIntervalsOfVehicle(). More...
 
int GetPreTravelEvaluatorOfVehicle (int vehicle)
 
int GetPostTravelEvaluatorOfVehicle (int vehicle)
 
RoutingDimension base_dimension ()
 Returns the parent in the dependency tree if any or nullptr otherwise. More...
 
long shortestTransitionSlack (long node)
 It makes sense to use the function only for self-dependent dimension. More...
 
String name ()
 Returns the name of the dimension. More...
 
void setPickupToDeliveryLimitFunctionForPair (IntIntToLongFunction limit_function, int pair_index)
 
boolean hasPickupToDeliveryLimits ()
 
void addNodePrecedence (long first_node, long second_node, long offset)
 
long getSpanUpperBoundForVehicle (int vehicle)
 
long getSpanCostCoefficientForVehicle (int vehicle)
 
long getGlobalSpanCostCoefficient ()
 
long GetGlobalOptimizerOffset ()
 
long GetLocalOptimizerOffsetForVehicle (int vehicle)
 

Protected Member Functions

 RoutingDimension (long cPtr, boolean cMemoryOwn)
 

Constructor & Destructor Documentation

◆ RoutingDimension()

RoutingDimension ( long  cPtr,
boolean  cMemoryOwn 
)
inlineprotected

Definition at line 22 of file RoutingDimension.java.

Member Function Documentation

◆ addNodePrecedence()

void addNodePrecedence ( long  first_node,
long  second_node,
long  offset 
)
inline

Definition at line 278 of file RoutingDimension.java.

◆ base_dimension()

RoutingDimension base_dimension ( )
inline

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

Definition at line 251 of file RoutingDimension.java.

◆ cumuls()

IntVar [] cumuls ( )
inline

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

Definition at line 94 of file RoutingDimension.java.

◆ cumulVar()

IntVar cumulVar ( long  index)
inline

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

Definition at line 71 of file RoutingDimension.java.

◆ delete()

synchronized void delete ( )
inline

Definition at line 36 of file RoutingDimension.java.

◆ fixed_transits()

IntVar [] fixed_transits ( )
inline

Definition at line 98 of file RoutingDimension.java.

◆ fixedTransitVar()

IntVar fixedTransitVar ( long  index)
inline

Definition at line 81 of file RoutingDimension.java.

◆ getBreakIntervalsOfVehicle()

IntervalVar [] getBreakIntervalsOfVehicle ( int  vehicle)
inline

Returns the break intervals set by SetBreakIntervalsOfVehicle().

Definition at line 236 of file RoutingDimension.java.

◆ getCumulVarSoftLowerBound()

long getCumulVarSoftLowerBound ( long  index)
inline

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 180 of file RoutingDimension.java.

◆ getCumulVarSoftLowerBoundCoefficient()

long getCumulVarSoftLowerBoundCoefficient ( long  index)
inline

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 187 of file RoutingDimension.java.

◆ getCumulVarSoftUpperBound()

long getCumulVarSoftUpperBound ( long  index)
inline

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 152 of file RoutingDimension.java.

◆ getCumulVarSoftUpperBoundCoefficient()

long getCumulVarSoftUpperBoundCoefficient ( long  index)
inline

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 159 of file RoutingDimension.java.

◆ GetGlobalOptimizerOffset()

long GetGlobalOptimizerOffset ( )
inline

Definition at line 294 of file RoutingDimension.java.

◆ getGlobalSpanCostCoefficient()

long getGlobalSpanCostCoefficient ( )
inline

Definition at line 290 of file RoutingDimension.java.

◆ GetLocalOptimizerOffsetForVehicle()

long GetLocalOptimizerOffsetForVehicle ( int  vehicle)
inline

Definition at line 298 of file RoutingDimension.java.

◆ GetPostTravelEvaluatorOfVehicle()

int GetPostTravelEvaluatorOfVehicle ( int  vehicle)
inline

Definition at line 244 of file RoutingDimension.java.

◆ GetPreTravelEvaluatorOfVehicle()

int GetPreTravelEvaluatorOfVehicle ( int  vehicle)
inline

Definition at line 240 of file RoutingDimension.java.

◆ getSpanCostCoefficientForVehicle()

long getSpanCostCoefficientForVehicle ( int  vehicle)
inline

Definition at line 286 of file RoutingDimension.java.

◆ getSpanUpperBoundForVehicle()

long getSpanUpperBoundForVehicle ( int  vehicle)
inline

Definition at line 282 of file RoutingDimension.java.

◆ getTransitValue()

long getTransitValue ( long  from_index,
long  to_index,
long  vehicle 
)
inline

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 57 of file RoutingDimension.java.

◆ getTransitValueFromClass()

long getTransitValueFromClass ( long  from_index,
long  to_index,
long  vehicle_class 
)
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 64 of file RoutingDimension.java.

◆ HasBreakConstraints()

boolean HasBreakConstraints ( )
inline

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

Definition at line 222 of file RoutingDimension.java.

◆ hasCumulVarSoftLowerBound()

boolean hasCumulVarSoftLowerBound ( long  index)
inline

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

Definition at line 173 of file RoutingDimension.java.

◆ hasCumulVarSoftUpperBound()

boolean hasCumulVarSoftUpperBound ( long  index)
inline

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

Definition at line 145 of file RoutingDimension.java.

◆ hasPickupToDeliveryLimits()

boolean hasPickupToDeliveryLimits ( )
inline

Definition at line 274 of file RoutingDimension.java.

◆ InitializeBreaks()

void InitializeBreaks ( )
inline

Sets up vehicle_break_intervals_, vehicle_break_distance_duration_, pre_travel_evaluators and post_travel_evaluators.

Definition at line 215 of file RoutingDimension.java.

◆ model()

RoutingModel model ( )
inline

Returns the model on which the dimension was created.

Definition at line 49 of file RoutingDimension.java.

◆ name()

String name ( )
inline

Returns the name of the dimension.

Definition at line 266 of file RoutingDimension.java.

◆ SetBreakDistanceDurationOfVehicle()

void SetBreakDistanceDurationOfVehicle ( long  distance,
long  duration,
int  vehicle 
)
inline

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

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

Definition at line 208 of file RoutingDimension.java.

◆ setBreakIntervalsOfVehicle() [1/3]

void setBreakIntervalsOfVehicle ( IntervalVar[]  breaks,
int  vehicle,
int  pre_travel_evaluator,
int  post_travel_evaluator 
)
inline

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 194 of file RoutingDimension.java.

◆ setBreakIntervalsOfVehicle() [2/3]

void setBreakIntervalsOfVehicle ( IntervalVar[]  breaks,
int  vehicle,
long[]  node_visit_transits 
)
inline

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

Definition at line 201 of file RoutingDimension.java.

◆ setBreakIntervalsOfVehicle() [3/3]

void setBreakIntervalsOfVehicle ( IntervalVar[]  breaks,
int  vehicle,
long[]  node_visit_transits,
LongBinaryOperator  group_delays 
)
inline

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

Definition at line 229 of file RoutingDimension.java.

◆ setCumulVarSoftLowerBound()

void setCumulVarSoftLowerBound ( long  index,
long  lower_bound,
long  coefficient 
)
inline

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. Note: Using soft lower and upper bounds or span costs together is, as of 6/2014, not well supported in the sense that an optimal schedule is not guaranteed.

Definition at line 166 of file RoutingDimension.java.

◆ setCumulVarSoftUpperBound()

void setCumulVarSoftUpperBound ( long  index,
long  upper_bound,
long  coefficient 
)
inline

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 138 of file RoutingDimension.java.

◆ setGlobalSpanCostCoefficient()

void setGlobalSpanCostCoefficient ( long  coefficient)
inline

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 131 of file RoutingDimension.java.

◆ setPickupToDeliveryLimitFunctionForPair()

void setPickupToDeliveryLimitFunctionForPair ( IntIntToLongFunction  limit_function,
int  pair_index 
)
inline

Definition at line 270 of file RoutingDimension.java.

◆ setSpanCostCoefficientForAllVehicles()

void setSpanCostCoefficientForAllVehicles ( long  coefficient)
inline

Definition at line 124 of file RoutingDimension.java.

◆ setSpanCostCoefficientForVehicle()

void setSpanCostCoefficientForVehicle ( long  coefficient,
int  vehicle 
)
inline

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 120 of file RoutingDimension.java.

◆ setSpanUpperBoundForVehicle()

void setSpanUpperBoundForVehicle ( long  upper_bound,
int  vehicle 
)
inline

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 113 of file RoutingDimension.java.

◆ shortestTransitionSlack()

long shortestTransitionSlack ( long  node)
inline

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 259 of file RoutingDimension.java.

◆ slacks()

IntVar [] slacks ( )
inline

Definition at line 106 of file RoutingDimension.java.

◆ slackVar()

IntVar slackVar ( long  index)
inline

Definition at line 86 of file RoutingDimension.java.

◆ transits()

IntVar [] transits ( )
inline

Definition at line 102 of file RoutingDimension.java.

◆ transitVar()

IntVar transitVar ( long  index)
inline

Definition at line 76 of file RoutingDimension.java.


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