C++ Reference
C++ Reference: Routing
constraint_solveri.h
void BeginVisitModel(const std::string &solver_name) override
Header/footers.
void Switch(Solver *const solver)
Definition: constraint_solveri.h:402
SparseBitset changes_
Definition: constraint_solveri.h:944
virtual Constraint * FindVarConstantConstraint(IntVar *const var, int64 value, VarConstantConstraintType type) const =0
Var Constant Constraints.
bool AreAllPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2860
VarArrayConstantExpressionType
Definition: constraint_solveri.h:2147
int64 MinVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2956
IntVar * IsEqual(int64 constant) override
bool IsSet(int64 index) const
Returns whether the 'index' bit is set.
IntVarIterator * MakeHoleIterator(bool reversible) const override
@ VAR_CONSTANT_LESS_OR_EQUAL
Definition: constraint_solveri.h:2066
bool Contains(int64 v) const override
int next_base_to_increment_
Definition: constraint_solveri.h:1567
LocalSearchFilterManager(Solver *const solver, const std::vector< LocalSearchFilter * > &filters)
virtual void InsertVarConstantConstraint(Constraint *const ct, IntVar *const var, int64 value, VarConstantConstraintType type)=0
virtual void SetStartRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
IntVarLocalSearchHandler()
Definition: constraint_solveri.h:955
int64 StartNode(int i) const
Returns the start node of the ith base node.
Definition: constraint_solveri.h:1407
Solver * solver() const
virtual void EndFiltering(const LocalSearchFilter *filter, bool reject)=0
int BaseSiblingAlternative(int i) const
Returns the alternative for the sibling of the ith base node.
Definition: constraint_solveri.h:1393
std::string DebugString() const override
Definition: constraint_solveri.h:1839
Solver::DemonPriority priority() const override
Definition: constraint_solveri.h:679
virtual void SetDurationRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
~SymmetryBreaker() override
Definition: constraint_solveri.h:1982
bool MakeActive(int64 node, int64 destination)
Insert the inactive node after destination.
virtual void RankFirst(SequenceVar *const var, int index)=0
SequenceVar modifiers.
int64 GetFirstOne() const
Gets the index of the first bit set starting from 0.
virtual void InsertVoidConstraint(Constraint *const ct, VoidConstraintType type)=0
void EndInitialPropagation() override
bool AreAllBooleans(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2919
This class is a reversible growing array.
Definition: constraint_solveri.h:2448
int64 max
Definition: constraint_solveri.h:3358
~ModelParser() override
const int number_of_nexts_
Definition: constraint_solveri.h:1565
~UnsortedNullableRevBitset()
Definition: constraint_solveri.h:2762
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:1525
virtual IntVar * CastToVar()
virtual IntExpr * FindExprConstantExpression(IntExpr *const expr, int64 value, ExprConstantExpressionType type) const =0
Expr 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
T * MutableLast()
Definition: constraint_solveri.h:201
SimpleRevFIFO< Demon * > delayed_bound_demons_
Definition: constraint_solveri.h:1970
virtual void EndFilterNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
int64 Value(int index) const
Definition: constraint_solveri.h:1817
virtual void EndConstraintInitialPropagation(Constraint *const constraint)=0
void SetIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &vars)
int64 GetFirstBit(int start) const
Gets the index of the first bit set starting from start.
void RevertChanges(bool incremental)
Definition: constraint_solveri.h:895
void Restore(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2595
virtual void EndMakeNextNeighbor(const LocalSearchOperator *op, bool neighbor_found, const Assignment *delta, const Assignment *deltadelta)=0
void RankFirst(Solver *const solver, int elt)
Definition: constraint_solveri.h:2685
@ VOID_TRUE_CONSTRAINT
Definition: constraint_solveri.h:2059
@ VAR_ARRAY_CONSTANT_ARRAY_SCAL_PROD
Definition: constraint_solveri.h:2136
bool IsIncreasingContiguous(const std::vector< T > &values)
Definition: constraint_solveri.h:2880
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.
const RevIntSet< int > & active_words() const
Returns the set of active word indices.
Definition: constraint_solveri.h:2797
bool HasIntegerVariableArrayArgument(const std::string &arg_name) const
DelayedCallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:741
This iterator is not stable with respect to deletion.
Definition: constraint_solveri.h:156
void SetInverseValue(int64 index, int64 value)
Definition: constraint_solveri.h:1083
@ EXPR_CONSTANT_SUM
Definition: constraint_solveri.h:2118
SimpleRevFIFO()
Definition: constraint_solveri.h:175
virtual void EndNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
virtual void EndDemonRun(Demon *const demon)=0
void WhenDomain(Demon *d) override
Definition: constraint_solveri.h:1949
SequenceVarLocalSearchHandler(SequenceVarLocalSearchOperator *op)
Definition: constraint_solveri.h:1129
void EndVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
@ EXPR_CONSTANT_DIVIDE
Definition: constraint_solveri.h:2114
int64 InverseValue(int64 index) const
Definition: constraint_solveri.h:1077
std::string DebugString() const override
Definition: constraint_solveri.h:596
@ EXPR_CONSTANT_IS_LESS_OR_EQUAL
Definition: constraint_solveri.h:2122
T operator*() const
Definition: constraint_solveri.h:161
RevIntSet(int capacity)
Capacity is the fixed size of the set (it cannot grow).
Definition: constraint_solveri.h:2536
@ VAR_CONSTANT_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2132
virtual IntExpr * FindVarConstantArrayExpression(IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type) const =0
Var Constant Array Expressions.
Low-priority demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:739
const bool ignore_path_vars_
Definition: constraint_solveri.h:1566
int NumFirstRanked() const
Definition: constraint_solveri.h:2671
@ EXPR_EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2104
IntVarLocalSearchHandler(const IntVarLocalSearchHandler &other)
Definition: constraint_solveri.h:956
std::string DebugString() const override
Definition: constraint_solveri.h:1768
virtual void OnStart()
Called by Start() after synchronizing the operator with the current assignment.
Definition: constraint_solveri.h:927
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:1507
virtual void InsertVarConstantConstantExpression(IntExpr *const expression, IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type)=0
std::string BaseName() const override
Definition: constraint_solveri.h:1963
@ VAR_CONSTANT_CONSTANT_BETWEEN
Definition: constraint_solveri.h:2072
@ EXPR_EXPR_PROD
Definition: constraint_solveri.h:2095
virtual void BeginFilterNeighbor(const LocalSearchOperator *op)=0
virtual void OutputLine(const std::string &line)
virtual bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta)=0
void Run(Solver *const s) override
Definition: constraint_solveri.h:751
bool IsIncremental() const override
Definition: constraint_solveri.h:1780
UnsortedNullableRevBitset(int bit_size)
Size is the number of bits to store in the bitset.
std::string DebugString() const override
Definition: constraint_solveri.h:637
This class represents a reversible bitset.
Definition: constraint_solveri.h:435
bool AreAllOnes(const std::vector< T > &values)
Definition: constraint_solveri.h:2830
Bitset64 activated_
Definition: constraint_solveri.h:942
void SetSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &vars)
int FragmentSize() const
void AddVars(const std::vector< V * > &vars)
Definition: constraint_solveri.h:908
friend class IntVarLocalSearchHandler
Definition: constraint_solveri.h:1064
void OnAddVars()
Definition: constraint_solveri.h:985
void SetIntervalArgument(const std::string &arg_name, IntervalVar *const var)
void VisitIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values) override
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:1430
virtual void SetStartMin(IntervalVar *const var, int64 new_min)=0
IntervalVar modifiers.
Iterator begin() const
Definition: constraint_solveri.h:3234
~SearchLog() override
void operator++()
Definition: constraint_solveri.h:162
virtual void SetDurationMin(IntervalVar *const var, int64 new_min)=0
int64 BaseSiblingAlternativeNode(int i) const
Returns the alternative node for the sibling of the ith base node.
Definition: constraint_solveri.h:1397
This is the base class for building an Lns operator.
Definition: constraint_solveri.h:1271
@ EXPR_EXPR_EQUALITY
Definition: constraint_solveri.h:2077
~ChangeValue() override
@ EXPR_EXPR_CONSTANT_CONDITIONAL
Definition: constraint_solveri.h:2108
~RevBitSet()
BaseLns(const std::vector< IntVar * > &vars)
virtual bool InitPosition() const
Returns true if the operator needs to restart its initial position at each call to Start()
Definition: constraint_solveri.h:1503
SequenceVarLocalSearchHandler(const SequenceVarLocalSearchHandler &other)
Definition: constraint_solveri.h:1127
bool Check() const
bool IsVarSynced(int index) const
Definition: constraint_solveri.h:1821
bool SwapActiveAndInactive(int64 active, int64 inactive)
Replaces active by inactive in the current path, making active inactive.
virtual void BeginNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
virtual void BeginDemonRun(Demon *const demon)=0
SymmetryBreaker()
Definition: constraint_solveri.h:1980
void OutputDecision()
virtual void InsertExprExprExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type)=0
virtual void EndOperatorStart()=0
bool MakeOneNeighbor() override
This method should not be overridden. Override NextFragment() instead.
@ VAR_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2144
IntVar * IsGreaterOrEqual(int64 constant) override
IntVarLocalSearchOperator(const std::vector< IntVar * > &vars, bool keep_inverse_values=false)
Definition: constraint_solveri.h:1039
void SetToOne(Solver *const solver, int64 pos)
Sets the 'pos' bit.
@ EXPR_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2123
Solver::DemonPriority priority() const override
Definition: constraint_solveri.h:755
DelayedCallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:705
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:1436
~LocalSearchMonitor() override
The base class of all search logs that periodically outputs information when the search is running.
Definition: constraint_solveri.h:2007
void VisitSequenceVariable(const SequenceVar *const variable) override
bool AreAllBoundTo(const std::vector< IntVar * > &vars, int64 value)
Returns true if all variables are assigned to 'value'.
Definition: constraint_solveri.h:2937
int64 GetActiveAlternativeSibling(int node) const
Returns the active node in the alternative set of the sibling of the given node.
Definition: constraint_solveri.h:1553
@ VAR_CONSTANT_ARRAY_ELEMENT
Definition: constraint_solveri.h:2131
void SetIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &vars)
Reversible Immutable MultiMap class.
Definition: constraint_solveri.h:288
PropagationMonitor(Solver *const solver)
~PropagationMonitor() override
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:612
virtual void SetMin(IntExpr *const expr, int64 new_min)=0
IntExpr modifiers.
bool IsInverseValue(int64 index) const
Definition: constraint_solveri.h:1072
void VisitIntegerArgument(const std::string &arg_name, int64 value) override
Integer arguments.
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...
SmallRevBitSet(int64 size)
SequenceVarLocalSearchOperator(const std::vector< SequenceVar * > &vars)
Definition: constraint_solveri.h:1165
virtual void InsertVarArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &vars, VarArrayExpressionType type)=0
int64 OldNext(int64 node) const
Definition: constraint_solveri.h:1448
Base class of the local search operators dedicated to path modifications (a path is a set of nodes li...
Definition: constraint_solveri.h:1324
~BaseLns() override
virtual Constraint * FindVoidConstraint(VoidConstraintType type) const =0
Void constraints.
void PushArgumentHolder()
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
Definition: constraint_solveri.h:78
CallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:552
VarConstantArrayExpressionType
Definition: constraint_solveri.h:2130
virtual bool IsIncremental() const
Definition: constraint_solveri.h:846
void Clear(Solver *const solver)
Definition: constraint_solveri.h:2600
ExprExprExpressionType
Definition: constraint_solveri.h:2093
bool IsInactive(int64 node) const
Returns true if node is inactive.
Definition: constraint_solveri.h:1497
int64 PosIntDivUp(int64 e, int64 v)
Definition: constraint_solveri.h:2975
Chain operator*() const
Definition: constraint_solveri.h:3251
@ EXPR_EXPR_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2109
bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2840
bool AreAllNull(const std::vector< T > &values)
Definition: constraint_solveri.h:2835
virtual void InsertExprExprConstantExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type)=0
~BaseIntExpr() override
Definition: constraint_solveri.h:112
bool AtSolution() override
std::string DebugString() const
Definition: constraint_solveri.h:2703
~SequenceVarLocalSearchOperator() override
Definition: constraint_solveri.h:1170
virtual void RegisterDemon(Demon *const demon)=0
T At(int64 index) const
Definition: constraint_solveri.h:2461
@ VAR_CONSTANT_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2073
bool SetMin(int64 new_min)
Definition: constraint_solveri.h:1688
void VisitIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &arguments) override
void Revert()
Demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:550
std::vector< int64 > start_to_path_
Definition: constraint_solveri.h:1569
int64 Value() const override
Definition: constraint_solveri.h:1941
~DelayedCallMethod0() override
Definition: constraint_solveri.h:675
void Insert(Solver *const solver, const T &elt)
Definition: constraint_solveri.h:2581
bool Bound() const override
Definition: constraint_solveri.h:1940
void AddIntegerVariableEqualValueClause(IntVar *const var, int64 value)
void AppendToFragment(int index)
void BeginFail() override
~VarLocalSearchOperator() override
Definition: constraint_solveri.h:829
void Run(Solver *const s) override
Definition: constraint_solveri.h:558
T RemovedElement(int i) const
Definition: constraint_solveri.h:2575
void SetToOne(Solver *const solver, int64 index)
Sets the 'index' bit.
int ActiveWordSize() const
This method returns the number of non null 64 bit words in the bitset representation.
Definition: constraint_solveri.h:2778
void RefuteDecision(Decision *const decision) override
Base operator class for operators manipulating variables.
Definition: constraint_solveri.h:821
static const int kNoInserted
Definition: constraint_solveri.h:2533
~LocalSearchOperator() override
Definition: constraint_solveri.h:808
virtual bool MakeOneNeighbor()
Creates a new neighbor.
int64 Path(int64 node) const
Returns the index of the path to which node belongs in the current delta.
Definition: constraint_solveri.h:1365
const Val & Value(int64 index) const
Returns the value in the current assignment of the variable of given index.
Definition: constraint_solveri.h:850
void CutChains()
RevBitMatrix(int64 rows, int64 columns)
~IntVarLocalSearchOperator() override
Definition: constraint_solveri.h:1054
~ArrayWithOffset() override
Definition: constraint_solveri.h:2420
virtual void BeginConstraintInitialPropagation(Constraint *const constraint)=0
Propagation events.
~RevBitMatrix()
ExprExprConstraintType
Definition: constraint_solveri.h:2076
void PopArgumentHolder()
RevBitSet(int64 size)
bool SkipUnchanged(int index) const override
@ EXPR_CONSTANT_IS_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2121
friend class SymmetryManager
Definition: constraint_solveri.h:1990
virtual bool HoldsDelta() const
Definition: constraint_solveri.h:816
VarConstantConstantExpressionType
Definition: constraint_solveri.h:2125
Iterator & operator++()
Definition: constraint_solveri.h:3210
virtual IntExpr * FindExprExprExpression(IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type) const =0
Expr Expr Expressions.
void VisitIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &arguments) override
void NoMoreSolutions() override
Specialization of LocalSearchOperator built from an array of IntVars which specifies the scope of the...
Definition: constraint_solveri.h:1033
bool ValueFromAssignment(const Assignment &assignment, SequenceVar *var, int64 index, std::vector< int > *value)
Definition: constraint_solveri.h:1217
void RankLast(Solver *const solver, int elt)
Definition: constraint_solveri.h:2691
~CallMethod3() override
Definition: constraint_solveri.h:631
void BeginVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
void SetToZero(Solver *const solver, int64 pos)
Erases the 'pos' bit.
void SetToZero(Solver *const solver, int64 index)
Erases the 'index' bit.
bool ApplyChanges(Assignment *delta, Assignment *deltadelta) const
Definition: constraint_solveri.h:871
IntVarIterator * MakeDomainIterator(bool reversible) const override
virtual void SetValue(IntVar *const var, int64 value)=0
std::vector< int > assignment_indices_
Definition: constraint_solveri.h:941
int BaseAlternative(int i) const
Returns the alternative for the ith base node.
Definition: constraint_solveri.h:1383
void MarkChange(int64 index)
OnStart() should really be protected, but then SWIG doesn't see it.
Definition: constraint_solveri.h:932
Bitset64 was_activated_
Definition: constraint_solveri.h:943
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:1728
virtual void OnSynchronize(const Assignment *delta)
Definition: constraint_solveri.h:1824
int64 bit_size() const
Returns the number of bits given in the constructor of the bitset.
Definition: constraint_solveri.h:2793
IntVar * IsDifferent(int64 constant) override
Demon * MakeDelayedConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:695
virtual void BeginAcceptNeighbor(const LocalSearchOperator *op)=0
The base class for all local search operators.
Definition: constraint_solveri.h:805
virtual void RemoveValues(IntVar *const var, const std::vector< int64 > &values)=0
void AddVars(const std::vector< IntVar * > &vars)
Add variables to "track" to the filter.
@ EXPR_CONSTANT_PROD
Definition: constraint_solveri.h:2115
bool IsArrayConstant(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2810
SparseBitset delta_changes_
Definition: constraint_solveri.h:945
VarConstantConstantConstraintType
Definition: constraint_solveri.h:2071
bool IsIncreasing(const std::vector< T > &values)
Definition: constraint_solveri.h:2890
void WhenBound(Demon *d) override
DelayedCallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:672
void Run(Solver *const s) override
Definition: constraint_solveri.h:711
void BeginInitialPropagation() override
VarLocalSearchOperator(Handler var_handler)
Definition: constraint_solveri.h:824
Solver::DemonPriority priority() const override
Definition: constraint_solveri.h:713
int64 GetFirstBit(int row, int start) const
Returns the first bit in the row 'row' which position is >= 'start'.
virtual const LocalSearchOperator * Self() const
Definition: constraint_solveri.h:813
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
ExprConstantExpressionType
Definition: constraint_solveri.h:2112
virtual void RestoreValue()=0
int64 GetActiveInAlternativeSet(int alternative_index) const
Returns the active node in the given alternative set.
Definition: constraint_solveri.h:1536
SearchLog(Solver *const s, OptimizeVar *const obj, IntVar *const var, double scaling_factor, double offset, std::function< std::string()> display_callback, int period)
void SetBackwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1180
virtual Constraint * FindExprExprConstraint(IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type) const =0
Expr Expr Constraints.
int64 BaseNode(int i) const
Returns the ith base node of the operator.
Definition: constraint_solveri.h:1381
~DelayedCallMethod2() override
Definition: constraint_solveri.h:749
void RemoveValue(int64 v) override
std::string DebugString() const override
const std::vector< int64 > & path_starts() const
Returns the vector of path start nodes.
Definition: constraint_solveri.h:1409
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 ...
bool IsSet(int64 row, int64 column) const
Returns whether the 'column' bit in the 'row' row is set.
Definition: constraint_solveri.h:480
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:1191
int64 FindIntegerArgumentWithDefault(const std::string &arg_name, int64 def) const
Getters.
void Init(Solver *const solver, const std::vector< uint64 > &mask)
This methods overwrites the active bitset with the mask.
SequenceVarLocalSearchOperator()
Definition: constraint_solveri.h:1164
ExprExprConstantExpressionType
Definition: constraint_solveri.h:2107
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 Commit()
@ EXPR_EXPR_IS_LESS_OR_EQUAL
Definition: constraint_solveri.h:2101
~PathOperator() override
Definition: constraint_solveri.h:1343
Implements a complete cache for model elements: expressions and constraints.
Definition: constraint_solveri.h:2055
bool RevSubtract(Solver *const solver, const std::vector< uint64 > &mask)
This method subtracts the mask from the active bitset.
Chain(const CommittedNode *begin_node, const CommittedNode *end_node)
Definition: constraint_solveri.h:3228
ModelParser()
ChainRange Chains(int path) const
@ VAR_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2068
void ChangeNext(int node, int new_next)
Definition: constraint_solveri.h:3092
void Run(Solver *const s) override
Definition: constraint_solveri.h:633
IntVar * Var() override
@ EXPR_EXPR_GREATER
Definition: constraint_solveri.h:2078
NodeRange Nodes(int path) const
bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2850
virtual void SetRange(IntExpr *const expr, int64 new_min, int64 new_max)=0
@ EXPR_EXPR_IS_NOT_EQUAL
Definition: constraint_solveri.h:2103
void SetMin(int64 m) override
int PathClass(int i) const
Returns the class of the path of the ith base node.
Definition: constraint_solveri.h:1411
void Synchronize(const Assignment *assignment, const Assignment *delta) override
This method should not be overridden.
@ VOID_CONSTRAINT_MAX
Definition: constraint_solveri.h:2060
VarArrayExpressionType
Definition: constraint_solveri.h:2140
void SetIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
std::string DebugString() const override
Definition: constraint_solveri.h:1904
VarLocalSearchOperator()
Definition: constraint_solveri.h:823
virtual bool MakeNeighbor()=0
@ VAR_CONSTANT_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2065
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:2926
virtual void SetStartMax(IntervalVar *const var, int64 new_max)=0
virtual void InsertVarArrayConstantExpression(IntExpr *const expression, const std::vector< IntVar * > &var, int64 value, VarArrayConstantExpressionType type)=0
Demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:580
virtual void SetMin(IntVar *const var, int64 new_min)=0
IntVar modifiers.
@ EXPR_CONSTANT_IS_NOT_EQUAL
Definition: constraint_solveri.h:2120
std::vector< int64 > ToInt64Vector(const std::vector< int > &input)
RevPartialSequence(const std::vector< int > &items)
Definition: constraint_solveri.h:2645
void BeginVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
uint64 Size() const override
virtual int64 ModifyValue(int64 index, int64 value)=0
int NumNodes() const
Definition: constraint_solveri.h:3231
bool IsCardinalityOne() const
Does it contains only one bit set?
@ EXPR_EXPR_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2079
int64 word_size() const
Returns the number of 64 bit words used to store the bitset.
Definition: constraint_solveri.h:2795
void VisitIntervalVariable(const IntervalVar *const variable, const std::string &operation, int64 value, IntervalVar *const delegate) override
virtual bool RestartAtPathStartOnSynchronize()
When the operator is being synchronized with a new solution (when Start() is called),...
Definition: constraint_solveri.h:1424
~RevImmutableMultiMap()
Definition: constraint_solveri.h:298
VarLocalSearchOperator< SequenceVar, std::vector< int >, SequenceVarLocalSearchHandler > SequenceVarLocalSearchOperatorTemplate
Definition: constraint_solveri.h:1159
Iterator & operator++()
Definition: constraint_solveri.h:3290
virtual bool NextFragment()=0
void OnAddVars()
Definition: constraint_solveri.h:1240
void EndVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
LocalSearchOperator()
Definition: constraint_solveri.h:807
virtual bool SkipUnchanged(int index) const
Definition: constraint_solveri.h:856
bool ContainsKey(const K &key) const
Returns true if the multi-map contains at least one instance of 'key'.
Definition: constraint_solveri.h:303
virtual void Start(const Assignment *assignment)=0
virtual T Evaluate(int64 index) const
Definition: constraint_solveri.h:2422
int AddAlternativeSet(const std::vector< int64 > &alternative_set)
Handling node alternatives.
Definition: constraint_solveri.h:1512
ChangeValue(const std::vector< IntVar * > &vars)
Low-priority demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:670
std::vector< std::vector< int > > backward_values_
Definition: constraint_solveri.h:1188
void SetNext(int64 from, int64 to, int64 path)
Sets 'to' to be the node after 'from' on the given path.
Definition: constraint_solveri.h:1479
@ EXPR_EXPR_NON_EQUALITY
Definition: constraint_solveri.h:2082
virtual void SetPerformed(IntervalVar *const var, bool value)=0
virtual bool HasFragments() const
Definition: constraint_solveri.h:815
Demon * MakeConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:573
virtual void Reset()
Definition: constraint_solveri.h:811
bool IsCardinalityOne(int row) const
Does the 'row' bitset contains only one bit set?
int operator*() const
Definition: constraint_solveri.h:3214
virtual void RankLast(SequenceVar *const var, int index)=0
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 InsertVarArrayConstantArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &var, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type)=0
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:2548
@ EXPR_CONSTANT_DIFFERENCE
Definition: constraint_solveri.h:2113
virtual void PushContext(const std::string &context)=0
int GetSiblingAlternativeIndex(int node) const
Returns the index of the alternative set of the sibling of node.
Definition: constraint_solveri.h:1546
IntVarLocalSearchOperator()
Definition: constraint_solveri.h:1035
void Reset() override
void ExitSearch() override
int Size() const
Definition: constraint_solveri.h:1815
void Commit()
void RemoveInterval(int64 l, int64 u) override
std::string DebugString() const override
Definition: constraint_solveri.h:717
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3255
@ EXPR_CONSTANT_MIN
Definition: constraint_solveri.h:2117
BaseIntExpr(Solver *const s)
Definition: constraint_solveri.h:111
@ EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2090
virtual void BeginFiltering(const LocalSearchFilter *filter)=0
SequenceVarLocalSearchHandler()
Definition: constraint_solveri.h:1126
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 ...
void AddToAssignment(IntVar *var, int64 value, bool active, std::vector< int > *assignment_indices, int64 index, Assignment *assignment) const
Definition: constraint_solveri.h:959
void SetIntegerArgument(const std::string &arg_name, int64 value)
Setters.
bool IsCardinalityZero(int row) const
Is bitset of row 'row' null?
void Remove(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2590
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...
const int & operator[](int index) const
Definition: constraint_solveri.h:2678
virtual void InsertExprExprConstraint(Constraint *const ct, IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type)=0
@ EXPR_EXPR_CONSTRAINT_MAX
Definition: constraint_solveri.h:2083
~IntVarLocalSearchFilter() override
ArgumentHolder * Top() const
virtual void EndProcessingIntegerVariable(IntVar *const var)=0
void AddIntegerVariableLessOrEqualValueClause(IntVar *const var, int64 value)
void Push(Solver *const s, T val)
Definition: constraint_solveri.h:177
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:1491
int64 Cardinality(int row) const
Returns the number of bits set to one in the 'row' row.
LocalSearchMonitor(Solver *const solver)
void Run(Solver *const s) override
Definition: constraint_solveri.h:519
std::string DebugString() const override
Definition: constraint_solveri.h:2434
bool Activated(int64 index) const
Definition: constraint_solveri.h:862
A reversible switch that can switch once from false to true.
Definition: constraint_solveri.h:396
IntExpr * FindIntegerExpressionArgumentOrDie(const std::string &arg_name) const
bool HoldsDelta() const override
Definition: constraint_solveri.h:830
ChainRange(const ChainBounds *const begin_chain, const ChainBounds *const end_chain, const CommittedNode *const first_node)
Definition: constraint_solveri.h:3270
bool AreAllStrictlyNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2875
bool HasIntegerExpressionArgument(const std::string &arg_name) const
Checks if arguments exist.
bool MakeChainInactive(int64 before_chain, int64 chain_end)
Makes the nodes on the chain starting after before_chain and ending at chain_end inactive.
int64 GetSynchronizedObjectiveValue() const override
Objective value from last time Synchronize() was called.
Definition: constraint_solveri.h:1781
bool cleared_
Definition: constraint_solveri.h:946
IntVar * Var(int index) const
Definition: constraint_solveri.h:1816
int operator*() const
Definition: constraint_solveri.h:3302
const_iterator begin() const
Definition: constraint_solveri.h:2604
SimpleRevFIFO< Demon * > bound_demons_
Definition: constraint_solveri.h:1969
VarConstantConstraintType
Definition: constraint_solveri.h:2063
int64 Cardinality() const
Returns the number of bits set to one.
bool SetMax(int64 new_max)
Definition: constraint_solveri.h:1691
void RevInsert(Solver *const solver, int64 index, T value)
Definition: constraint_solveri.h:2471
void Synchronize(const Assignment *assignment, const Assignment *delta) override
Synchronizes all filters to assignment.
@ EXPR_EXPR_LESS
Definition: constraint_solveri.h:2080
virtual void InsertExprConstantExpression(IntExpr *const expression, IntExpr *const var, int64 value, ExprConstantExpressionType type)=0
This class represents a small reversible bitset (size <= 64).
Definition: constraint_solveri.h:410
void WhenRange(Demon *d) override
Definition: constraint_solveri.h:1948
virtual void SetMax(IntExpr *const expr, int64 new_max)=0
void SetToZero(Solver *const solver, int64 row, int64 column)
Erases the 'column' bit in the 'row' row.
bool AreAllStrictlyPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2870
void Revert() override
Cancels the changes made by the last Relax()/Accept() calls.
A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
Definition: constraint_solveri.h:1978
virtual void RankSequence(SequenceVar *const var, const std::vector< int > &rank_first, const std::vector< int > &rank_last, const std::vector< int > &unperformed)=0
virtual void SetEndMin(IntervalVar *const var, int64 new_min)=0
bool MakeOneNeighbor() override
This method should not be overridden. Override ModifyValue() instead.
void Activate(int64 index)
Definition: constraint_solveri.h:863
virtual void StartProcessingIntegerVariable(IntVar *const var)=0
~CallMethod2() override
Definition: constraint_solveri.h:590
const std::vector< std::pair< int, int > > & ChangedArcs() const
Definition: constraint_solveri.h:3077
virtual void BeginOperatorStart()=0
Local search operator events.
int64 OldPath(int64 node) const
Definition: constraint_solveri.h:1458
void SetSequenceArgument(const std::string &arg_name, SequenceVar *const var)
virtual ~ModelCache()
void EnterSearch() override
int64 Prev(int64 node) const
Returns the node before node in the current delta.
Definition: constraint_solveri.h:1357
void AcceptUncheckedNeighbor() override
bool AreAllBound(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2910
void Maintain()
const IntTupleSet & FindIntegerMatrixArgumentOrDie(const std::string &arg_name) const
int NumLastRanked() const
Definition: constraint_solveri.h:2673
CallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:582
ExprExpressionType
Definition: constraint_solveri.h:2086
int VarType() const override
Definition: constraint_solveri.h:1955
@ VAR_ARRAY_CONSTANT_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2137
int Size() const
Definition: constraint_solveri.h:847
bool IsArrayInRange(const std::vector< IntVar * > &vars, T range_min, T range_max)
Definition: constraint_solveri.h:2900
void SetIntegerExpressionArgument(const std::string &arg_name, IntExpr *const expr)
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 RemoveInterval(IntVar *const var, int64 imin, int64 imax)=0
Argument Holder: useful when visiting a model.
Definition: constraint_solveri.h:2292
Iterator end() const
Definition: constraint_solveri.h:3332
Handler var_handler_
Definition: constraint_solveri.h:947
void VisitSequenceArgument(const std::string &arg_name, SequenceVar *const argument) override
Visit sequence argument.
Local Search Filters are used for fast neighbor pruning.
Definition: constraint_solveri.h:1724
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
std::string DebugString() const override
Definition: constraint_solveri.h:683
@ VAR_ARRAY_CONSTANT_INDEX
Definition: constraint_solveri.h:2148
virtual void SetNextBaseToIncrement(int64 base_index)
Set the next base to increment on next iteration.
Definition: constraint_solveri.h:1441
~CallMethod1() override
Definition: constraint_solveri.h:556
This is a special class to represent a 'residual' set of T.
Definition: constraint_solveri.h:2531
void OnRevertChanges(int64 index, int64 value)
Definition: constraint_solveri.h:1114
void SetToOne(Solver *const solver, int64 row, int64 column)
Sets the 'column' bit in the 'row' row.
virtual void SetEndRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
virtual bool ConsiderAlternatives(int64 base_index) const
Indicates if alternatives should be considered when iterating over base nodes.
Definition: constraint_solveri.h:1446
bool ValueFromAssignment(const Assignment &assignment, IntVar *var, int64 index, int64 *value)
Definition: constraint_solveri.h:1097
This class represent a reversible FIFO structure.
Definition: constraint_solveri.h:145
void ApplyDecision(Decision *const decision) override
virtual void Clear()=0
bool HasFragments() const override
Definition: constraint_solveri.h:1279
Matrix version of the RevBitSet class.
Definition: constraint_solveri.h:470
@ EXPR_CONSTANT_IS_EQUAL
Definition: constraint_solveri.h:2119
virtual IntExpr * FindVarConstantConstantExpression(IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type) const =0
Var Constant Constant Expressions.
LocalSearchVariable AddVariable(int64 initial_min, int64 initial_max)
Iterator & operator++()
Definition: constraint_solveri.h:3247
virtual void SetValues(IntVar *const var, const std::vector< int64 > &values)=0
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
~RevPartialSequence()
Definition: constraint_solveri.h:2669
This class represents a reversible bitset.
Definition: constraint_solveri.h:2757
PathState(int num_nodes, std::vector< int > path_start, std::vector< int > path_end)
@ VAR_CONSTANT_NON_EQUALITY
Definition: constraint_solveri.h:2067
virtual void InsertVarConstantConstantConstraint(Constraint *const ct, IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type)=0
void Install() override
Install itself on the solver.
virtual void SetDurationMax(IntervalVar *const var, int64 new_max)=0
IntVar * IsLessOrEqual(int64 constant) override
void SetRange(int64 mi, int64 ma) override
int64 FindIntegerArgumentOrDie(const std::string &arg_name) const
void Relax(const Assignment *delta, const Assignment *deltadelta) override
Lets the filter know what delta and deltadelta will be passed in the next Accept().
bool IsPathStart(int64 node) const
Returns true if node is the first node on the path.
Definition: constraint_solveri.h:1494
virtual void EndAcceptNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
const std::vector< int > & ChangedPaths() const
Definition: constraint_solveri.h:3082
ModelCache(Solver *const solver)
void SetIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values)
bool Empty() const
This method returns true if the active bitset is null.
Definition: constraint_solveri.h:2781
void VisitIntegerExpressionArgument(const std::string &arg_name, IntExpr *const argument) override
Variables.
void Run(Solver *const s) override
Definition: constraint_solveri.h:592
@ VAR_CONSTANT_CONSTANT_SEMI_CONTINUOUS
Definition: constraint_solveri.h:2126
static const int kUnboundBooleanVarValue
Definition: constraint_solveri.h:1928
int64 GetActiveAlternativeNode(int node) const
Returns the active node in the alternative set of the given node.
Definition: constraint_solveri.h:1542
RevImmutableMultiMap(Solver *const solver, int initial_size)
Definition: constraint_solveri.h:290
int64 Cardinality() const
Returns the number of bits set to one.
ArrayWithOffset(int64 index_min, int64 index_max)
Definition: constraint_solveri.h:2413
void VisitIntervalArgument(const std::string &arg_name, IntervalVar *const argument) override
Visit interval argument.
virtual void PopContext()=0
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:1173
bool RevAnd(Solver *const solver, const std::vector< uint64 > &mask)
This method ANDs the mask with the active bitset.
virtual IntExpr * FindExprExpression(IntExpr *const expr, ExprExpressionType type) const =0
Expr Expressions.
virtual IntExpr * FindExprExprConstantExpression(IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type) const =0
Expr Expr Constant Expressions.
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 OnRevertChanges(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1235
std::vector< Val > values_
Definition: constraint_solveri.h:938
void VisitIntegerVariable(const IntVar *const variable, const std::string &operation, int64 value, IntVar *const delegate) override
void Commit()
void VisitIntegerVariable(const IntVar *const variable, IntExpr *const delegate) override
void SetMax(int64 m) override
std::string DebugString() const override
virtual void SetRange(IntVar *const var, int64 new_min, int64 new_max)=0
int64 PosIntDivDown(int64 e, int64 v)
Definition: constraint_solveri.h:2984
Defines operators which change the value of variables; each neighbor corresponds to one modified vari...
Definition: constraint_solveri.h:1295
virtual void Revert()
Cancels the changes made by the last Relax()/Accept() calls.
Definition: constraint_solveri.h:1751
const std::vector< IntVar * > & FindIntegerVariableArrayArgumentOrDie(const std::string &arg_name) const
Iterator begin() const
Definition: constraint_solveri.h:3329
void Install() override
Install itself on the solver.
Demon proxy to a method on the constraint with three arguments.
Definition: constraint_solveri.h:620
void Revert()
int64 Next(int64 node) const
Returns the node after node in the current delta.
Definition: constraint_solveri.h:1351
@ EXPR_EXPR_LESS_OR_EQUAL
Definition: constraint_solveri.h:2081
const std::vector< int64 > & FindIntegerArrayArgumentOrDie(const std::string &arg_name) const
CallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:514
LocalSearchFilter * MakeUnaryDimensionFilter(Solver *solver, std::unique_ptr< UnaryDimensionChecker > checker)
--— RevPartialSequence --—
Definition: constraint_solveri.h:2643
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3215
void Start(const Assignment *assignment) override
This method should not be overridden.
Definition: constraint_solveri.h:833
IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)
virtual void InsertExprExpression(IntExpr *const expression, IntExpr *const expr, ExprExpressionType type)=0
virtual IntExpr * FindVarArrayConstantExpression(const std::vector< IntVar * > &vars, int64 value, VarArrayConstantExpressionType type) const =0
Var Array Constant Expressions.
@ EXPR_EXPR_IS_EQUAL
Definition: constraint_solveri.h:2102
void SetOldInverseValue(int64 index, int64 value)
Definition: constraint_solveri.h:1087
void SetForwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1177
VoidConstraintType
Definition: constraint_solveri.h:2057
RevGrowingArray(int64 block_size)
Definition: constraint_solveri.h:2450
bool MakeOneNeighbor() override
This method should not be overridden. Override MakeNeighbor() instead.
const std::vector< int > & OldSequence(int64 index) const
Definition: constraint_solveri.h:1174
int64 OldInverseValue(int64 index) const
Definition: constraint_solveri.h:1079
virtual IntExpr * FindVarArrayConstantArrayExpression(const std::vector< IntVar * > &vars, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type) const =0
Var Array Constant Array Expressions.
@ EXPR_CONSTANT_MAX
Definition: constraint_solveri.h:2116
void SetValue(int64 index, const Val &value)
Definition: constraint_solveri.h:858
Demon * MakeConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:532
virtual int64 GetAcceptedObjectiveValue() const
Objective value from the last time Accept() was called and returned true.
Definition: constraint_solveri.h:1757
Low-priority demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:703
virtual void RemoveValue(IntVar *const var, int64 value)=0
void SynchronizeOnAssignment(const Assignment *assignment)
@ VOID_FALSE_CONSTRAINT
Definition: constraint_solveri.h:2058
void Deactivate(int64 index)
Definition: constraint_solveri.h:867
int64 MaxVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2946
std::vector< Val > old_values_
Definition: constraint_solveri.h:939
virtual int64 GetSynchronizedObjectiveValue() const
Objective value from last time Synchronize() was called.
Definition: constraint_solveri.h:1754
void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
Definition: constraint_solveri.h:2966
bool ReverseChain(int64 before_chain, int64 after_chain, int64 *chain_last)
Reverses the chain starting after before_chain and ending before after_chain.
Iterator(const SimpleRevFIFO< T > *l)
Definition: constraint_solveri.h:158
bool StateIsValid() const
Definition: constraint_solveri.h:1656
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
void VisitIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values) override
This is the base class for all expressions that are not variables.
Definition: constraint_solveri.h:109
virtual IntExpr * FindVarArrayExpression(const std::vector< IntVar * > &vars, VarArrayExpressionType type) const =0
Var Array Expressions.
std::string DebugString() const override
Definition: constraint_solveri.h:521
void EndVisitModel(const std::string &solver_name) override
virtual void OnNodeInitialization()
Called by OnStart() after initializing node information.
Definition: constraint_solveri.h:1378
Iterator end() const
Definition: constraint_solveri.h:3276
~CallMethod0() override
Definition: constraint_solveri.h:517
void SetValue(int64 index, T value)
Definition: constraint_solveri.h:2428
std::string DebugString() const override
Definition: constraint_solveri.h:759
~DelayedCallMethod1() override
Definition: constraint_solveri.h:709
~RevGrowingArray()
Definition: constraint_solveri.h:2455
const Val & OldValue(int64 index) const
Definition: constraint_solveri.h:857
int64 BaseAlternativeNode(int i) const
Returns the alternative node for the ith base node.
Definition: constraint_solveri.h:1385
virtual void RankNotFirst(SequenceVar *const var, int index)=0
virtual void BeginMakeNextNeighbor(const LocalSearchOperator *op)=0
virtual bool IsIncremental() const
Definition: constraint_solveri.h:1741
~BooleanVar() override
Definition: constraint_solveri.h:1933
std::vector< Val > prev_values_
Definition: constraint_solveri.h:940
@ EXPR_EXPR_DIFFERENCE
Definition: constraint_solveri.h:2094
Demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:512
RevPartialSequence(int size)
Definition: constraint_solveri.h:2657
@ EXPR_EXPR_IS_LESS
Definition: constraint_solveri.h:2100
Iterator begin() const
Definition: constraint_solveri.h:3275
BooleanVar(Solver *const s, const std::string &name="")
Definition: constraint_solveri.h:1930
void Insert(const K &key, const V &value)
Inserts (key, value) in the multi-map.
Definition: constraint_solveri.h:331
virtual Constraint * FindVarConstantConstantConstraint(IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type) const =0
Var Constant Constant Constraints.
const std::string & TypeName() const
Type of the argument.
bool IsArrayBoolean(const std::vector< T > &values)
Definition: constraint_solveri.h:2820
int num_items() const
Definition: constraint_solveri.h:300
void Run(Solver *const s) override
Definition: constraint_solveri.h:677
bool FindIndex(IntVar *const var, int64 *index) const
Definition: constraint_solveri.h:1804
virtual void InitFragments()
void SetTypeName(const std::string &type_name)
std::string DebugString() const override
Definition: constraint_solveri.h:560
bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta) override
Redefines MakeNextNeighbor to export a simpler interface.
@ VAR_ARRAY_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2149
@ VAR_CONSTANT_EQUALITY
Definition: constraint_solveri.h:2064
void AddIntegerVariableGreaterOrEqualValueClause(IntVar *const var, int64 value)
Demon * MakeDelayedConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:731
int64 GetAcceptedObjectiveValue() const override
Objective value from the last time Accept() was called and returned true.
Definition: constraint_solveri.h:1784
int64 OldPrev(int64 node) const
Definition: constraint_solveri.h:1453
int64 min
Definition: constraint_solveri.h:3357
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3303
virtual void SetEndMax(IntervalVar *const var, int64 new_max)=0
void VisitSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &arguments) override
LocalSearchFilter * MakePathStateFilter(Solver *solver, std::unique_ptr< PathState > path_state, const std::vector< IntVar * > &nexts)
std::vector< V * > vars_
Definition: constraint_solveri.h:937
virtual void SetMax(IntVar *const var, int64 new_max)=0
NodeRange(const ChainBounds *begin_chain, const ChainBounds *end_chain, const CommittedNode *first_node)
Definition: constraint_solveri.h:3324
bool IsRanked(int elt) const
Definition: constraint_solveri.h:2697
IntVarLocalSearchHandler(IntVarLocalSearchOperator *op)
Definition: constraint_solveri.h:958
@ VAR_CONSTANT_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2127
bool AreAllNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2865
std::string ParameterDebugString(P param)
Definition: constraint_solveri.h:538
virtual void RankNotLast(SequenceVar *const var, int index)=0
VarArrayConstantArrayExpressionType
Definition: constraint_solveri.h:2135
virtual void InsertVarConstantArrayExpression(IntExpr *const expression, IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type)=0