C++ Reference
C++ Reference: Routing
constraint_solveri.h
Go to the documentation of this file.
Implements a complete cache for model elements: expressions and constraints.
Definition: constraint_solveri.h:1813
const_iterator begin() const
Definition: constraint_solveri.h:2362
Definition: constraint_solveri.h:1880
bool MakeOneNeighbor() override
This method should not be overridden. Override MakeNeighbor() instead.
~PropagationMonitor() override
CallMethod3(T *const ct, void(T::*method)(P, Q, R), const std::string &name, P param1, Q param2, R param3)
Definition: constraint_solveri.h:622
virtual void SetEndRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
void SetBackwardSequence(const std::vector< int > &backward_sequence)
bool ValueFromAssignent(const Assignment &assignment, IntVar *var, int64 index, int64 *value)
Definition: constraint_solveri.h:976
~RevGrowingArray()
Definition: constraint_solveri.h:2213
virtual void InsertVarArrayConstantArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &var, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type)=0
void NoMoreSolutions() override
When the search tree is finished.
virtual void SetDurationRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
void Reset() override
void SetValue(int64 v)
Definition: constraint_solver.h:4576
void Synchronize(const Assignment *assignment, const Assignment *delta) override
Synchronizes all filters to assignment.
void VisitIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values) override
void Remove(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2348
void OnNodeInitialization() override
Called by OnStart() after initializing node information.
virtual void OnSynchronize(const Assignment *delta)
Definition: constraint_solveri.h:1582
std::vector< Val > prev_values_
Definition: constraint_solveri.h:940
const RevIntSet< int > & active_words() const
Returns the set of active word indices.
Definition: constraint_solveri.h:2555
DELAYED_PRIORITY is the lowest priority: Demons will be processed after VAR_PRIORITY and NORMAL_PRIOR...
Definition: constraint_solver.h:594
void RemoveValue(int64 v) override
This method removes the value 'v' from the domain of the variable.
void SetValue(int64 index, T value)
Definition: constraint_solveri.h:2186
virtual void Clear()=0
int64 StartNode(int i) const
Returns the index of the variable corresponding to the current path of the ith base node.
Definition: constraint_solveri.h:1311
int64 Prev(int64 node_index) const
Definition: constraint_solveri.h:1452
bool IsPathEnd(int64 i) const
Returns true if i is the last node on the path; defined by the fact that i outside the range of the v...
Definition: constraint_solveri.h:1381
int64 size() const
Returns the number of interval vars in the sequence.
Definition: constraint_solver.h:4515
LocalSearchOperator()
Definition: constraint_solveri.h:807
bool AreAllBoundOrNull(const std::vector< IntVar * > &vars, const std::vector< T > &values)
Returns true if all the variables are assigned to a single value, or if their corresponding value is ...
Definition: constraint_solveri.h:2684
~VarLocalSearchOperator() override
Definition: constraint_solveri.h:829
Bitset64 activated_
Definition: constraint_solveri.h:942
IntVarLocalSearchOperator(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:1037
virtual void InsertExprExpression(IntExpr *const expression, IntExpr *const expr, ExprExpressionType type)=0
~SearchLog() override
std::string DebugString() const override
Definition: constraint_solveri.h:2192
Low-priority demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:739
bool FindIndex(IntVar *const var, int64 *index) const
Definition: constraint_solveri.h:1562
std::string DebugString() const override
Definition: constraint_solveri.h:1528
void SetBackwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1118
const std::vector< int > & Sequence(int64 index) const
Returns the value in the current assignment of the variable of given index.
Definition: constraint_solveri.h:1111
virtual void EndProcessingIntegerVariable(IntVar *const var)=0
SimpleRevFIFO()
Definition: constraint_solveri.h:175
SmallRevBitSet(int64 size)
std::vector< int64 > start_to_path_
Definition: constraint_solveri.h:1398
void SetTypeName(const std::string &type_name)
std::string DebugString() const override
This class represent a reversible FIFO structure.
Definition: constraint_solver.h:150
~ChangeValue() override
ExprExprConstraintType
Definition: constraint_solveri.h:1834
virtual void RestoreValue()=0
Matrix version of the RevBitSet class.
Definition: constraint_solveri.h:470
void WhenBound(Demon *d) override
This method attaches a demon that will be awakened when the variable is bound.
bool IsInactive(int64 i) const
Returns true if node is inactive.
Definition: constraint_solveri.h:1384
bool IsArrayBoolean(const std::vector< T > &values)
Definition: constraint_solveri.h:2578
const std::string & TypeName() const
Type of the argument.
bool HasIntegerVariableArrayArgument(const std::string &arg_name) const
~DelayedCallMethod0() override
Definition: constraint_solveri.h:675
PathWithPreviousNodesOperator(const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, int number_of_base_nodes, std::function< int(int64)> start_empty_path_class)
virtual bool MakeNeighbor()=0
bool MakeActive(int64 node, int64 destination)
void OutputDecision()
~RevPartialSequence()
Definition: constraint_solveri.h:2427
BaseIntExpr(Solver *const s)
Definition: constraint_solveri.h:111
Definition: constraint_solveri.h:1879
virtual void EndOperatorStart()=0
virtual void SetValue(IntVar *const var, int64 value)=0
bool AreAllStrictlyNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2633
Base operator class for operators manipulating variables.
Definition: constraint_solveri.h:821
void SetNext(int64 from, int64 to, int64 path)
Sets the to to be the node after from.
Definition: constraint_solveri.h:1370
bool cleared_
Definition: constraint_solveri.h:946
bool Empty() const
This method returns true if the active bitset is null.
Definition: constraint_solveri.h:2539
IntVarIterator * MakeDomainIterator(bool reversible) const override
Creates a domain iterator.
void SetToOne(Solver *const solver, int64 row, int64 column)
Sets the 'column' bit in the 'row' row.
virtual void InsertVarConstantConstantExpression(IntExpr *const expression, IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type)=0
virtual void PushContext(const std::string &context)=0
~BaseIntExpr() override
Definition: constraint_solveri.h:112
void SetIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values)
virtual void InitFragments()
bool IsSet(int64 row, int64 column) const
Returns whether the 'column' bit in the 'row' row is set.
Definition: constraint_solveri.h:480
const V & FindWithDefault(const K &key, const V &default_value) const
Returns one value attached to 'key', or 'default_value' if 'key' is not in the multi-map.
Definition: constraint_solveri.h:318
SparseBitset delta_changes_
Definition: constraint_solveri.h:945
void VisitIntegerArgument(const std::string &arg_name, int64 value) override
Integer arguments.
virtual Constraint * FindVarConstantConstantConstraint(IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type) const =0
Var Constant Constant Constraints.
IntContainer * MutableIntVarContainer()
Definition: constraint_solver.h:5081
SequenceVarLocalSearchOperator(const std::vector< SequenceVar * > &vars)
Definition: constraint_solveri.h:1103
virtual void EndFiltering(const LocalSearchFilter *filter, bool reject)=0
void EndVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
SequenceVarLocalSearchHandler(SequenceVarLocalSearchOperator *op)
Definition: constraint_solveri.h:1067
virtual int64 GetBaseNodeRestartPosition(int base_index)
Returns the index of the node to which the base node of index base_index must be set to when it reach...
Definition: constraint_solveri.h:1340
int VarType() const override
Definition: constraint_solveri.h:1713
Demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:512
void Push(Solver *const s, T val)
Definition: constraint_solveri.h:177
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
Definition: constraint_solveri.h:755
void Restore(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2353
void SetToOne(Solver *const solver, int64 index)
Sets the 'index' bit.
PathOperator(const std::vector< IntVar * > &next_vars, const std::vector< IntVar * > &path_vars, int number_of_base_nodes, bool skip_locally_optimal_paths, std::function< int(int64)> start_empty_path_class)
Builds an instance of PathOperator from next and path variables.
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:677
std::vector< V * > vars_
Definition: constraint_solveri.h:937
const SequenceContainer & SequenceVarContainer() const
Definition: constraint_solver.h:5088
void Maintain()
std::vector< int > assignment_indices_
Definition: constraint_solveri.h:941
bool Activated() const
Definition: constraint_solver.h:4536
virtual bool OnSamePathAsPreviousBase(int64 base_index)
Returns true if a base node has to be on the same path as the "previous" base node (base node of inde...
Definition: constraint_solveri.h:1334
virtual void RankLast(SequenceVar *const var, int index)=0
Demon * MakeDelayedConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:731
VarConstantArrayExpressionType
Definition: constraint_solveri.h:1888
bool IsSet(int64 index) const
Returns whether the 'index' bit is set.
virtual void InsertVarConstantConstantConstraint(Constraint *const ct, IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type)=0
virtual bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta)=0
virtual Constraint * FindVoidConstraint(VoidConstraintType type) const =0
Void constraints.
A sequence variable is a variable whose domain is a set of possible orderings of the interval variabl...
Definition: constraint_solver.h:4439
This class encapsulates an objective.
Definition: constraint_solver.h:4136
static const int kUnboundBooleanVarValue
Definition: constraint_solveri.h:1686
bool Contains(int64 v) const override
This method returns whether the value 'v' is in the domain of the variable.
RevIntSet(int capacity)
Capacity is the fixed size of the set (it cannot grow).
Definition: constraint_solveri.h:2294
SearchLog(Solver *const s, OptimizeVar *const obj, IntVar *const var, double scaling_factor, double offset, std::function< std::string()> display_callback, int period)
int num_items() const
Definition: constraint_solveri.h:300
void AcceptUncheckedNeighbor() override
After accepting an unchecked neighbor during local search.
void VisitSequenceVariable(const SequenceVar *const variable) override
This is the base class for all expressions that are not variables.
Definition: constraint_solveri.h:109
virtual void SetStartRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
~DelayedCallMethod2() override
Definition: constraint_solveri.h:749
The base class of all search logs that periodically outputs information when the search is running.
Definition: constraint_solveri.h:1765
void VisitIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &arguments) override
friend class SymmetryManager
Definition: constraint_solveri.h:1748
virtual void EndDemonRun(Demon *const demon)=0
void RankFirst(Solver *const solver, int elt)
Definition: constraint_solveri.h:2443
virtual IntExpr * FindVarArrayConstantArrayExpression(const std::vector< IntVar * > &vars, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type) const =0
Var Array Constant Array Expressions.
void Clear(Solver *const solver)
Definition: constraint_solveri.h:2358
void EndVisitModel(const std::string &solver_name) override
std::string DebugString() const override
Definition: constraint_solveri.h:637
void AddToAssignment(SequenceVar *var, const std::vector< int > &value, bool active, std::vector< int > *assignment_indices, int64 index, Assignment *assignment) const
Definition: constraint_solveri.h:1129
int64 PosIntDivUp(int64 e, int64 v)
Definition: constraint_solveri.h:2733
int64 Path(int64 node_index) const
Returns the index of the path to which the node of index node_index belongs in the current assignment...
Definition: constraint_solveri.h:1296
std::string DebugString() const override
Definition: constraint_solveri.h:1597
Demon proxy to a method on the constraint with three arguments.
Definition: constraint_solveri.h:620
void SetToZero(Solver *const solver, int64 index)
Erases the 'index' bit.
A Demon is the base element of a propagation queue.
Definition: constraint_solver.h:3233
void OnAddVars()
Definition: constraint_solveri.h:1177
bool RevSubtract(Solver *const solver, const std::vector< uint64 > &mask)
This method subtracts the mask from the active bitset.
Low-priority demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:703
SequenceVar * Var() const
Definition: constraint_solver.h:4713
void SetToOne(Solver *const solver, int64 pos)
Sets the 'pos' bit.
virtual void RankSequence(SequenceVar *const var, const std::vector< int > &rank_first, const std::vector< int > &rank_last, const std::vector< int > &unperformed)=0
bool IsArrayInRange(const std::vector< IntVar * > &vars, T range_min, T range_max)
Definition: constraint_solveri.h:2658
bool ValueFromAssignent(const Assignment &assignment, SequenceVar *var, int64 index, std::vector< int > *value)
Definition: constraint_solveri.h:1155
VarConstantConstantConstraintType
Definition: constraint_solveri.h:1829
virtual void BeginNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:751
RevGrowingArray(int64 block_size)
Definition: constraint_solveri.h:2208
SequenceVarLocalSearchHandler(const SequenceVarLocalSearchHandler &other)
Definition: constraint_solveri.h:1065
DelayedCallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:705
IntVar * IsGreaterOrEqual(int64 constant) override
void AddVars(const std::vector< V * > &vars)
Definition: constraint_solveri.h:908
BaseLns(const std::vector< IntVar * > &vars)
void OnRevertChanges(int64 index)
Definition: constraint_solveri.h:1173
std::string DebugString() const override
Definition: constraint_solveri.h:596
virtual bool IsIncremental() const
Definition: constraint_solveri.h:1511
virtual void SetEndMax(IntervalVar *const var, int64 new_max)=0
CallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:582
virtual int64 GetSynchronizedObjectiveValue() const
Objective value from last time Synchronize() was called.
Definition: constraint_solveri.h:1514
void SetIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
DelayedCallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:672
virtual void BeginMakeNextNeighbor(const LocalSearchOperator *op)=0
virtual void Reset()
Definition: constraint_solveri.h:811
Base class of the local search operators dedicated to path modifications (a path is a set of nodes li...
Definition: constraint_solveri.h:1261
void VisitIntegerVariable(const IntVar *const variable, IntExpr *const delegate) override
std::string BaseName() const override
Returns a base name for automatic naming.
Definition: constraint_solveri.h:1721
virtual void BeginOperatorStart()=0
Local search operator events.
bool SkipUnchanged(int index) const override
int64 word_size() const
Returns the number of 64 bit words used to store the bitset.
Definition: constraint_solveri.h:2553
int next_base_to_increment_
Definition: constraint_solveri.h:1396
~RevImmutableMultiMap()
Definition: constraint_solveri.h:298
bool RevAnd(Solver *const solver, const std::vector< uint64 > &mask)
This method ANDs the mask with the active bitset.
virtual bool HoldsDelta() const
Definition: constraint_solveri.h:816
void SetForwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1115
DelayedCallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:741
bool HasFragments() const override
Definition: constraint_solveri.h:1216
virtual void SetMax(IntExpr *const expr, int64 new_max)=0
int NumFirstRanked() const
Definition: constraint_solveri.h:2429
virtual void InsertExprExprExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type)=0
ExprConstantExpressionType
Definition: constraint_solveri.h:1870
Definition: constraint_solveri.h:1884
~LocalSearchOperator() override
Definition: constraint_solveri.h:808
Demon * MakeConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:532
void SetToZero(Solver *const solver, int64 pos)
Erases the 'pos' bit.
VarArrayConstantArrayExpressionType
Definition: constraint_solveri.h:1893
bool ContainsKey(const K &key) const
Returns true if the multi-map contains at least one instance of 'key'.
Definition: constraint_solveri.h:303
Handler var_handler_
Definition: constraint_solveri.h:947
virtual void PopContext()=0
virtual void InsertExprExprConstantExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type)=0
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:592
const std::vector< int > & ForwardSequence() const
This iterator is not stable with respect to deletion.
Definition: constraint_solveri.h:156
virtual void SetValues(IntVar *const var, const std::vector< int64 > &values)=0
virtual IntVar * CastToVar()
bool AreAllBooleans(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2677
bool Bound() const override
Returns true if the min and the max of the expression are equal.
Definition: constraint_solveri.h:1698
T * MutableLast()
Definition: constraint_solveri.h:201
ModelParser()
void SetMin(int64 m) override
void SetIntervalArgument(const std::string &arg_name, IntervalVar *const var)
virtual Constraint * FindVarConstantConstraint(IntVar *const var, int64 value, VarConstantConstraintType type) const =0
Var Constant Constraints.
const E & Element(const V *const var) const
Definition: constraint_solver.h:4832
IntVarLocalSearchOperator()
Definition: constraint_solveri.h:1036
void OnRevertChanges(int64 index)
Definition: constraint_solveri.h:988
virtual T Evaluate(int64 index) const
Definition: constraint_solveri.h:2180
virtual Constraint * FindExprExprConstraint(IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type) const =0
Expr Expr Constraints.
int64 OldPath(int64 node_index) const
Definition: constraint_solveri.h:1354
int64 Next(int64 node_index) const
Returns the index of the node after the node of index node_index in the current assignment.
Definition: constraint_solveri.h:1289
std::vector< std::vector< int > > backward_values_
Definition: constraint_solveri.h:1126
~IntVarLocalSearchOperator() override
Definition: constraint_solveri.h:1042
LocalSearchFilterManager(Solver *const solver, const std::vector< LocalSearchFilter * > &filters)
~UnsortedNullableRevBitset()
Definition: constraint_solveri.h:2520
virtual void SetStartMax(IntervalVar *const var, int64 new_max)=0
void BeginVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
virtual void EndFilterNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
RevImmutableMultiMap(Solver *const solver, int initial_size)
Definition: constraint_solveri.h:290
virtual IntExpr * FindVarArrayExpression(const std::vector< IntVar * > &vars, VarArrayExpressionType type) const =0
Var Array Expressions.
Argument Holder: useful when visiting a model.
Definition: constraint_solveri.h:2050
~CallMethod3() override
Definition: constraint_solveri.h:631
void Incr(Solver *const s)
Definition: constraint_solver.h:3698
void VisitSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &arguments) override
void AddVars(const std::vector< IntVar * > &vars)
Add variables to "track" to the filter.
ExprExprConstantExpressionType
Definition: constraint_solveri.h:1865
bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2598
void SetValue(Solver *const s, const T &val)
Definition: constraint_solver.h:3673
SimpleRevFIFO< Demon * > delayed_bound_demons_
Definition: constraint_solveri.h:1728
ModelCache(Solver *const solver)
Bitset64 was_activated_
Definition: constraint_solveri.h:943
SymmetryBreaker()
Definition: constraint_solveri.h:1738
virtual void RankNotLast(SequenceVar *const var, int index)=0
~BaseLns() override
void RemoveInterval(int64 l, int64 u) override
This method removes the interval 'l' .
void Synchronize(const Assignment *assignment, const Assignment *delta) override
This method should not be overridden.
CallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:552
int64 GetFirstBit(int start) const
Gets the index of the first bit set starting from start.
int64 Value() const override
This method returns the value of the variable.
Definition: constraint_solveri.h:1699
bool MakeOneNeighbor() override
This method should not be overridden. Override ModifyValue() instead.
void VisitIntervalArgument(const std::string &arg_name, IntervalVar *const argument) override
Visit interval argument.
~DelayedCallMethod1() override
Definition: constraint_solveri.h:709
void EndInitialPropagation() override
After the initial propagation.
virtual int64 GetAcceptedObjectiveValue() const
Objective value from the last time Accept() was called and returned true.
Definition: constraint_solveri.h:1517
void VisitIntegerExpressionArgument(const std::string &arg_name, IntExpr *const argument) override
Variables.
ArgumentHolder * Top() const
int ActiveWordSize() const
This method returns the number of non null 64 bit words in the bitset representation.
Definition: constraint_solveri.h:2536
VarConstantConstraintType
Definition: constraint_solveri.h:1821
VarTypes
This enum is used internally to do dynamic typing on subclasses of integer variables.
Definition: constraint_solveri.h:123
virtual void RankNotFirst(SequenceVar *const var, int index)=0
void WhenRange(Demon *d) override
Attach a demon that will watch the min or the max of the expression.
Definition: constraint_solveri.h:1706
virtual void RemoveValue(IntVar *const var, int64 value)=0
~CallMethod1() override
Definition: constraint_solveri.h:556
virtual IntExpr * FindExprExprExpression(IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type) const =0
Expr Expr Expressions.
const std::vector< int64 > & path_starts() const
Returns the vector of path start nodes.
Definition: constraint_solveri.h:1313
bool HoldsDelta() const override
Definition: constraint_solveri.h:830
int64 OldNext(int64 node_index) const
Definition: constraint_solveri.h:1349
const std::vector< IntVar * > & FindIntegerVariableArrayArgumentOrDie(const std::string &arg_name) const
RevPartialSequence(const std::vector< int > &items)
Definition: constraint_solveri.h:2403
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:711
int64 Cardinality() const
Returns the number of bits set to one.
std::string DebugString() const override
Definition: constraint_solveri.h:759
VarArrayConstantExpressionType
Definition: constraint_solveri.h:1905
Specialization of LocalSearchOperator built from an array of IntVars which specifies the scope of the...
Definition: constraint_solveri.h:1033
void AddIntegerVariableLessOrEqualValueClause(IntVar *const var, int64 value)
std::vector< Val > old_values_
Definition: constraint_solveri.h:939
RevBitSet(int64 size)
Definition: constraint_solveri.h:1866
Simple PathOperator wrapper that also stores the current previous nodes, and is thus able to provide ...
Definition: constraint_solveri.h:1442
void Init(Solver *const solver, const std::vector< uint64 > &mask)
This methods overwrites the active bitset with the mask.
bool AreAllStrictlyPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2628
virtual void SetDurationMin(IntervalVar *const var, int64 new_min)=0
std::string ParameterDebugString(P param)
Definition: constraint_solveri.h:538
void SetIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &vars)
virtual void InsertExprConstantExpression(IntExpr *const expression, IntExpr *const var, int64 value, ExprConstantExpressionType type)=0
This is a special class to represent a 'residual' set of T.
Definition: constraint_solveri.h:2289
virtual void InsertExprExprConstraint(Constraint *const ct, IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type)=0
const IntContainer & IntVarContainer() const
Definition: constraint_solver.h:5080
virtual bool SkipUnchanged(int index) const
Definition: constraint_solveri.h:856
E * MutableElement(const V *const var)
Definition: constraint_solver.h:4819
void Install() override
Install itself on the solver.
SimpleRevFIFO< Demon * > bound_demons_
Definition: constraint_solveri.h:1727
void AddToAssignment(IntVar *var, int64 value, bool active, std::vector< int > *assignment_indices, int64 index, Assignment *assignment) const
Definition: constraint_solveri.h:953
void VisitIntervalVariable(const IntervalVar *const variable, const std::string &operation, int64 value, IntervalVar *const delegate) override
bool ReverseChain(int64 before_chain, int64 after_chain, int64 *chain_last)
Reverses the chain starting after before_chain and ending before after_chain.
void BeginVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
void operator++()
Definition: constraint_solveri.h:162
virtual void InsertVarConstantArrayExpression(IntExpr *const expression, IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type)=0
bool IsIncreasingContiguous(const std::vector< T > &values)
Definition: constraint_solveri.h:2638
Local Search Filters are used for fast neighbor pruning.
Definition: constraint_solveri.h:1491
virtual void Start(const Assignment *assignment)=0
SequenceContainer * MutableSequenceVarContainer()
Definition: constraint_solver.h:5091
Definition: constraint_solveri.h:1885
virtual void SetStartMin(IntervalVar *const var, int64 new_min)=0
IntervalVar modifiers.
VarLocalSearchOperator()
Definition: constraint_solveri.h:823
int64 MinVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2714
std::string DebugString() const override
Definition: constraint_solveri.h:1662
~LocalSearchMonitor() override
~RevBitSet()
void AddIntegerVariableEqualValueClause(IntVar *const var, int64 value)
bool MoveChain(int64 before_chain, int64 chain_end, int64 destination)
Moves the chain starting after the node before_chain and ending at the node chain_end after the node ...
A constraint is the main modeling object.
Definition: constraint_solver.h:3516
const std::vector< int64 > & FindIntegerArrayArgumentOrDie(const std::string &arg_name) const
void SetIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &vars)
T At(int64 index) const
Definition: constraint_solveri.h:2219
IntVarElement * FastAdd(IntVar *const var)
Adds without checking if variable has been previously added.
virtual void OnStart()
Called by Start() after synchronizing the operator with the current assignment.
Definition: constraint_solveri.h:927
virtual void SetMin(IntExpr *const expr, int64 new_min)=0
IntExpr modifiers.
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
Definition: constraint_solveri.h:713
DemonPriority
This enum represents the three possible priorities for a demon in the Solver queue.
Definition: constraint_solver.h:591
bool IsArrayConstant(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2568
std::vector< int64 > ToInt64Vector(const std::vector< int > &input)
bool AreAllOnes(const std::vector< T > &values)
Definition: constraint_solveri.h:2588
const IntTupleSet & FindIntegerMatrixArgumentOrDie(const std::string &arg_name) const
This class represents a small reversible bitset (size <= 64).
Definition: constraint_solveri.h:410
bool HasIntegerExpressionArgument(const std::string &arg_name) const
Checks if arguments exist.
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:558
Demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:580
static const int kNoInserted
Definition: constraint_solveri.h:2291
bool AreAllNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2623
CallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:514
void EndVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
virtual bool Accept(const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max)=0
Accepts a "delta" given the assignment with which the filter has been synchronized; the delta holds t...
const int & operator[](int index) const
Definition: constraint_solveri.h:2436
Low-priority demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:670
A DecisionVisitor is used to inspect a decision.
Definition: constraint_solver.h:3181
ExprExpressionType
Definition: constraint_solveri.h:1844
int64 bit_size() const
Returns the number of bits given in the constructor of the bitset.
Definition: constraint_solveri.h:2551
VarLocalSearchOperator(std::vector< V * > vars, Handler var_handler)
Definition: constraint_solveri.h:824
void SetToZero(Solver *const solver, int64 row, int64 column)
Erases the 'column' bit in the 'row' row.
void BeginInitialPropagation() override
Before the initial propagation.
void SetValue(int64 index, const Val &value)
Definition: constraint_solveri.h:858
virtual void OutputLine(const std::string &line)
VoidConstraintType
Definition: constraint_solveri.h:1815
IntVar * IsDifferent(int64 constant) override
virtual void BeginFilterNeighbor(const LocalSearchOperator *op)=0
virtual void RankFirst(SequenceVar *const var, int index)=0
SequenceVar modifiers.
std::string DebugString() const override
~IntVarLocalSearchFilter() override
void BeginVisitModel(const std::string &solver_name) override
Header/footers.
~SequenceVarLocalSearchOperator() override
Definition: constraint_solveri.h:1108
SparseBitset changes_
Definition: constraint_solveri.h:944
void Decr(Solver *const s)
Definition: constraint_solver.h:3700
UnsortedNullableRevBitset(int bit_size)
Size is the number of bits to store in the bitset.
LocalSearchMonitor(Solver *const solver)
std::vector< Val > values_
Definition: constraint_solveri.h:938
void RefuteDecision(Decision *const decision) override
Before refuting the decision.
VarLocalSearchOperator< SequenceVar, std::vector< int >, SequenceVarLocalSearchHandler > SequenceVarLocalSearchOperatorTemplate
Definition: constraint_solveri.h:1097
virtual void SetRange(IntExpr *const expr, int64 new_min, int64 new_max)=0
virtual const LocalSearchOperator * Self() const
Definition: constraint_solveri.h:813
IntVar * Var(int index) const
Definition: constraint_solveri.h:1574
This class is a reversible growing array.
Definition: constraint_solveri.h:2206
virtual IntExpr * FindExprExprConstantExpression(IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type) const =0
Expr Expr Constant Expressions.
bool AreAllBound(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2668
void MarkChange(int64 index)
OnStart() should really be protected, but then SWIG doesn't see it.
Definition: constraint_solveri.h:932
~RevBitMatrix()
int64 BaseNode(int i) const
Returns the index of the variable corresponding to the ith base node.
Definition: constraint_solveri.h:1308
RevBitMatrix(int64 rows, int64 columns)
int PathClass(int i) const
Returns the class of the current path of the ith base node.
Definition: constraint_solveri.h:1315
void VisitSequenceArgument(const std::string &arg_name, SequenceVar *const argument) override
Visit sequence argument.
virtual void EndMakeNextNeighbor(const LocalSearchOperator *op, bool neighbor_found, const Assignment *delta, const Assignment *deltadelta)=0
Defines operators which change the value of variables; each neighbor corresponds to one modified vari...
Definition: constraint_solveri.h:1232
virtual void BeginDemonRun(Demon *const demon)=0
virtual void EndConstraintInitialPropagation(Constraint *const constraint)=0
void Deactivate()
Definition: constraint_solver.h:4535
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:633
~CallMethod0() override
Definition: constraint_solveri.h:517
Definition: constraint_solveri.h:1895
bool MakeChainInactive(int64 before_chain, int64 chain_end)
std::string DebugString() const override
Definition: constraint_solveri.h:560
IntExpr * FindIntegerExpressionArgumentOrDie(const std::string &arg_name) const
virtual void InsertVarArrayConstantExpression(IntExpr *const expression, const std::vector< IntVar * > &var, int64 value, VarArrayConstantExpressionType type)=0
virtual bool InitPosition() const
Returns true if operator needs to restart its initial position at each call to Start()
Definition: constraint_solveri.h:1388
void SetForwardSequence(const std::vector< int > &forward_sequence)
A BaseObject is the root of all reversibly allocated objects.
Definition: constraint_solver.h:3084
bool IsCardinalityOne() const
Does it contains only one bit set?
virtual IntExpr * FindVarConstantConstantExpression(IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type) const =0
Var Constant Constant Expressions.
const int number_of_nexts_
Definition: constraint_solveri.h:1394
The class IntExpr is the base of all integer expressions in constraint programming.
Definition: constraint_solver.h:3768
VarArrayExpressionType
Definition: constraint_solveri.h:1898
int64 GetSynchronizedObjectiveValue() const override
Objective value from last time Synchronize() was called.
Definition: constraint_solveri.h:1539
virtual IntExpr * FindVarConstantArrayExpression(IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type) const =0
Var Constant Array Expressions.
A reversible switch that can switch once from false to true.
Definition: constraint_solveri.h:396
A search monitor is a simple set of callbacks to monitor all search events.
Definition: constraint_solver.h:3567
void SetIntegerExpressionArgument(const std::string &arg_name, IntExpr *const expr)
bool IsPathStart(int64 node_index) const
Definition: constraint_solveri.h:1450
virtual void SetNextBaseToIncrement(int64 base_index)
Set the next base to increment on next iteration.
Definition: constraint_solveri.h:1345
~PathWithPreviousNodesOperator() override
Definition: constraint_solveri.h:1448
~ArrayWithOffset() override
Definition: constraint_solveri.h:2178
virtual IntExpr * FindExprExpression(IntExpr *const expr, ExprExpressionType type) const =0
Expr Expressions.
virtual void RemoveValues(IntVar *const var, const std::vector< int64 > &values)=0
void WhenDomain(Demon *d) override
This method attaches a demon that will watch any domain modification of the domain of the variable.
Definition: constraint_solveri.h:1707
int64 GetFirstOne() const
Gets the index of the first bit set starting from 0.
~CallMethod2() override
Definition: constraint_solveri.h:590
int Size() const
Definition: constraint_solveri.h:847
IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)
std::string DebugString() const override
Definition: constraint_solveri.h:521
bool IsVarSynced(int index) const
Definition: constraint_solveri.h:1579
void SynchronizeOnAssignment(const Assignment *assignment)
void VisitIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &arguments) override
virtual bool HasFragments() const
Definition: constraint_solveri.h:815
IntVar * IsLessOrEqual(int64 constant) override
The class IntVar is a subset of IntExpr.
Definition: constraint_solver.h:3929
int64 Value(int index) const
Definition: constraint_solveri.h:1575
--— RevPartialSequence --—
Definition: constraint_solveri.h:2401
A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
Definition: constraint_solveri.h:1736
IntVarIterator * MakeHoleIterator(bool reversible) const override
Creates a hole iterator.
int64 GetFirstBit(int row, int start) const
Returns the first bit in the row 'row' which position is >= 'start'.
~BooleanVar() override
Definition: constraint_solveri.h:1691
std::string DebugString() const override
Definition: constraint_solveri.h:1457
void Switch(Solver *const solver)
Definition: constraint_solveri.h:402
void PushIfNotTop(Solver *const s, T val)
Pushes the var on top if is not a duplicate of the current top object.
Definition: constraint_solveri.h:190
int64 GetAcceptedObjectiveValue() const override
Objective value from the last time Accept() was called and returned true.
Definition: constraint_solveri.h:1542
virtual void EndNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
Definition: constraint_solver.h:92
virtual void InsertVarConstantConstraint(Constraint *const ct, IntVar *const var, int64 value, VarConstantConstraintType type)=0
void PopArgumentHolder()
bool Contains(const V *const var) const
Definition: constraint_solver.h:4815
bool Accept(const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max) override
Returns true iff all filters return true, and the sum of their accepted objectives is between objecti...
The class Iterator has two direct subclasses.
Definition: constraint_solver.h:3846
virtual void SetDurationMax(IntervalVar *const var, int64 new_max)=0
SequenceVarLocalSearchOperator()
Definition: constraint_solveri.h:1102
void RankLast(Solver *const solver, int elt)
Definition: constraint_solveri.h:2449
virtual ~ModelCache()
ArrayWithOffset(int64 index_min, int64 index_max)
Definition: constraint_solveri.h:2171
bool AreAllNull(const std::vector< T > &values)
Definition: constraint_solveri.h:2593
virtual void InsertVarArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &vars, VarArrayExpressionType type)=0
void SetSequenceArgument(const std::string &arg_name, SequenceVar *const var)
bool ApplyChanges(Assignment *delta, Assignment *deltadelta) const
Definition: constraint_solveri.h:871
virtual IntExpr * FindVarArrayConstantExpression(const std::vector< IntVar * > &vars, int64 value, VarArrayConstantExpressionType type) const =0
Var Array Constant Expressions.
const bool ignore_path_vars_
Definition: constraint_solveri.h:1395
virtual IntExpr * FindExprConstantExpression(IntExpr *const expr, int64 value, ExprConstantExpressionType type) const =0
Expr Constant Expressions.
Solver * solver() const
Definition: constraint_solver.h:3640
void Activate(int64 index)
Definition: constraint_solveri.h:863
void SetSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &vars)
const std::vector< int > & OldSequence(int64 index) const
Definition: constraint_solveri.h:1112
virtual bool IsIncremental() const
Definition: constraint_solveri.h:846
Demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:550
virtual int64 ModifyValue(int64 index, int64 value)=0
PropagationMonitor(Solver *const solver)
bool AreAllPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2618
int64 MaxVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2704
const Val & Value(int64 index) const
Returns the value in the current assignment of the variable of given index.
Definition: constraint_solveri.h:850
virtual void RegisterDemon(Demon *const demon)=0
Demon * MakeDelayedConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:695
const Val & OldValue(int64 index) const
Definition: constraint_solveri.h:857
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:519
void Insert(Solver *const solver, const T &elt)
Definition: constraint_solveri.h:2339
void SetIntegerArgument(const std::string &arg_name, int64 value)
Setters.
SequenceVarLocalSearchHandler()
Definition: constraint_solveri.h:1064
This class represents a reversible bitset.
Definition: constraint_solveri.h:435
A Decision represents a choice point in the search tree.
Definition: constraint_solver.h:3160
Demon * MakeDelayedConstraintDemon2(Solver *const s, T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:775
T operator *() const
Definition: constraint_solveri.h:161
void AppendToFragment(int index)
void SetMax(int64 m) override
Base operator class for operators manipulating IntVars.
Definition: constraint_solveri.h:951
T RemovedElement(int i) const
Definition: constraint_solveri.h:2333
Interval variables are often used in scheduling.
Definition: constraint_solver.h:4285
int Size() const
Definition: constraint_solveri.h:1573
virtual void EndAcceptNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
Demon * MakeConstraintDemon2(Solver *const s, T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:612
virtual void Synchronize(const Assignment *assignment, const Assignment *delta)=0
Synchronizes the filter with the current solution, delta being the difference with the solution passe...
bool Intersects(const std::vector< uint64 > &mask, int *support_index)
This method returns true iff the mask and the active bitset have a non null intersection.
Definition: constraint_solveri.h:1907
virtual void SetEndMin(IntervalVar *const var, int64 new_min)=0
virtual bool NextFragment()=0
bool AreAllBoundTo(const std::vector< IntVar * > &vars, int64 value)
Returns true if all variables are assigned to 'value'.
Definition: constraint_solveri.h:2695
bool IsRanked(int elt) const
Definition: constraint_solveri.h:2455
virtual void InsertVoidConstraint(Constraint *const ct, VoidConstraintType type)=0
void PushArgumentHolder()
void Install() override
Install itself on the solver.
virtual void BeginFiltering(const LocalSearchFilter *filter)=0
int FragmentSize() const
Definition: constraint_solveri.h:1831
int64 PosIntDivDown(int64 e, int64 v)
Definition: constraint_solveri.h:2742
void AddIntegerVariableGreaterOrEqualValueClause(IntVar *const var, int64 value)
void Deactivate(int64 index)
Definition: constraint_solveri.h:867
void Insert(const K &key, const V &value)
Inserts (key, value) in the multi-map.
Definition: constraint_solveri.h:331
bool MakeOneNeighbor() override
This method should not be overridden. Override NextFragment() instead.
std::string DebugString() const
Definition: constraint_solveri.h:2461
bool Activated(int64 index) const
Definition: constraint_solveri.h:862
ExprExprExpressionType
Definition: constraint_solveri.h:1851
RevIntSet(int capacity, int *shared_positions, int shared_positions_size)
Capacity is the fixed size of the set (it cannot grow).
Definition: constraint_solveri.h:2306
Definition: constraint_solveri.h:1894
Definition: constraint_solveri.h:1867
void ResetPosition()
Reset the position of the operator to its position when Start() was last called; this can be used to ...
Definition: constraint_solveri.h:1392
This class represents a reversible bitset.
Definition: constraint_solveri.h:2515
void ApplyDecision(Decision *const decision) override
Before applying the decision.
virtual void RemoveInterval(IntVar *const var, int64 imin, int64 imax)=0
void RevInsert(Solver *const solver, int64 index, T value)
Definition: constraint_solveri.h:2229
This is the base class for building an Lns operator.
Definition: constraint_solveri.h:1208
virtual void BeginAcceptNeighbor(const LocalSearchOperator *op)=0
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
Definition: constraint_solveri.h:679
T * RevAlloc(T *object)
Registers the given object as being reversible.
Definition: constraint_solver.h:774
~SymmetryBreaker() override
Definition: constraint_solveri.h:1740
void Start(const Assignment *assignment) override
This method should not be overridden.
Definition: constraint_solveri.h:833
std::string DebugString() const override
Definition: constraint_solveri.h:717
uint64 Size() const override
This method returns the number of values in the domain of the variable.
Solver * solver() const
Definition: constraint_solveri.h:1890
void OnAddVars()
Definition: constraint_solveri.h:989
virtual void StartProcessingIntegerVariable(IntVar *const var)=0
int64 Cardinality() const
Returns the number of bits set to one.
bool AtSolution() override
This method is called when a valid solution is found.
The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...
Definition: constraint_solver.h:4706
bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2608
Demon * MakeConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:573
void Clear()
void VisitIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values) override
VarConstantConstantExpressionType
Definition: constraint_solveri.h:1883
An Assignment is a variable -> domains mapping, used to report solutions to the user.
Definition: constraint_solver.h:4929
virtual void BeginConstraintInitialPropagation(Constraint *const constraint)=0
Propagation events.
The base class for all local search operators.
Definition: constraint_solveri.h:805
void SetRange(int64 mi, int64 ma) override
This method sets both the min and the max of the expression.
int64 FindIntegerArgumentWithDefault(const std::string &arg_name, int64 def) const
Getters.
int NumLastRanked() const
Definition: constraint_solveri.h:2431
Reversible Immutable MultiMap class.
Definition: constraint_solveri.h:288
void RevertChanges(bool incremental)
Definition: constraint_solveri.h:895
BooleanVar(Solver *const s, const std::string &name="")
Definition: constraint_solveri.h:1688
~ModelParser() override
ChangeValue(const std::vector< IntVar * > &vars)
Demon * MakeConstraintDemon3(Solver *const s, T *const ct, void(T::*method)(P, Q, R), const std::string &name, P param1, Q param2, R param3)
Definition: constraint_solveri.h:655
~PathOperator() override
Definition: constraint_solveri.h:1280
std::string DebugString() const override
Definition: constraint_solveri.h:683
virtual bool RestartAtPathStartOnSynchronize()
When the operator is being synchronized with a new solution (when Start() is called),...
Definition: constraint_solveri.h:1328
LocalSearchOperator * MakeLocalSearchOperator(Solver *solver, const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, std::function< int(int64)> start_empty_path_class)
Operator Factories.
virtual void SetPerformed(IntervalVar *const var, bool value)=0
Iterator(const SimpleRevFIFO< T > *l)
Definition: constraint_solveri.h:158
int64 FindIntegerArgumentOrDie(const std::string &arg_name) const
RevPartialSequence(int size)
Definition: constraint_solveri.h:2415
bool IsIncremental() const override
Definition: constraint_solveri.h:1538
void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
Definition: constraint_solveri.h:2724
bool IsIncreasing(const std::vector< T > &values)
Definition: constraint_solveri.h:2648