![]() |
OR-Tools
8.2
|
The following constraint ensures that incompatibilities and requirements between types are respected.
It verifies both "hard" and "temporal" incompatibilities. Two nodes with hard incompatible types cannot be served by the same vehicle at all, while with a temporal incompatibility they can't be on the same route at the same time. The VisitTypePolicy of a node determines how visiting it impacts the type count on the route.
For example, for
It also verifies same-vehicle and temporal type requirements. A node of type T_d with a same-vehicle requirement for type T_r needs to be served by the same vehicle as a node of type T_r. Temporal requirements, on the other hand, can take effect either when the dependent type is being added to the route or when it's removed from it, which is determined by the dependent node's VisitTypePolicy. In the above example:
Public Member Functions | |
TypeRegulationsConstraint (const RoutingModel &model) | |
void | Post () override |
This method is called when the constraint is processed by the solver. More... | |
void | InitialPropagate () override |
This method performs the initial propagation of the constraint. More... | |
std::string | DebugString () const override |
void | PostAndPropagate () |
Calls Post and then Propagate to initialize the constraints. More... | |
virtual void | Accept (ModelVisitor *const visitor) const |
Accepts the given visitor. More... | |
bool | IsCastConstraint () const |
Is the constraint created by a cast from expression to integer variable? More... | |
virtual IntVar * | Var () |
Creates a Boolean variable representing the status of the constraint (false = constraint is violated, true = constraint is satisfied). More... | |
Solver * | solver () const |
void | FreezeQueue () |
This method freezes the propagation queue. More... | |
void | UnfreezeQueue () |
This method unfreezes the propagation queue. More... | |
void | EnqueueDelayedDemon (Demon *const d) |
This method pushes the demon onto the propagation queue. More... | |
void | EnqueueVar (Demon *const d) |
void | ExecuteAll (const SimpleRevFIFO< Demon * > &demons) |
void | EnqueueAll (const SimpleRevFIFO< Demon * > &demons) |
void | set_action_on_fail (Solver::Action a) |
void | reset_action_on_fail () |
This method clears the failure callback. More... | |
void | set_variable_to_clean_on_fail (IntVar *v) |
Shortcut for variable cleaner. More... | |
virtual std::string | name () const |
Object naming. More... | |
void | set_name (const std::string &name) |
bool | HasName () const |
Returns whether the object has been named or not. More... | |
virtual std::string | BaseName () const |
Returns a base name for automatic naming. More... | |
|
explicit |
Definition at line 6417 of file routing.cc.
|
virtualinherited |
Accepts the given visitor.
Reimplemented in IfThenElseCt, and Pack.
Definition at line 3247 of file constraint_solver.cc.
|
virtualinherited |
Returns a base name for automatic naming.
Reimplemented in BooleanVar.
Definition at line 2515 of file constraint_solver.cc.
|
overridevirtualinherited |
Reimplemented from PropagationBaseObject.
Reimplemented in GlobalVehicleBreaksConstraint, IfThenElseCt, and Pack.
Definition at line 3237 of file constraint_solver.cc.
|
inherited |
Definition at line 2521 of file constraint_solver.cc.
|
inlineinherited |
This method pushes the demon onto the propagation queue.
It will be processed directly if the queue is empty. It will be enqueued according to its priority otherwise.
Definition at line 3192 of file constraint_solver.h.
|
inlineinherited |
Definition at line 3193 of file constraint_solver.h.
|
inherited |
Definition at line 2517 of file constraint_solver.cc.
|
inlineinherited |
This method freezes the propagation queue.
It is useful when you need to apply multiple modifications at once.
Definition at line 3183 of file constraint_solver.h.
|
inherited |
Returns whether the object has been named or not.
Definition at line 2513 of file constraint_solver.cc.
|
overridevirtual |
This method performs the initial propagation of the constraint.
It is called just after the post.
Implements Constraint.
Definition at line 6465 of file routing.cc.
|
inherited |
Is the constraint created by a cast from expression to integer variable?
Definition at line 3253 of file constraint_solver.cc.
|
virtualinherited |
Object naming.
Reimplemented in PiecewiseLinearExpr.
Definition at line 2505 of file constraint_solver.cc.
|
overridevirtual |
This method is called when the constraint is processed by the solver.
Its main usage is to attach demons to variables.
Implements Constraint.
Definition at line 6450 of file routing.cc.
|
inherited |
Calls Post and then Propagate to initialize the constraints.
This is usually done in the root node.
Definition at line 3239 of file constraint_solver.cc.
|
inlineinherited |
This method clears the failure callback.
Definition at line 3206 of file constraint_solver.h.
|
inlineinherited |
Definition at line 3200 of file constraint_solver.h.
|
inherited |
Definition at line 2509 of file constraint_solver.cc.
|
inlineinherited |
Shortcut for variable cleaner.
Definition at line 3209 of file constraint_solver.h.
|
inlineinherited |
Definition at line 3179 of file constraint_solver.h.
|
inlineinherited |
This method unfreezes the propagation queue.
All modifications that happened when the queue was frozen will be processed.
Definition at line 3187 of file constraint_solver.h.
|
virtualinherited |
Creates a Boolean variable representing the status of the constraint (false = constraint is violated, true = constraint is satisfied).
It returns nullptr if the constraint does not support this API.
Definition at line 3257 of file constraint_solver.cc.