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:2769
VarArrayConstantExpressionType
Definition: constraint_solveri.h:2056
int64 MinVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2865
bool IsSet(int64 index) const
Returns whether the 'index' bit is set.
IntVarIterator * MakeHoleIterator(bool reversible) const override
Creates a hole iterator.
bool Contains(int64 v) const override
This method returns whether the value 'v' is in the domain of the variable.
int next_base_to_increment_
Definition: constraint_solveri.h:1445
const IntContainer & IntVarContainer() const
Definition: constraint_solver.h:5082
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
int64 StartNode(int i) const
Returns the start node of the ith base node.
Definition: constraint_solveri.h:1309
Solver * solver() const
virtual void EndFiltering(const LocalSearchFilter *filter, bool reject)=0
std::string DebugString() const override
Definition: constraint_solveri.h:1748
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
Definition: constraint_solveri.h:679
virtual void SetDurationRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
~SymmetryBreaker() override
Definition: constraint_solveri.h:1891
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
After the initial propagation.
bool AreAllBooleans(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2828
This class is a reversible growing array.
Definition: constraint_solveri.h:2357
~ModelParser() override
const int number_of_nexts_
Definition: constraint_solveri.h:1443
~UnsortedNullableRevBitset()
Definition: constraint_solveri.h:2671
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:1413
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
DELAYED_PRIORITY is the lowest priority: Demons will be processed after VAR_PRIORITY and NORMAL_PRIOR...
Definition: constraint_solver.h:594
T * MutableLast()
Definition: constraint_solveri.h:201
SimpleRevFIFO< Demon * > delayed_bound_demons_
Definition: constraint_solveri.h:1879
virtual void EndFilterNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
int64 Value(int index) const
Definition: constraint_solveri.h:1726
virtual void EndConstraintInitialPropagation(Constraint *const constraint)=0
void SetIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &vars)
A BaseObject is the root of all reversibly allocated objects.
Definition: constraint_solver.h:3086
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:2504
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:2594
Definition: constraint_solveri.h:2045
bool IsIncreasingContiguous(const std::vector< T > &values)
Definition: constraint_solveri.h:2789
The class Iterator has two direct subclasses.
Definition: constraint_solver.h:3848
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:2706
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
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
This method attaches a demon that will watch any domain modification of the domain of the variable.
Definition: constraint_solveri.h:1858
SequenceVarLocalSearchHandler(SequenceVarLocalSearchOperator *op)
Definition: constraint_solveri.h:1067
void EndVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
std::string DebugString() const override
Definition: constraint_solveri.h:596
Definition: constraint_solveri.h:2031
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:2445
Definition: constraint_solveri.h:2041
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:1444
int NumFirstRanked() const
Definition: constraint_solveri.h:2580
std::string DebugString() const override
Definition: constraint_solveri.h:1677
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:1395
virtual void InsertVarConstantConstantExpression(IntExpr *const expression, IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type)=0
std::string BaseName() const override
Returns a base name for automatic naming.
Definition: constraint_solveri.h:1872
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
This is the main callback of the demon.
Definition: constraint_solveri.h:751
void OnRevertChanges(int64 index)
Definition: constraint_solveri.h:988
bool IsIncremental() const override
Definition: constraint_solveri.h:1689
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:2739
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
void OnAddVars()
Definition: constraint_solveri.h:989
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:1332
virtual void SetStartMin(IntervalVar *const var, int64 new_min)=0
IntervalVar modifiers.
~SearchLog() override
void operator++()
Definition: constraint_solveri.h:162
virtual void SetDurationMin(IntervalVar *const var, int64 new_min)=0
void Incr(Solver *const s)
Definition: constraint_solver.h:3700
This is the base class for building an Lns operator.
Definition: constraint_solveri.h:1208
~ChangeValue() override
Definition: constraint_solveri.h:2017
~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:1391
SequenceVarLocalSearchHandler(const SequenceVarLocalSearchHandler &other)
Definition: constraint_solveri.h:1065
bool IsVarSynced(int index) const
Definition: constraint_solveri.h:1730
virtual void BeginNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
virtual void BeginDemonRun(Demon *const demon)=0
SymmetryBreaker()
Definition: constraint_solveri.h:1889
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.
IntVar * IsGreaterOrEqual(int64 constant) override
void SetToOne(Solver *const solver, int64 pos)
Sets the 'pos' bit.
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
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:1338
~LocalSearchMonitor() override
The base class of all search logs that periodically outputs information when the search is running.
Definition: constraint_solveri.h:1916
bool IsPathStart(int64 node) const
Definition: constraint_solveri.h:1507
void VisitSequenceVariable(const SequenceVar *const variable) override
void SetValue(int64 v)
Definition: constraint_solver.h:4578
bool AreAllBoundTo(const std::vector< IntVar * > &vars, int64 value)
Returns true if all variables are assigned to 'value'.
Definition: constraint_solveri.h:2846
int64 GetActiveAlternativeSibling(int node) const
Returns the active node in the alternative set of the sibling of the given node.
Definition: constraint_solveri.h:1435
void SetIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &vars)
Reversible Immutable MultiMap class.
Definition: constraint_solveri.h:288
const E & Element(const V *const var) const
Definition: constraint_solver.h:4834
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.
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:1103
virtual void InsertVarArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &vars, VarArrayExpressionType type)=0
int64 OldNext(int64 node) const
Definition: constraint_solveri.h:1347
Base class of the local search operators dedicated to path modifications (a path is a set of nodes li...
Definition: constraint_solveri.h:1261
~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_solver.h:92
CallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:552
VarConstantArrayExpressionType
Definition: constraint_solveri.h:2039
virtual bool IsIncremental() const
Definition: constraint_solveri.h:846
void Clear(Solver *const solver)
Definition: constraint_solveri.h:2509
ExprExprExpressionType
Definition: constraint_solveri.h:2002
bool IsInactive(int64 node) const
Returns true if node is inactive.
Definition: constraint_solveri.h:1385
int64 PosIntDivUp(int64 e, int64 v)
Definition: constraint_solveri.h:2884
Definition: constraint_solveri.h:2018
bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2749
bool AreAllNull(const std::vector< T > &values)
Definition: constraint_solveri.h:2744
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
This method is called when a valid solution is found.
std::string DebugString() const
Definition: constraint_solveri.h:2612
~SequenceVarLocalSearchOperator() override
Definition: constraint_solveri.h:1108
virtual void RegisterDemon(Demon *const demon)=0
T At(int64 index) const
Definition: constraint_solveri.h:2370
Definition: constraint_solveri.h:1982
bool SetMin(int64 new_min)
Definition: constraint_solveri.h:1597
Simple PathOperator wrapper that also stores the current previous nodes, and is thus able to provide ...
Definition: constraint_solveri.h:1499
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:1447
int64 Value() const override
This method returns the value of the variable.
Definition: constraint_solveri.h:1850
~DelayedCallMethod0() override
Definition: constraint_solveri.h:675
void Insert(Solver *const solver, const T &elt)
Definition: constraint_solveri.h:2490
bool Bound() const override
Returns true if the min and the max of the expression are equal.
Definition: constraint_solveri.h:1849
void AddIntegerVariableEqualValueClause(IntVar *const var, int64 value)
void AppendToFragment(int index)
~VarLocalSearchOperator() override
Definition: constraint_solveri.h:829
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:558
T RemovedElement(int i) const
Definition: constraint_solveri.h:2484
void SetToOne(Solver *const solver, int64 index)
Sets the 'index' bit.
PathOperator(const std::vector< IntVar * > &next_vars, const std::vector< IntVar * > &path_vars, int number_of_base_nodes, bool skip_locally_optimal_paths, std::function< int(int64)> start_empty_path_class)
Builds an instance of PathOperator from next and path variables.
int ActiveWordSize() const
This method returns the number of non null 64 bit words in the bitset representation.
Definition: constraint_solveri.h:2687
void RefuteDecision(Decision *const decision) override
Before refuting the decision.
Base operator class for operators manipulating variables.
Definition: constraint_solveri.h:821
static const int kNoInserted
Definition: constraint_solveri.h:2442
~LocalSearchOperator() override
Definition: constraint_solveri.h:808
int64 Path(int64 node) const
Returns the index of the path to which node belongs in the current delta.
Definition: constraint_solveri.h:1295
const Val & Value(int64 index) const
Returns the value in the current assignment of the variable of given index.
Definition: constraint_solveri.h:850
RevBitMatrix(int64 rows, int64 columns)
~IntVarLocalSearchOperator() override
Definition: constraint_solveri.h:1042
~ArrayWithOffset() override
Definition: constraint_solveri.h:2329
virtual void BeginConstraintInitialPropagation(Constraint *const constraint)=0
Propagation events.
~RevBitMatrix()
ExprExprConstraintType
Definition: constraint_solveri.h:1985
void PopArgumentHolder()
RevBitSet(int64 size)
bool SkipUnchanged(int index) const override
Definition: constraint_solveri.h:2030
PathWithPreviousNodesOperator(const std::vector< IntVar * > &vars, const std::vector< IntVar * > &secondary_vars, int number_of_base_nodes, std::function< int(int64)> start_empty_path_class)
friend class SymmetryManager
Definition: constraint_solveri.h:1899
virtual bool HoldsDelta() const
Definition: constraint_solveri.h:816
DemonPriority
This enum represents the three possible priorities for a demon in the Solver queue.
Definition: constraint_solver.h:591
VarConstantConstantExpressionType
Definition: constraint_solveri.h:2034
virtual IntExpr * FindExprExprExpression(IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type) const =0
Expr Expr Expressions.
A sequence variable is a variable whose domain is a set of possible orderings of the interval variabl...
Definition: constraint_solver.h:4441
void VisitIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &arguments) override
void NoMoreSolutions() override
When the search tree is finished.
Specialization of LocalSearchOperator built from an array of IntVars which specifies the scope of the...
Definition: constraint_solveri.h:1033
void RankLast(Solver *const solver, int elt)
Definition: constraint_solveri.h:2600
~CallMethod3() override
Definition: constraint_solveri.h:631
bool ValueFromAssignent(const Assignment &assignment, IntVar *var, int64 index, int64 *value)
Definition: constraint_solveri.h:976
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
Creates a domain iterator.
virtual void SetValue(IntVar *const var, int64 value)=0
std::vector< int > assignment_indices_
Definition: constraint_solveri.h:941
The class IntVar is a subset of IntExpr.
Definition: constraint_solver.h:3931
bool Contains(const V *const var) const
Definition: constraint_solver.h:4817
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:1637
virtual void OnSynchronize(const Assignment *delta)
Definition: constraint_solveri.h:1733
int64 bit_size() const
Returns the number of bits given in the constructor of the bitset.
Definition: constraint_solveri.h:2702
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
void OnRevertChanges(int64 index)
Definition: constraint_solveri.h:1173
virtual void BeginAcceptNeighbor(const LocalSearchOperator *op)=0
IntVarElement * FastAdd(IntVar *const var)
Adds without checking if variable has been previously added.
A Decision represents a choice point in the search tree.
Definition: constraint_solver.h:3162
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.
bool IsArrayConstant(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2719
SparseBitset delta_changes_
Definition: constraint_solveri.h:945
VarConstantConstantConstraintType
Definition: constraint_solveri.h:1980
bool IsIncreasing(const std::vector< T > &values)
Definition: constraint_solveri.h:2799
void WhenBound(Demon *d) override
This method attaches a demon that will be awakened when the variable is bound.
VarLocalSearchOperator(std::vector< V * > vars, Handler var_handler)
Definition: constraint_solveri.h:824
DelayedCallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:672
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:711
void BeginInitialPropagation() override
Before the initial propagation.
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
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:2021
virtual void RestoreValue()=0
int64 GetActiveInAlternativeSet(int alternative_index) const
Returns the active node in the given alternative set.
Definition: constraint_solveri.h:1424
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:1118
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:1307
~DelayedCallMethod2() override
Definition: constraint_solveri.h:749
void RemoveValue(int64 v) override
This method removes the value 'v' from the domain of the variable.
std::string DebugString() const override
const std::vector< int64 > & path_starts() const
Returns the vector of path start nodes.
Definition: constraint_solveri.h:1311
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:1129
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.
void SetValue(Solver *const s, const T &val)
Definition: constraint_solver.h:3675
SequenceVarLocalSearchOperator()
Definition: constraint_solveri.h:1102
ExprExprConstantExpressionType
Definition: constraint_solveri.h:2016
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...
~PathOperator() override
Definition: constraint_solveri.h:1280
Implements a complete cache for model elements: expressions and constraints.
Definition: constraint_solveri.h:1964
bool RevSubtract(Solver *const solver, const std::vector< uint64 > &mask)
This method subtracts the mask from the active bitset.
ModelParser()
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:633
bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2759
virtual void SetRange(IntExpr *const expr, int64 new_min, int64 new_max)=0
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:1313
void Synchronize(const Assignment *assignment, const Assignment *delta) override
This method should not be overridden.
VarArrayExpressionType
Definition: constraint_solveri.h:2049
void SetIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
std::string DebugString() const override
Definition: constraint_solveri.h:1813
VarLocalSearchOperator()
Definition: constraint_solveri.h:823
virtual bool MakeNeighbor()=0
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:2835
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
std::vector< int64 > ToInt64Vector(const std::vector< int > &input)
RevPartialSequence(const std::vector< int > &items)
Definition: constraint_solveri.h:2554
void BeginVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
std::string DebugString() const override
Definition: constraint_solveri.h:1514
uint64 Size() const override
This method returns the number of values in the domain of the variable.
virtual int64 ModifyValue(int64 index, int64 value)=0
bool IsCardinalityOne() const
Does it contains only one bit set?
int64 word_size() const
Returns the number of 64 bit words used to store the bitset.
Definition: constraint_solveri.h:2704
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:1326
Base operator class for operators manipulating IntVars.
Definition: constraint_solveri.h:951
~RevImmutableMultiMap()
Definition: constraint_solveri.h:298
VarLocalSearchOperator< SequenceVar, std::vector< int >, SequenceVarLocalSearchHandler > SequenceVarLocalSearchOperatorTemplate
Definition: constraint_solveri.h:1097
virtual bool NextFragment()=0
void OnAddVars()
Definition: constraint_solveri.h:1177
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 Activated() const
Definition: constraint_solver.h:4538
bool ContainsKey(const K &key) const
Returns true if the multi-map contains at least one instance of 'key'.
Definition: constraint_solveri.h:303
int64 Prev(int64 node) const
Definition: constraint_solveri.h:1509
virtual void Start(const Assignment *assignment)=0
virtual T Evaluate(int64 index) const
Definition: constraint_solveri.h:2331
int AddAlternativeSet(const std::vector< int64 > &alternative_set)
Handling node alternatives.
Definition: constraint_solveri.h:1400
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:1126
void SetNext(int64 from, int64 to, int64 path)
Sets 'to' to be the node after 'from' on the given path.
Definition: constraint_solveri.h:1371
virtual void SetPerformed(IntervalVar *const var, bool value)=0
IntContainer * MutableIntVarContainer()
Definition: constraint_solver.h:5083
void Clear()
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
virtual void RankLast(SequenceVar *const var, int index)=0
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:2457
IntVarLocalSearchOperator(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:1037
The class IntExpr is the base of all integer expressions in constraint programming.
Definition: constraint_solver.h:3770
virtual void PushContext(const std::string &context)=0
IntVarLocalSearchOperator()
Definition: constraint_solveri.h:1036
void Reset() override
int Size() const
Definition: constraint_solveri.h:1724
void RemoveInterval(int64 l, int64 u) override
This method removes the interval 'l' .
std::string DebugString() const override
Definition: constraint_solveri.h:717
BaseIntExpr(Solver *const s)
Definition: constraint_solveri.h:111
virtual void BeginFiltering(const LocalSearchFilter *filter)=0
SequenceVarLocalSearchHandler()
Definition: constraint_solveri.h:1064
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:953
A search monitor is a simple set of callbacks to monitor all search events.
Definition: constraint_solver.h:3569
void SetIntegerArgument(const std::string &arg_name, int64 value)
Setters.
void Remove(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2499
void OnNodeInitialization() override
Called by OnStart() after initializing node information.
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:2587
virtual void InsertExprExprConstraint(Constraint *const ct, IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type)=0
~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:1382
LocalSearchMonitor(Solver *const solver)
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:519
std::string DebugString() const override
Definition: constraint_solveri.h:2343
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
bool AreAllStrictlyNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2784
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:1690
bool cleared_
Definition: constraint_solveri.h:946
IntVar * Var(int index) const
Definition: constraint_solveri.h:1725
const_iterator begin() const
Definition: constraint_solveri.h:2513
SimpleRevFIFO< Demon * > bound_demons_
Definition: constraint_solveri.h:1878
VarConstantConstraintType
Definition: constraint_solveri.h:1972
int64 Cardinality() const
Returns the number of bits set to one.
bool SetMax(int64 new_max)
Definition: constraint_solveri.h:1600
void RevInsert(Solver *const solver, int64 index, T value)
Definition: constraint_solveri.h:2380
void Synchronize(const Assignment *assignment, const Assignment *delta) override
Synchronizes all filters to assignment.
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
Attach a demon that will watch the min or the max of the expression.
Definition: constraint_solveri.h:1857
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:2779
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:1887
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
virtual void BeginOperatorStart()=0
Local search operator events.
int64 OldPath(int64 node) const
Definition: constraint_solveri.h:1352
A constraint is the main modeling object.
Definition: constraint_solver.h:3518
void SetSequenceArgument(const std::string &arg_name, SequenceVar *const var)
virtual ~ModelCache()
void AcceptUncheckedNeighbor() override
After accepting an unchecked neighbor during local search.
~PathWithPreviousNodesOperator() override
Definition: constraint_solveri.h:1505
bool AreAllBound(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2819
void Maintain()
const IntTupleSet & FindIntegerMatrixArgumentOrDie(const std::string &arg_name) const
int NumLastRanked() const
Definition: constraint_solveri.h:2582
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:1995
int VarType() const override
Definition: constraint_solveri.h:1864
Definition: constraint_solveri.h:2046
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:2809
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:2201
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:1633
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
T * RevAlloc(T *object)
Registers the given object as being reversible.
Definition: constraint_solver.h:774
std::string DebugString() const override
Definition: constraint_solveri.h:683
virtual void SetNextBaseToIncrement(int64 base_index)
Set the next base to increment on next iteration.
Definition: constraint_solveri.h:1343
~CallMethod1() override
Definition: constraint_solveri.h:556
This is a special class to represent a 'residual' set of T.
Definition: constraint_solveri.h:2440
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
const SequenceContainer & SequenceVarContainer() const
Definition: constraint_solver.h:5090
SequenceVar * Var() const
Definition: constraint_solver.h:4715
This class represent a reversible FIFO structure.
Definition: constraint_solver.h:150
int64 size() const
Returns the number of interval vars in the sequence.
Definition: constraint_solver.h:4517
void ApplyDecision(Decision *const decision) override
Before applying the decision.
virtual void Clear()=0
bool HasFragments() const override
Definition: constraint_solveri.h:1216
Matrix version of the RevBitSet class.
Definition: constraint_solveri.h:470
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)
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:2578
This class represents a reversible bitset.
Definition: constraint_solveri.h:2666
virtual void InsertVarConstantConstantConstraint(Constraint *const ct, IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type)=0
void Install() override
Install itself on the solver.
An Assignment is a variable -> domains mapping, used to report solutions to the user.
Definition: constraint_solver.h:4931
virtual void SetDurationMax(IntervalVar *const var, int64 new_max)=0
void SetForwardSequence(const std::vector< int > &forward_sequence)
IntVar * IsLessOrEqual(int64 constant) override
void SetRange(int64 mi, int64 ma) override
This method sets both the min and the max of the expression.
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().
virtual void EndAcceptNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
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:2690
void VisitIntegerExpressionArgument(const std::string &arg_name, IntExpr *const argument) override
Variables.
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:592
Definition: constraint_solveri.h:2035
static const int kUnboundBooleanVarValue
Definition: constraint_solveri.h:1837
int64 GetActiveAlternativeNode(int node) const
Returns the active node in the alternative set of the given node.
Definition: constraint_solveri.h:1430
This class encapsulates an objective.
Definition: constraint_solver.h:4138
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:2322
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:1111
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.
void Deactivate()
Definition: constraint_solver.h:4537
virtual IntExpr * FindExprExprConstantExpression(IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type) const =0
Expr Expr Constant Expressions.
Solver * solver() const
Definition: constraint_solver.h:3642
std::vector< Val > values_
Definition: constraint_solveri.h:938
void Commit()
void VisitIntegerVariable(const IntVar *const variable, IntExpr *const delegate) override
The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...
Definition: constraint_solver.h:4708
void SetMax(int64 m) override
std::string DebugString() const override
bool ValueFromAssignent(const Assignment &assignment, SequenceVar *var, int64 index, std::vector< int > *value)
Definition: constraint_solveri.h:1155
int64 PosIntDivDown(int64 e, int64 v)
Definition: constraint_solveri.h:2893
Defines operators which change the value of variables; each neighbor corresponds to one modified vari...
Definition: constraint_solveri.h:1232
virtual void Revert()
Cancels the changes made by the last Relax()/Accept() calls.
Definition: constraint_solveri.h:1660
const std::vector< IntVar * > & FindIntegerVariableArrayArgumentOrDie(const std::string &arg_name) const
void Install() override
Install itself on the solver.
Demon proxy to a method on the constraint with three arguments.
Definition: constraint_solveri.h:620
int64 Next(int64 node) const
Returns the node after node in the current delta.
Definition: constraint_solveri.h:1288
E * MutableElement(const V *const var)
Definition: constraint_solver.h:4821
const std::vector< int64 > & FindIntegerArrayArgumentOrDie(const std::string &arg_name) const
const std::vector< int > & ForwardSequence() const
CallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:514
--— RevPartialSequence --—
Definition: constraint_solveri.h:2552
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.
void SetForwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1115
VoidConstraintType
Definition: constraint_solveri.h:1966
RevGrowingArray(int64 block_size)
Definition: constraint_solveri.h:2359
bool MakeOneNeighbor() override
This method should not be overridden. Override MakeNeighbor() instead.
const std::vector< int > & OldSequence(int64 index) const
Definition: constraint_solveri.h:1112
virtual IntExpr * FindVarArrayConstantArrayExpression(const std::vector< IntVar * > &vars, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type) const =0
Var Array Constant Array Expressions.
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:1666
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 Deactivate(int64 index)
Definition: constraint_solveri.h:867
int64 MaxVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2855
std::vector< Val > old_values_
Definition: constraint_solveri.h:939
A Demon is the base element of a propagation queue.
Definition: constraint_solver.h:3235
virtual int64 GetSynchronizedObjectiveValue() const
Objective value from last time Synchronize() was called.
Definition: constraint_solveri.h:1663
void Decr(Solver *const s)
Definition: constraint_solver.h:3702
Interval variables are often used in scheduling.
Definition: constraint_solver.h:4287
void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
Definition: constraint_solveri.h:2875
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:1565
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
~CallMethod0() override
Definition: constraint_solveri.h:517
void SetValue(int64 index, T value)
Definition: constraint_solveri.h:2337
std::string DebugString() const override
Definition: constraint_solveri.h:759
~DelayedCallMethod1() override
Definition: constraint_solveri.h:709
~RevGrowingArray()
Definition: constraint_solveri.h:2364
const Val & OldValue(int64 index) const
Definition: constraint_solveri.h:857
virtual void RankNotFirst(SequenceVar *const var, int index)=0
virtual void BeginMakeNextNeighbor(const LocalSearchOperator *op)=0
virtual bool IsIncremental() const
Definition: constraint_solveri.h:1650
~BooleanVar() override
Definition: constraint_solveri.h:1842
std::vector< Val > prev_values_
Definition: constraint_solveri.h:940
void SetBackwardSequence(const std::vector< int > &backward_sequence)
Demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:512
RevPartialSequence(int size)
Definition: constraint_solveri.h:2566
BooleanVar(Solver *const s, const std::string &name="")
Definition: constraint_solveri.h:1839
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:2729
int num_items() const
Definition: constraint_solveri.h:300
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:677
bool FindIndex(IntVar *const var, int64 *index) const
Definition: constraint_solveri.h:1713
virtual void InitFragments()
void SetTypeName(const std::string &type_name)
A DecisionVisitor is used to inspect a decision.
Definition: constraint_solver.h:3183
std::string DebugString() const override
Definition: constraint_solveri.h:560
Definition: constraint_solveri.h:2058
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:1693
virtual void SetEndMax(IntervalVar *const var, int64 new_max)=0
void VisitSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &arguments) override
SequenceContainer * MutableSequenceVarContainer()
Definition: constraint_solver.h:5093
std::vector< V * > vars_
Definition: constraint_solveri.h:937
bool IsRanked(int elt) const
Definition: constraint_solveri.h:2606
Definition: constraint_solveri.h:2036
bool AreAllNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2774
std::string ParameterDebugString(P param)
Definition: constraint_solveri.h:538
virtual void RankNotLast(SequenceVar *const var, int index)=0
VarArrayConstantArrayExpressionType
Definition: constraint_solveri.h:2044
virtual void InsertVarConstantArrayExpression(IntExpr *const expression, IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type)=0