C++ Reference
C++ Reference: Routing
bool AreAllPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2879
int BaseAlternative(int i) const
Returns the alternative for the ith base node.
Definition: constraint_solveri.h:1384
@ EXPR_EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2123
bool ContainsKey(const K &key) const
Returns true if the multi-map contains at least one instance of 'key'.
Definition: constraint_solveri.h:304
virtual void BeginAcceptNeighbor(const LocalSearchOperator *op)=0
int64 MinVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2975
void Run(Solver *const s) override
Definition: constraint_solveri.h:634
void SetInverseValue(int64 index, int64 value)
Definition: constraint_solveri.h:1084
void Insert(const K &key, const V &value)
Inserts (key, value) in the multi-map.
Definition: constraint_solveri.h:332
bool IsVarSynced(int index) const
Definition: constraint_solveri.h:1840
const std::vector< std::pair< int, int > > & ChangedArcs() const
Definition: constraint_solveri.h:3096
void AppendToFragment(int index)
virtual void SetEndRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
IntVarIterator * MakeHoleIterator(bool reversible) const override
void SetIntegerExpressionArgument(const std::string &arg_name, IntExpr *const expr)
friend class IntVarLocalSearchHandler
Definition: constraint_solveri.h:1065
int NumFirstRanked() const
Definition: constraint_solveri.h:2690
IntVarLocalSearchHandler(IntVarLocalSearchOperator *op)
Definition: constraint_solveri.h:959
BooleanVar(Solver *const s, const std::string &name="")
Definition: constraint_solveri.h:1949
std::string DebugString() const override
Definition: constraint_solveri.h:597
virtual void OutputLine(const std::string &line)
CallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:515
Bitset64 activated_
Definition: constraint_solveri.h:943
virtual void RankNotFirst(SequenceVar *const var, int index)=0
Demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:551
int64 Next(int64 node) const
Returns the node after node in the current delta.
Definition: constraint_solveri.h:1352
int64 bit_size() const
Returns the number of bits given in the constructor of the bitset.
Definition: constraint_solveri.h:2812
bool AreAllBooleans(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2938
@ VOID_CONSTRAINT_MAX
Definition: constraint_solveri.h:2079
int64 Cardinality(int row) const
Returns the number of bits set to one in the 'row' row.
virtual void SetDurationMin(IntervalVar *const var, int64 new_min)=0
int NumLastRanked() const
Definition: constraint_solveri.h:2692
bool IsSet(int64 row, int64 column) const
Returns whether the 'column' bit in the 'row' row is set.
Definition: constraint_solveri.h:481
int64 FindIntegerArgumentWithDefault(const std::string &arg_name, int64 def) const
Getters.
void Run(Solver *const s) override
Definition: constraint_solveri.h:593
std::string DebugString() const override
Definition: constraint_solveri.h:718
Demon proxy to a method on the constraint with three arguments.
Definition: constraint_solveri.h:621
int64 GetSynchronizedObjectiveValue() const
Definition: constraint_solveri.h:1797
IntVar * IsDifferent(int64 constant) override
const bool ignore_path_vars_
Definition: constraint_solveri.h:1567
ChainRange Chains(int path) const
void EndInitialPropagation() override
void SetValue(int64 index, T value)
Definition: constraint_solveri.h:2447
IntVarLocalSearchOperator()
Definition: constraint_solveri.h:1036
bool IsIncreasingContiguous(const std::vector< T > &values)
Definition: constraint_solveri.h:2899
std::string DebugString() const override
Definition: constraint_solveri.h:638
VarConstantConstraintType
Definition: constraint_solveri.h:2082
bool ValueFromAssignment(const Assignment &assignment, SequenceVar *var, int64 index, std::vector< int > *value)
Definition: constraint_solveri.h:1218
FilterEventType event_type
Definition: constraint_solveri.h:1773
int64 StartNode(int i) const
Returns the start node of the ith base node.
Definition: constraint_solveri.h:1408
virtual Constraint * FindExprExprConstraint(IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type) const =0
Expr Expr Constraints.
virtual void BeginNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
SequenceVarLocalSearchHandler(SequenceVarLocalSearchOperator *op)
Definition: constraint_solveri.h:1130
std::vector< int64 > start_to_path_
Definition: constraint_solveri.h:1570
int VarType() const override
Definition: constraint_solveri.h:1974
int FragmentSize() const
ExprExpressionType
Definition: constraint_solveri.h:2105
virtual void RankSequence(SequenceVar *const var, const std::vector< int > &rank_first, const std::vector< int > &rank_last, const std::vector< int > &unperformed)=0
void AddIntegerVariableLessOrEqualValueClause(IntVar *const var, int64 value)
ArgumentHolder * Top() const
virtual void RankLast(SequenceVar *const var, int index)=0
This class represents a small reversible bitset (size <= 64).
Definition: constraint_solveri.h:411
This is the base class for building an Lns operator.
Definition: constraint_solveri.h:1272
void Commit()
virtual int64 GetSynchronizedObjectiveValue() const
Objective value from last time Synchronize() was called.
Definition: constraint_solveri.h:1757
virtual void BeginMakeNextNeighbor(const LocalSearchOperator *op)=0
const std::vector< int > & ChangedPaths() const
Definition: constraint_solveri.h:3101
The base class of all search logs that periodically outputs information when the search is running.
Definition: constraint_solveri.h:2026
Low-priority demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:740
~BooleanVar() override
Definition: constraint_solveri.h:1952
@ VAR_ARRAY_CONSTANT_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2156
virtual void SetDurationRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
bool HasIntegerVariableArrayArgument(const std::string &arg_name) const
SequenceVarLocalSearchOperator(const std::vector< SequenceVar * > &vars)
Definition: constraint_solveri.h:1166
virtual void InsertVarArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &vars, VarArrayExpressionType type)=0
virtual void StartProcessingIntegerVariable(IntVar *const var)=0
void VisitIntegerVariable(const IntVar *const variable, IntExpr *const delegate) override
int64 GetFirstOne() const
Gets the index of the first bit set starting from 0.
const IntTupleSet & FindIntegerMatrixArgumentOrDie(const std::string &arg_name) const
void SetIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
@ VOID_TRUE_CONSTRAINT
Definition: constraint_solveri.h:2078
void VisitSequenceArgument(const std::string &arg_name, SequenceVar *const argument) override
Visit sequence argument.
std::string DebugString() const
Definition: constraint_solveri.h:2722
IntVar * Var() override
RevPartialSequence(const std::vector< int > &items)
Definition: constraint_solveri.h:2664
void AddVars(const std::vector< IntVar * > &vars)
Add variables to "track" to the filter.
virtual void SetValue(IntVar *const var, int64 value)=0
@ EXPR_EXPR_IS_EQUAL
Definition: constraint_solveri.h:2121
void SetIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &vars)
int64 GetFirstBit(int row, int start) const
Returns the first bit in the row 'row' which position is >= 'start'.
const std::vector< int64 > & path_starts() const
Returns the vector of path start nodes.
Definition: constraint_solveri.h:1410
bool AreAllOnes(const std::vector< T > &values)
Definition: constraint_solveri.h:2849
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 ...
virtual void EndConstraintInitialPropagation(Constraint *const constraint)=0
DelayedCallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:742
void Run(Solver *const s) override
Definition: constraint_solveri.h:520
VarConstantConstantExpressionType
Definition: constraint_solveri.h:2144
const std::string & TypeName() const
Type of the argument.
Solver::DemonPriority priority() const override
Definition: constraint_solveri.h:680
~CallMethod0() override
Definition: constraint_solveri.h:518
bool SetMax(int64 new_max)
Definition: constraint_solveri.h:1692
~ModelParser() override
void Install() override
Install itself on the solver.
void WhenRange(Demon *d) override
Definition: constraint_solveri.h:1967
bool ApplyChanges(Assignment *delta, Assignment *deltadelta) const
Definition: constraint_solveri.h:872
std::string DebugString() const override
Definition: constraint_solveri.h:561
void Activate(int64 index)
Definition: constraint_solveri.h:864
bool MakeOneNeighbor() override
This method should not be overridden. Override NextFragment() instead.
const Val & Value(int64 index) const
Returns the value in the current assignment of the variable of given index.
Definition: constraint_solveri.h:851
virtual bool ConsiderAlternatives(int64 base_index) const
Indicates if alternatives should be considered when iterating over base nodes.
Definition: constraint_solveri.h:1447
virtual void SetMin(IntExpr *const expr, int64 new_min)=0
IntExpr modifiers.
int64 OldPrev(int64 node) const
Definition: constraint_solveri.h:1454
~CallMethod3() override
Definition: constraint_solveri.h:632
int64 BaseAlternativeNode(int i) const
Returns the alternative node for the ith base node.
Definition: constraint_solveri.h:1386
virtual void OnStart()
Called by Start() after synchronizing the operator with the current assignment.
Definition: constraint_solveri.h:928
~PathOperator() override
Definition: constraint_solveri.h:1344
void OnAddVars()
Definition: constraint_solveri.h:1241
const Val & OldValue(int64 index) const
Definition: constraint_solveri.h:858
LocalSearchFilterManager(std::vector< LocalSearchFilter * > filters)
virtual void InsertVarConstantConstantConstraint(Constraint *const ct, IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type)=0
~RevImmutableMultiMap()
Definition: constraint_solveri.h:299
void VisitIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &arguments) override
bool StateIsValid() const
Definition: constraint_solveri.h:1657
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...
int AddAlternativeSet(const std::vector< int64 > &alternative_set)
Handling node alternatives.
Definition: constraint_solveri.h:1513
--— RevPartialSequence --—
Definition: constraint_solveri.h:2662
virtual void InsertExprExprConstraint(Constraint *const ct, IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type)=0
This class represents a reversible bitset.
Definition: constraint_solveri.h:2776
@ VAR_CONSTANT_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2092
virtual void Clear()=0
~VarLocalSearchOperator() override
Definition: constraint_solveri.h:830
bool AreAllBoundTo(const std::vector< IntVar * > &vars, int64 value)
Returns true if all variables are assigned to 'value'.
Definition: constraint_solveri.h:2956
virtual Constraint * FindVarConstantConstraint(IntVar *const var, int64 value, VarConstantConstraintType type) const =0
Var Constant Constraints.
virtual void InsertExprExprConstantExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type)=0
int64 Cardinality() const
Returns the number of bits set to one.
~ArrayWithOffset() override
Definition: constraint_solveri.h:2439
CallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:583
void Run(Solver *const s) override
Definition: constraint_solveri.h:712
VarTypes
This enum is used internally to do dynamic typing on subclasses of integer variables.
Definition: constraint_solveri.h:123
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:613
T RemovedElement(int i) const
Definition: constraint_solveri.h:2594
bool cleared_
Definition: constraint_solveri.h:947
~SymmetryBreaker() override
Definition: constraint_solveri.h:2001
~RevGrowingArray()
Definition: constraint_solveri.h:2474
int next_base_to_increment_
Definition: constraint_solveri.h:1568
A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
Definition: constraint_solveri.h:1997
virtual void RemoveValue(IntVar *const var, int64 value)=0
virtual IntExpr * FindExprConstantExpression(IntExpr *const expr, int64 value, ExprConstantExpressionType type) const =0
Expr Constant Expressions.
@ VAR_CONSTANT_EQUALITY
Definition: constraint_solveri.h:2083
~DelayedCallMethod0() override
Definition: constraint_solveri.h:676
virtual void InitFragments()
virtual IntExpr * FindVarConstantArrayExpression(IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type) const =0
Var Constant Array Expressions.
Solver * solver() const
@ EXPR_CONSTANT_MAX
Definition: constraint_solveri.h:2135
Matrix version of the RevBitSet class.
Definition: constraint_solveri.h:471
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:1174
Demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:513
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
Definition: constraint_solveri.h:78
int64 InverseValue(int64 index) const
Definition: constraint_solveri.h:1078
bool SwapActiveAndInactive(int64 active, int64 inactive)
Replaces active by inactive in the current path, making active inactive.
void SetToOne(Solver *const solver, int64 row, int64 column)
Sets the 'column' bit in the 'row' row.
Bitset64 was_activated_
Definition: constraint_solveri.h:944
int64 PosIntDivUp(int64 e, int64 v)
Definition: constraint_solveri.h:2994
virtual IntExpr * FindExprExprExpression(IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type) const =0
Expr Expr Expressions.
@ EXPR_EXPR_IS_LESS
Definition: constraint_solveri.h:2119
bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2859
void Commit()
@ VAR_CONSTANT_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2146
virtual void InsertExprExpression(IntExpr *const expression, IntExpr *const expr, ExprExpressionType type)=0
@ EXPR_EXPR_CONSTRAINT_MAX
Definition: constraint_solveri.h:2102
bool AreAllNull(const std::vector< T > &values)
Definition: constraint_solveri.h:2854
virtual void Revert()
Cancels the changes made by the last Relax()/Accept() calls.
Definition: constraint_solveri.h:1754
@ kAccept
Definition: constraint_solveri.h:1770
virtual int64 GetAcceptedObjectiveValue() const
Objective value from the last time Accept() was called and returned true.
Definition: constraint_solveri.h:1760
bool Contains(int64 v) const override
SymmetryBreaker()
Definition: constraint_solveri.h:1999
const std::vector< IntVar * > & FindIntegerVariableArrayArgumentOrDie(const std::string &arg_name) const
virtual void EndNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
void ChangeNext(int node, int new_next)
Definition: constraint_solveri.h:3111
void Synchronize(const Assignment *assignment, const Assignment *delta) override
This method should not be overridden.
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.
virtual void SetMax(IntVar *const var, int64 new_max)=0
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:1437
IntVar * IsGreaterOrEqual(int64 constant) override
SequenceVarLocalSearchHandler()
Definition: constraint_solveri.h:1127
virtual void RegisterDemon(Demon *const demon)=0
@ EXPR_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2142
static const int kUnboundBooleanVarValue
Definition: constraint_solveri.h:1947
This is the base class for all expressions that are not variables.
Definition: constraint_solveri.h:109
virtual void SetStartMax(IntervalVar *const var, int64 new_max)=0
void AcceptUncheckedNeighbor() override
This class represents a reversible bitset.
Definition: constraint_solveri.h:436
bool MakeOneNeighbor() override
This method should not be overridden. Override MakeNeighbor() instead.
void VisitSequenceVariable(const SequenceVar *const variable) override
~PropagationMonitor() override
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:1508
Solver::DemonPriority priority() const override
Definition: constraint_solveri.h:756
bool Accept(LocalSearchMonitor *const monitor, const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max)
Returns true iff all filters return true, and the sum of their accepted objectives is between objecti...
void BeginFail() override
Low-priority demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:704
void WhenBound(Demon *d) override
virtual void InsertVarConstantConstantExpression(IntExpr *const expression, IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type)=0
ExprExprExpressionType
Definition: constraint_solveri.h:2112
std::string DebugString() const override
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...
void RemoveInterval(int64 l, int64 u) override
bool IsCardinalityOne() const
Does it contains only one bit set?
SparseBitset delta_changes_
Definition: constraint_solveri.h:946
void Switch(Solver *const solver)
Definition: constraint_solveri.h:403
virtual void EndFilterNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
virtual void RankNotLast(SequenceVar *const var, int index)=0
VarLocalSearchOperator()
Definition: constraint_solveri.h:824
virtual void SetMax(IntExpr *const expr, int64 new_max)=0
void BeginVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
~DelayedCallMethod2() override
Definition: constraint_solveri.h:750
const RevIntSet< int > & active_words() const
Returns the set of active word indices.
Definition: constraint_solveri.h:2816
void SetIntervalArgument(const std::string &arg_name, IntervalVar *const var)
~UnsortedNullableRevBitset()
Definition: constraint_solveri.h:2781
void AddToAssignment(IntVar *var, int64 value, bool active, std::vector< int > *assignment_indices, int64 index, Assignment *assignment) const
Definition: constraint_solveri.h:960
bool HasFragments() const override
Definition: constraint_solveri.h:1280
void EndVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
void Maintain()
RevPartialSequence(int size)
Definition: constraint_solveri.h:2676
virtual void InsertExprExprExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type)=0
@ VAR_ARRAY_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2168
ExprConstantExpressionType
Definition: constraint_solveri.h:2131
Local Search Filters are used for fast neighbor pruning.
Definition: constraint_solveri.h:1725
virtual void SetRange(IntVar *const var, int64 new_min, int64 new_max)=0
int Size() const
Definition: constraint_solveri.h:848
void Synchronize(const Assignment *assignment, const Assignment *delta)
Synchronizes all filters to assignment.
std::string BaseName() const override
Definition: constraint_solveri.h:1982
VarArrayConstantArrayExpressionType
Definition: constraint_solveri.h:2154
void VisitIntegerVariable(const IntVar *const variable, const std::string &operation, int64 value, IntVar *const delegate) override
Demon * MakeDelayedConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:696
void SynchronizeOnAssignment(const Assignment *assignment)
void CutChains()
void ExitSearch() override
bool Activated(int64 index) const
Definition: constraint_solveri.h:863
bool MakeOneNeighbor() override
This method should not be overridden. Override ModifyValue() instead.
void AddVars(const std::vector< V * > &vars)
Definition: constraint_solveri.h:909
virtual bool SkipUnchanged(int index) const
Definition: constraint_solveri.h:857
bool SetMin(int64 new_min)
Definition: constraint_solveri.h:1689
std::vector< Val > values_
Definition: constraint_solveri.h:939
void VisitIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values) override
@ EXPR_EXPR_LESS
Definition: constraint_solveri.h:2099
bool IsArrayConstant(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2829
bool Check() const
LocalSearchOperator()
Definition: constraint_solveri.h:808
int PathClass(int i) const
Returns the class of the path of the ith base node.
Definition: constraint_solveri.h:1412
Iterator & operator++()
Definition: constraint_solveri.h:3266
bool IsIncreasing(const std::vector< T > &values)
Definition: constraint_solveri.h:2909
This class represent a reversible FIFO structure.
Definition: constraint_solveri.h:145
int operator*() const
Definition: constraint_solveri.h:3321
virtual void Commit(const Assignment *delta, const Assignment *deltadelta)
Dual of Relax(), lets the filter know that the delta was accepted.
Definition: constraint_solveri.h:1731
@ EXPR_CONSTANT_IS_NOT_EQUAL
Definition: constraint_solveri.h:2139
void SetToOne(Solver *const solver, int64 pos)
Sets the 'pos' bit.
void SetToZero(Solver *const solver, int64 pos)
Erases the 'pos' bit.
Iterator end() const
Definition: constraint_solveri.h:3295
~LocalSearchOperator() override
Definition: constraint_solveri.h:809
bool Empty() const
This method returns true if the active bitset is null.
Definition: constraint_solveri.h:2800
IntVarIterator * MakeDomainIterator(bool reversible) const override
~SequenceVarLocalSearchOperator() override
Definition: constraint_solveri.h:1171
void EndVisitModel(const std::string &solver_name) override
void SetIntegerArgument(const std::string &arg_name, int64 value)
Setters.
ExprExprConstantExpressionType
Definition: constraint_solveri.h:2126
void Insert(Solver *const solver, const T &elt)
Definition: constraint_solveri.h:2600
@ VOID_FALSE_CONSTRAINT
Definition: constraint_solveri.h:2077
int NumNodes() const
Definition: constraint_solveri.h:3250
@ EXPR_CONSTANT_DIFFERENCE
Definition: constraint_solveri.h:2132
~RevBitSet()
virtual void BeginConstraintInitialPropagation(Constraint *const constraint)=0
Propagation events.
void RemoveValue(int64 v) override
virtual void EndOperatorStart()=0
CallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:553
bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta) override
Redefines MakeNextNeighbor to export a simpler interface.
Argument Holder: useful when visiting a model.
Definition: constraint_solveri.h:2311
@ EXPR_CONSTANT_SUM
Definition: constraint_solveri.h:2137
void PopArgumentHolder()
int operator*() const
Definition: constraint_solveri.h:3233
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:319
@ EXPR_EXPR_DIFFERENCE
Definition: constraint_solveri.h:2113
VarLocalSearchOperator(Handler var_handler)
Definition: constraint_solveri.h:825
void SetSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &vars)
Base operator class for operators manipulating variables.
Definition: constraint_solveri.h:822
T At(int64 index) const
Definition: constraint_solveri.h:2480
@ EXPR_EXPR_IS_LESS_OR_EQUAL
Definition: constraint_solveri.h:2120
int64 GetActiveInAlternativeSet(int alternative_index) const
Returns the active node in the given alternative set.
Definition: constraint_solveri.h:1537
virtual IntExpr * FindExprExpression(IntExpr *const expr, ExprExpressionType type) const =0
Expr Expressions.
void RevInsert(Solver *const solver, int64 index, T value)
Definition: constraint_solveri.h:2490
virtual void BeginOperatorStart()=0
Local search operator events.
int64 Value(int index) const
Definition: constraint_solveri.h:1836
bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2869
Iterator begin() const
Definition: constraint_solveri.h:3294
PathState(int num_nodes, std::vector< int > path_start, std::vector< int > path_end)
virtual void SetEndMin(IntervalVar *const var, int64 new_min)=0
ModelCache(Solver *const solver)
virtual IntExpr * FindExprExprConstantExpression(IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type) const =0
Expr Expr Constant Expressions.
virtual void SetStartRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
std::string DebugString() const override
SequenceVarLocalSearchOperator()
Definition: constraint_solveri.h:1165
~DelayedCallMethod1() override
Definition: constraint_solveri.h:710
bool Bound() const override
Definition: constraint_solveri.h:1959
void RevertChanges(bool incremental)
Definition: constraint_solveri.h:896
virtual void InsertVarConstantConstraint(Constraint *const ct, IntVar *const var, int64 value, VarConstantConstraintType type)=0
RevBitSet(int64 size)
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:2945
void Remove(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2609
void SetRange(int64 mi, int64 ma) override
virtual IntVar * CastToVar()
LocalSearchMonitor(Solver *const solver)
std::vector< int64 > ToInt64Vector(const std::vector< int > &input)
Iterator end() const
Definition: constraint_solveri.h:3351
SimpleRevFIFO()
Definition: constraint_solveri.h:175
virtual int64 ModifyValue(int64 index, int64 value)=0
bool RevSubtract(Solver *const solver, const std::vector< uint64 > &mask)
This method subtracts the mask from the active bitset.
virtual void EndMakeNextNeighbor(const LocalSearchOperator *op, bool neighbor_found, const Assignment *delta, const Assignment *deltadelta)=0
~BaseIntExpr() override
Definition: constraint_solveri.h:112
VarLocalSearchOperator< SequenceVar, std::vector< int >, SequenceVarLocalSearchHandler > SequenceVarLocalSearchOperatorTemplate
Definition: constraint_solveri.h:1160
PathOperator(const std::vector< IntVar * > &next_vars, const std::vector< IntVar * > &path_vars, int number_of_base_nodes, bool skip_locally_optimal_paths, bool accept_path_end_base, std::function< int(int64)> start_empty_path_class)
Builds an instance of PathOperator from next and path variables.
void VisitIntervalVariable(const IntervalVar *const variable, const std::string &operation, int64 value, IntervalVar *const delegate) override
VarConstantConstantConstraintType
Definition: constraint_solveri.h:2090
virtual void Reset()
Definition: constraint_solveri.h:812
This iterator is not stable with respect to deletion.
Definition: constraint_solveri.h:156
virtual void SetEndMax(IntervalVar *const var, int64 new_max)=0
Demon * MakeConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:574
void AddIntegerVariableEqualValueClause(IntVar *const var, int64 value)
BaseIntExpr(Solver *const s)
Definition: constraint_solveri.h:111
void Run(Solver *const s) override
Definition: constraint_solveri.h:559
SimpleRevFIFO< Demon * > bound_demons_
Definition: constraint_solveri.h:1988
virtual bool RestartAtPathStartOnSynchronize()
When the operator is being synchronized with a new solution (when Start() is called),...
Definition: constraint_solveri.h:1425
void Init(Solver *const solver, const std::vector< uint64 > &mask)
This methods overwrites the active bitset with the mask.
virtual void SetStartMin(IntervalVar *const var, int64 new_min)=0
IntervalVar modifiers.
int64 GetFirstBit(int start) const
Gets the index of the first bit set starting from start.
bool CheckChainValidity(int64 before_chain, int64 chain_end, int64 exclude) const
Returns true if the chain is a valid path without cycles from before_chain to chain_end and does not ...
virtual void BeginFiltering(const LocalSearchFilter *filter)=0
friend class SymmetryManager
Definition: constraint_solveri.h:2009
int64 FindIntegerArgumentOrDie(const std::string &arg_name) const
Iterator & operator++()
Definition: constraint_solveri.h:3309
ModelParser()
NodeRange Nodes(int path) const
std::string DebugString() const override
Definition: constraint_solveri.h:522
virtual bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta)=0
void RankFirst(Solver *const solver, int elt)
Definition: constraint_solveri.h:2704
int64 OldPath(int64 node) const
Definition: constraint_solveri.h:1459
int64 Value() const override
Definition: constraint_solveri.h:1960
void BeginVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
int BaseSiblingAlternative(int i) const
Returns the alternative for the sibling of the ith base node.
Definition: constraint_solveri.h:1394
virtual void PushContext(const std::string &context)=0
static constexpr int kNoInserted
Definition: constraint_solveri.h:2552
void SetIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values)
virtual void RemoveValues(IntVar *const var, const std::vector< int64 > &values)=0
@ EXPR_CONSTANT_PROD
Definition: constraint_solveri.h:2134
void Revert()
Reversible Immutable MultiMap class.
Definition: constraint_solveri.h:289
@ VAR_CONSTANT_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2084
virtual void EndFiltering(const LocalSearchFilter *filter, bool reject)=0
SmallRevBitSet(int64 size)
int64 Cardinality() const
Returns the number of bits set to one.
Handler var_handler_
Definition: constraint_solveri.h:948
LocalSearchFilterManager(std::vector< FilterEvent > filter_events)
virtual IntExpr * FindVarArrayConstantExpression(const std::vector< IntVar * > &vars, int64 value, VarArrayConstantExpressionType type) const =0
Var Array Constant Expressions.
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
virtual bool MakeNeighbor()=0
virtual void EndDemonRun(Demon *const demon)=0
void VisitIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values) override
virtual Constraint * FindVarConstantConstantConstraint(IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type) const =0
Var Constant Constant Constraints.
void MarkChange(int64 index)
OnStart() should really be protected, but then SWIG doesn't see it.
Definition: constraint_solveri.h:933
@ EXPR_CONSTANT_IS_EQUAL
Definition: constraint_solveri.h:2138
IntVar * IsLessOrEqual(int64 constant) override
@ VAR_CONSTANT_CONSTANT_BETWEEN
Definition: constraint_solveri.h:2091
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3274
void OutputDecision()
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3322
uint64 Size() const override
void SetToZero(Solver *const solver, int64 index)
Erases the 'index' bit.
virtual T Evaluate(int64 index) const
Definition: constraint_solveri.h:2441
VarConstantArrayExpressionType
Definition: constraint_solveri.h:2149
@ VAR_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2087
int64 Prev(int64 node) const
Returns the node before node in the current delta.
Definition: constraint_solveri.h:1358
@ EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2109
void BeginVisitModel(const std::string &solver_name) override
Header/footers.
void SetNext(int64 from, int64 to, int64 path)
Sets 'to' to be the node after 'from' on the given path.
Definition: constraint_solveri.h:1480
UnaryDimensionChecker(const PathState *path_state, std::vector< Interval > path_capacity, std::vector< int > path_class, std::vector< std::vector< Interval >> demand, std::vector< Interval > node_capacity)
virtual void SetValues(IntVar *const var, const std::vector< int64 > &values)=0
void VisitIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &arguments) override
RevImmutableMultiMap(Solver *const solver, int initial_size)
Definition: constraint_solveri.h:291
~ChangeValue() override
bool AreAllStrictlyNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2894
int num_items() const
Definition: constraint_solveri.h:301
std::string DebugString() const override
Definition: constraint_solveri.h:760
Iterator & operator++()
Definition: constraint_solveri.h:3229
void AddPairAlternativeSets(const std::vector< std::pair< std::vector< int64 >, std::vector< int64 >>> &pair_alternative_sets)
Adds all sets of node alternatives of a vector of alternative pairs.
Definition: constraint_solveri.h:1526
virtual IntExpr * FindVarConstantConstantExpression(IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type) const =0
Var Constant Constant Expressions.
FilterEventType
Definition: constraint_solveri.h:1770
virtual void SetMin(IntVar *const var, int64 new_min)=0
IntVar modifiers.
void VisitIntegerExpressionArgument(const std::string &arg_name, IntExpr *const argument) override
Variables.
~IntVarLocalSearchFilter() override
void OnRevertChanges(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1236
int64 min
Definition: constraint_solveri.h:3376
@ EXPR_EXPR_EQUALITY
Definition: constraint_solveri.h:2096
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:1431
bool MakeActive(int64 node, int64 destination)
Insert the inactive node after destination.
bool AreAllStrictlyPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2889
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3234
T operator*() const
Definition: constraint_solveri.h:161
void SetMax(int64 m) override
NodeRange(const ChainBounds *begin_chain, const ChainBounds *end_chain, const CommittedNode *first_node)
Definition: constraint_solveri.h:3343
void AddIntegerVariableGreaterOrEqualValueClause(IntVar *const var, int64 value)
virtual void InsertVarArrayConstantExpression(IntExpr *const expression, const std::vector< IntVar * > &var, int64 value, VarArrayConstantExpressionType type)=0
Low-priority demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:671
LocalSearchFilter * filter
Definition: constraint_solveri.h:1772
virtual void SetRange(IntExpr *const expr, int64 new_min, int64 new_max)=0
int GetSiblingAlternativeIndex(int node) const
Returns the index of the alternative set of the sibling of node.
Definition: constraint_solveri.h:1547
int64 max
Definition: constraint_solveri.h:3377
IntVarLocalSearchHandler()
Definition: constraint_solveri.h:956
void Reset() override
Iterator begin() const
Definition: constraint_solveri.h:3348
SparseBitset changes_
Definition: constraint_solveri.h:945
void Run(Solver *const s) override
Definition: constraint_solveri.h:678
bool IsSet(int64 index) const
Returns whether the 'index' bit is set.
int64 BaseSiblingAlternativeNode(int i) const
Returns the alternative node for the sibling of the ith base node.
Definition: constraint_solveri.h:1398
bool AreAllBound(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2929
BaseLns(const std::vector< IntVar * > &vars)
bool IsInverseValue(int64 index) const
Definition: constraint_solveri.h:1073
void EndVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
virtual void InsertVarArrayConstantArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &var, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type)=0
void SetBackwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1181
IntVarLocalSearchOperator(const std::vector< IntVar * > &vars, bool keep_inverse_values=false)
Definition: constraint_solveri.h:1040
~BaseLns() override
Filter manager: when a move is made, filters are executed to decide whether the solution is feasible ...
Definition: constraint_solveri.h:1766
VarArrayExpressionType
Definition: constraint_solveri.h:2159
int64 GetActiveAlternativeSibling(int node) const
Returns the active node in the alternative set of the sibling of the given node.
Definition: constraint_solveri.h:1554
SequenceVarLocalSearchHandler(const SequenceVarLocalSearchHandler &other)
Definition: constraint_solveri.h:1128
ArrayWithOffset(int64 index_min, int64 index_max)
Definition: constraint_solveri.h:2432
bool IsArrayInRange(const std::vector< IntVar * > &vars, T range_min, T range_max)
Definition: constraint_solveri.h:2919
void RankLast(Solver *const solver, int elt)
Definition: constraint_solveri.h:2710
bool ValueFromAssignment(const Assignment &assignment, IntVar *var, int64 index, int64 *value)
Definition: constraint_solveri.h:1098
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.
std::vector< V * > vars_
Definition: constraint_solveri.h:938
void SetSequenceArgument(const std::string &arg_name, SequenceVar *const var)
IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)
Solver::DemonPriority priority() const override
Definition: constraint_solveri.h:714
bool IsCardinalityZero(int row) const
Is bitset of row 'row' null?
std::vector< int > assignment_indices_
Definition: constraint_solveri.h:942
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:656
void Revert()
void VisitIntervalArgument(const std::string &arg_name, IntervalVar *const argument) override
Visit interval argument.
void Restore(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2614
virtual void RankFirst(SequenceVar *const var, int index)=0
SequenceVar modifiers.
void SetForwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1178
~CallMethod2() override
Definition: constraint_solveri.h:591
void SetValue(int64 index, const Val &value)
Definition: constraint_solveri.h:859
Specialization of LocalSearchOperator built from an array of IntVars which specifies the scope of the...
Definition: constraint_solveri.h:1034
std::string DebugString() const override
Definition: constraint_solveri.h:2453
void Deactivate(int64 index)
Definition: constraint_solveri.h:868
const std::vector< int > & OldSequence(int64 index) const
Definition: constraint_solveri.h:1175
~SearchLog() override
Base class of the local search operators dedicated to path modifications (a path is a set of nodes li...
Definition: constraint_solveri.h:1325
void OnAddVars()
Definition: constraint_solveri.h:986
int Size() const
Definition: constraint_solveri.h:1834
ChainRange(const ChainBounds *const begin_chain, const ChainBounds *const end_chain, const CommittedNode *const first_node)
Definition: constraint_solveri.h:3289
void SetToOne(Solver *const solver, int64 index)
Sets the 'index' bit.
void VisitIntegerArgument(const std::string &arg_name, int64 value) override
Integer arguments.
virtual bool HoldsDelta() const
Definition: constraint_solveri.h:817
void SetTypeName(const std::string &type_name)
@ EXPR_EXPR_PROD
Definition: constraint_solveri.h:2114
@ VAR_CONSTANT_NON_EQUALITY
Definition: constraint_solveri.h:2086
bool IsInactive(int64 node) const
Returns true if node is inactive.
Definition: constraint_solveri.h:1498
virtual void SetNextBaseToIncrement(int64 base_index)
Set the next base to increment on next iteration.
Definition: constraint_solveri.h:1442
void operator++()
Definition: constraint_solveri.h:162
virtual bool MakeOneNeighbor()
Creates a new neighbor.
@ EXPR_EXPR_IS_NOT_EQUAL
Definition: constraint_solveri.h:2122
void RefuteDecision(Decision *const decision) override
Iterator begin() const
Definition: constraint_solveri.h:3253
IntVar * IsEqual(int64 constant) override
DelayedCallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:673
This is a special class to represent a 'residual' set of T.
Definition: constraint_solveri.h:2550
@ VAR_CONSTANT_CONSTANT_SEMI_CONTINUOUS
Definition: constraint_solveri.h:2145
const int number_of_nexts_
Definition: constraint_solveri.h:1566
Iterator(const SimpleRevFIFO< T > *l)
Definition: constraint_solveri.h:158
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:1192
A reversible switch that can switch once from false to true.
Definition: constraint_solveri.h:397
virtual ~ModelCache()
~RevBitMatrix()
virtual void EndProcessingIntegerVariable(IntVar *const var)=0
virtual void RemoveInterval(IntVar *const var, int64 imin, int64 imax)=0
bool IsRanked(int elt) const
Definition: constraint_solveri.h:2716
SimpleRevFIFO< Demon * > delayed_bound_demons_
Definition: constraint_solveri.h:1989
const std::vector< int64 > & FindIntegerArrayArgumentOrDie(const std::string &arg_name) const
virtual void Relax(const Assignment *delta, const Assignment *deltadelta)
Lets the filter know what delta and deltadelta will be passed in the next Accept().
Definition: constraint_solveri.h:1729
@ EXPR_EXPR_LESS_OR_EQUAL
Definition: constraint_solveri.h:2100
virtual void SetPerformed(IntervalVar *const var, bool value)=0
VoidConstraintType
Definition: constraint_solveri.h:2076
std::string DebugString() const override
Definition: constraint_solveri.h:1858
Demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:581
int64 OldInverseValue(int64 index) const
Definition: constraint_solveri.h:1080
std::string DebugString() const override
Definition: constraint_solveri.h:1923
ExprExprConstraintType
Definition: constraint_solveri.h:2095
bool AtSolution() override
virtual void InsertVarConstantArrayExpression(IntExpr *const expression, IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type)=0
IntExpr * FindIntegerExpressionArgumentOrDie(const std::string &arg_name) const
Defines operators which change the value of variables; each neighbor corresponds to one modified vari...
Definition: constraint_solveri.h:1296
bool IsPathEnd(int64 node) const
Returns true if node is the last node on the path; defined by the fact that node is outside the range...
Definition: constraint_solveri.h:1492
virtual void RestoreValue()=0
VarArrayConstantExpressionType
Definition: constraint_solveri.h:2166
void SetIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &vars)
The base class for all local search operators.
Definition: constraint_solveri.h:806
virtual void SetDurationMax(IntervalVar *const var, int64 new_max)=0
virtual void OnNodeInitialization()
Called by OnStart() after initializing node information.
Definition: constraint_solveri.h:1379
@ EXPR_EXPR_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2128
int64 PosIntDivDown(int64 e, int64 v)
Definition: constraint_solveri.h:3003
@ VAR_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2163
std::vector< Val > old_values_
Definition: constraint_solveri.h:940
const_iterator begin() const
Definition: constraint_solveri.h:2623
virtual void BeginFilterNeighbor(const LocalSearchOperator *op)=0
bool RevAnd(Solver *const solver, const std::vector< uint64 > &mask)
This method ANDs the mask with the active bitset.
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:2567
virtual IntExpr * FindVarArrayExpression(const std::vector< IntVar * > &vars, VarArrayExpressionType type) const =0
Var Array Expressions.
virtual void InsertVoidConstraint(Constraint *const ct, VoidConstraintType type)=0
virtual void EndAcceptNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
@ EXPR_CONSTANT_DIVIDE
Definition: constraint_solveri.h:2133
Implements a complete cache for model elements: expressions and constraints.
Definition: constraint_solveri.h:2074
@ EXPR_CONSTANT_IS_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2140
virtual bool IsIncremental() const
Definition: constraint_solveri.h:1744
void BeginInitialPropagation() override
void SetMin(int64 m) override
virtual void InsertExprConstantExpression(IntExpr *const expression, IntExpr *const var, int64 value, ExprConstantExpressionType type)=0
const int & operator[](int index) const
Definition: constraint_solveri.h:2697
LocalSearchFilter * MakeUnaryDimensionFilter(Solver *solver, std::unique_ptr< UnaryDimensionChecker > checker)
virtual void Start(const Assignment *assignment)=0
SearchLog(Solver *const s, OptimizeVar *const obj, IntVar *const var, double scaling_factor, double offset, std::function< std::string()> display_callback, int period)
~LocalSearchMonitor() override
void SetToZero(Solver *const solver, int64 row, int64 column)
Erases the 'column' bit in the 'row' row.
virtual void PopContext()=0
bool IsPathStart(int64 node) const
Returns true if node is the first node on the path.
Definition: constraint_solveri.h:1495
~CallMethod1() override
Definition: constraint_solveri.h:557
virtual bool NextFragment()=0
void OnRevertChanges(int64 index, int64 value)
Definition: constraint_solveri.h:1115
Demon * MakeConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:533
void VisitSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &arguments) override
@ VAR_CONSTANT_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2151
~IntVarLocalSearchOperator() override
Definition: constraint_solveri.h:1055
int64 MaxVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2965
int64 BaseNode(int i) const
Returns the ith base node of the operator.
Definition: constraint_solveri.h:1382
std::vector< Val > prev_values_
Definition: constraint_solveri.h:941
void Push(Solver *const s, T val)
Definition: constraint_solveri.h:177
@ EXPR_EXPR_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2098
std::string DebugString() const override
Definition: constraint_solveri.h:684
void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
Definition: constraint_solveri.h:2985
RevBitMatrix(int64 rows, int64 columns)
@ EXPR_EXPR_GREATER
Definition: constraint_solveri.h:2097
void Commit()
This class is a reversible growing array.
Definition: constraint_solveri.h:2467
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:776
void EnterSearch() override
virtual bool IsIncremental() const
Definition: constraint_solveri.h:847
bool SkipUnchanged(int index) const override
virtual const LocalSearchOperator * Self() const
Definition: constraint_solveri.h:814
Chain(const CommittedNode *begin_node, const CommittedNode *end_node)
Definition: constraint_solveri.h:3247
IntVar * Var(int index) const
Definition: constraint_solveri.h:1835
IntVarLocalSearchHandler(const IntVarLocalSearchHandler &other)
Definition: constraint_solveri.h:957
int ActiveWordSize() const
This method returns the number of non null 64 bit words in the bitset representation.
Definition: constraint_solveri.h:2797
bool HasIntegerExpressionArgument(const std::string &arg_name) const
Checks if arguments exist.
@ EXPR_CONSTANT_MIN
Definition: constraint_solveri.h:2136
int64 GetAcceptedObjectiveValue() const
Definition: constraint_solveri.h:1798
DelayedCallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:706
@ EXPR_CONSTANT_IS_LESS_OR_EQUAL
Definition: constraint_solveri.h:2141
std::string DebugString() const override
Definition: constraint_solveri.h:1776
void Install() override
Install itself on the solver.
@ EXPR_EXPR_NON_EQUALITY
Definition: constraint_solveri.h:2101
RevGrowingArray(int64 block_size)
Definition: constraint_solveri.h:2469
ChangeValue(const std::vector< IntVar * > &vars)
Chain operator*() const
Definition: constraint_solveri.h:3270
@ VAR_CONSTANT_ARRAY_ELEMENT
Definition: constraint_solveri.h:2150
void SetOldInverseValue(int64 index, int64 value)
Definition: constraint_solveri.h:1088
bool IsArrayBoolean(const std::vector< T > &values)
Definition: constraint_solveri.h:2839
int64 OldNext(int64 node) const
Definition: constraint_solveri.h:1449
int64 word_size() const
Returns the number of 64 bit words used to store the bitset.
Definition: constraint_solveri.h:2814
RevIntSet(int capacity)
Capacity is the fixed size of the set (it cannot grow).
Definition: constraint_solveri.h:2555
UnsortedNullableRevBitset(int bit_size)
Size is the number of bits to store in the bitset.
virtual IntExpr * FindVarArrayConstantArrayExpression(const std::vector< IntVar * > &vars, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type) const =0
Var Array Constant Array Expressions.
~RevPartialSequence()
Definition: constraint_solveri.h:2688
virtual bool InitPosition() const
Returns true if the operator needs to restart its initial position at each call to Start()
Definition: constraint_solveri.h:1504
int64 Path(int64 node) const
Returns the index of the path to which node belongs in the current delta.
Definition: constraint_solveri.h:1366
void PushArgumentHolder()
Demon * MakeDelayedConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:732
@ VAR_ARRAY_CONSTANT_ARRAY_SCAL_PROD
Definition: constraint_solveri.h:2155
PropagationMonitor(Solver *const solver)
std::vector< std::vector< int > > backward_values_
Definition: constraint_solveri.h:1189
LocalSearchFilter * MakePathStateFilter(Solver *solver, std::unique_ptr< PathState > path_state, const std::vector< IntVar * > &nexts)
@ VAR_CONSTANT_LESS_OR_EQUAL
Definition: constraint_solveri.h:2085
T * MutableLast()
Definition: constraint_solveri.h:201
virtual Constraint * FindVoidConstraint(VoidConstraintType type) const =0
Void constraints.
bool MakeChainInactive(int64 before_chain, int64 chain_end)
Makes the nodes on the chain starting after before_chain and ending at chain_end inactive.
bool IsCardinalityOne(int row) const
Does the 'row' bitset contains only one bit set?
void Clear(Solver *const solver)
Definition: constraint_solveri.h:2619
int64 GetActiveAlternativeNode(int node) const
Returns the active node in the alternative set of the given node.
Definition: constraint_solveri.h:1543
@ VAR_ARRAY_CONSTANT_INDEX
Definition: constraint_solveri.h:2167
void ApplyDecision(Decision *const decision) override
LocalSearchVariable AddVariable(int64 initial_min, int64 initial_max)
void WhenDomain(Demon *d) override
Definition: constraint_solveri.h:1968
CallMethod3(T *const ct, void(T::*method)(P, Q, R), const std::string &name, P param1, Q param2, R param3)
Definition: constraint_solveri.h:623
void Run(Solver *const s) override
Definition: constraint_solveri.h:752
bool AreAllNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2884
@ EXPR_EXPR_CONSTANT_CONDITIONAL
Definition: constraint_solveri.h:2127
bool ReverseChain(int64 before_chain, int64 after_chain, int64 *chain_last)
Reverses the chain starting after before_chain and ending before after_chain.
std::string ParameterDebugString(P param)
Definition: constraint_solveri.h:539
bool HoldsDelta() const override
Definition: constraint_solveri.h:831
virtual void OnSynchronize(const Assignment *delta)
Definition: constraint_solveri.h:1843
void Start(const Assignment *assignment) override
This method should not be overridden.
Definition: constraint_solveri.h:834
virtual bool HasFragments() const
Definition: constraint_solveri.h:816
virtual void BeginDemonRun(Demon *const demon)=0
void NoMoreSolutions() override
bool FindIndex(IntVar *const var, int64 *index) const
Definition: constraint_solveri.h:1823