C++ Reference
C++ Reference: Routing
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:2878
VarArrayConstantExpressionType
Definition: constraint_solveri.h:2165
int64 MinVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2974
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:2084
bool Contains(int64 v) const override
int next_base_to_increment_
Definition: constraint_solveri.h:1567
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:1857
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:2000
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:2937
This class is a reversible growing array.
Definition: constraint_solveri.h:2466
int64 max
Definition: constraint_solveri.h:3376
~ModelParser() override
const int number_of_nexts_
Definition: constraint_solveri.h:1565
~UnsortedNullableRevBitset()
Definition: constraint_solveri.h:2780
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:1988
bool Accept(LocalSearchMonitor *const monitor, const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max)
Returns true iff all filters return true, and the sum of their accepted objectives is between objecti...
virtual void EndFilterNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
int64 Value(int index) const
Definition: constraint_solveri.h:1835
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:2613
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:2703
@ VOID_TRUE_CONSTRAINT
Definition: constraint_solveri.h:2077
@ VAR_ARRAY_CONSTANT_ARRAY_SCAL_PROD
Definition: constraint_solveri.h:2154
bool IsIncreasingContiguous(const std::vector< T > &values)
Definition: constraint_solveri.h:2898
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:2815
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:2136
SimpleRevFIFO()
Definition: constraint_solveri.h:175
virtual void EndNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
virtual void EndDemonRun(Demon *const demon)=0
int64 GetSynchronizedObjectiveValue() const
Definition: constraint_solveri.h:1796
void WhenDomain(Demon *d) override
Definition: constraint_solveri.h:1967
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:2132
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:2140
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:2554
@ VAR_CONSTANT_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2150
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:2689
@ EXPR_EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2122
IntVarLocalSearchHandler(const IntVarLocalSearchHandler &other)
Definition: constraint_solveri.h:956
std::string DebugString() const override
Definition: constraint_solveri.h:1775
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:1981
@ VAR_CONSTANT_CONSTANT_BETWEEN
Definition: constraint_solveri.h:2090
@ EXPR_EXPR_PROD
Definition: constraint_solveri.h:2113
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
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:2848
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:3252
~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:2095
~ChangeValue() override
@ EXPR_EXPR_CONSTANT_CONDITIONAL
Definition: constraint_solveri.h:2126
~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:1839
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:1998
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:2162
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:2141
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:2025
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:2955
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:2149
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.
LocalSearchFilter * filter
Definition: constraint_solveri.h:1771
void Synchronize(const Assignment *assignment, const Assignment *delta)
Synchronizes all filters to assignment.
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:2148
virtual bool IsIncremental() const
Definition: constraint_solveri.h:846
void Clear(Solver *const solver)
Definition: constraint_solveri.h:2618
ExprExprExpressionType
Definition: constraint_solveri.h:2111
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:2993
Chain operator*() const
Definition: constraint_solveri.h:3269
@ EXPR_EXPR_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2127
bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2858
bool AreAllNull(const std::vector< T > &values)
Definition: constraint_solveri.h:2853
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:2721
~SequenceVarLocalSearchOperator() override
Definition: constraint_solveri.h:1170
virtual void RegisterDemon(Demon *const demon)=0
T At(int64 index) const
Definition: constraint_solveri.h:2479
@ VAR_CONSTANT_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2091
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:1959
~DelayedCallMethod0() override
Definition: constraint_solveri.h:675
void Insert(Solver *const solver, const T &elt)
Definition: constraint_solveri.h:2599
bool Bound() const override
Definition: constraint_solveri.h:1958
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:2593
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:2796
void RefuteDecision(Decision *const decision) override
Base operator class for operators manipulating variables.
Definition: constraint_solveri.h:821
~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:2438
virtual void BeginConstraintInitialPropagation(Constraint *const constraint)=0
Propagation events.
~RevBitMatrix()
ExprExprConstraintType
Definition: constraint_solveri.h:2094
void PopArgumentHolder()
RevBitSet(int64 size)
bool SkipUnchanged(int index) const override
Filter manager: when a move is made, filters are executed to decide whether the solution is feasible ...
Definition: constraint_solveri.h:1765
@ EXPR_CONSTANT_IS_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2139
friend class SymmetryManager
Definition: constraint_solveri.h:2008
virtual bool HoldsDelta() const
Definition: constraint_solveri.h:816
VarConstantConstantExpressionType
Definition: constraint_solveri.h:2143
Iterator & operator++()
Definition: constraint_solveri.h:3228
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:2709
~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:1842
int64 bit_size() const
Returns the number of bits given in the constructor of the bitset.
Definition: constraint_solveri.h:2811
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:2133
bool IsArrayConstant(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2828
SparseBitset delta_changes_
Definition: constraint_solveri.h:945
VarConstantConstantConstraintType
Definition: constraint_solveri.h:2089
bool IsIncreasing(const std::vector< T > &values)
Definition: constraint_solveri.h:2908
void WhenBound(Demon *d) override
LocalSearchFilterManager(std::vector< LocalSearchFilter * > filters)
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:2130
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:2125
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:2119
~PathOperator() override
Definition: constraint_solveri.h:1343
Implements a complete cache for model elements: expressions and constraints.
Definition: constraint_solveri.h:2073
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:3246
ModelParser()
ChainRange Chains(int path) const
@ VAR_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2086
void ChangeNext(int node, int new_next)
Definition: constraint_solveri.h:3110
void Run(Solver *const s) override
Definition: constraint_solveri.h:633
IntVar * Var() override
@ EXPR_EXPR_GREATER
Definition: constraint_solveri.h:2096
NodeRange Nodes(int path) const
bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2868
virtual void SetRange(IntExpr *const expr, int64 new_min, int64 new_max)=0
@ EXPR_EXPR_IS_NOT_EQUAL
Definition: constraint_solveri.h:2121
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:2078
VarArrayExpressionType
Definition: constraint_solveri.h:2158
void SetIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
std::string DebugString() const override
Definition: constraint_solveri.h:1922
VarLocalSearchOperator()
Definition: constraint_solveri.h:823
virtual bool MakeNeighbor()=0
@ VAR_CONSTANT_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2083
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:2944
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:2138
std::vector< int64 > ToInt64Vector(const std::vector< int > &input)
RevPartialSequence(const std::vector< int > &items)
Definition: constraint_solveri.h:2663
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:3249
bool IsCardinalityOne() const
Does it contains only one bit set?
@ EXPR_EXPR_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2097
int64 word_size() const
Returns the number of 64 bit words used to store the bitset.
Definition: constraint_solveri.h:2813
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:3308
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:2440
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:2100
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:3232
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:2566
@ EXPR_CONSTANT_DIFFERENCE
Definition: constraint_solveri.h:2131
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:1833
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:3273
@ EXPR_CONSTANT_MIN
Definition: constraint_solveri.h:2135
BaseIntExpr(Solver *const s)
Definition: constraint_solveri.h:111
@ EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2108
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
virtual void Commit(const Assignment *delta, const Assignment *deltadelta)
Dual of Relax(), lets the filter know that the delta was accepted.
Definition: constraint_solveri.h:1730
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:2608
const int & operator[](int index) const
Definition: constraint_solveri.h:2696
virtual void InsertExprExprConstraint(Constraint *const ct, IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type)=0
@ EXPR_EXPR_CONSTRAINT_MAX
Definition: constraint_solveri.h:2101
~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:2452
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:3288
bool AreAllStrictlyNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2893
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.
bool cleared_
Definition: constraint_solveri.h:946
IntVar * Var(int index) const
Definition: constraint_solveri.h:1834
int operator*() const
Definition: constraint_solveri.h:3320
const_iterator begin() const
Definition: constraint_solveri.h:2622
SimpleRevFIFO< Demon * > bound_demons_
Definition: constraint_solveri.h:1987
VarConstantConstraintType
Definition: constraint_solveri.h:2081
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:2489
@ EXPR_EXPR_LESS
Definition: constraint_solveri.h:2098
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:1966
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:2888
A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
Definition: constraint_solveri.h:1996
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:3095
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:2928
void Maintain()
const IntTupleSet & FindIntegerMatrixArgumentOrDie(const std::string &arg_name) const
int NumLastRanked() const
Definition: constraint_solveri.h:2691
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:2104
int VarType() const override
Definition: constraint_solveri.h:1973
@ VAR_ARRAY_CONSTANT_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2155
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:2918
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:2310
Iterator end() const
Definition: constraint_solveri.h:3350
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:2166
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:2549
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
LocalSearchFilterManager(std::vector< FilterEvent > filter_events)
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:2137
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:3265
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:2687
This class represents a reversible bitset.
Definition: constraint_solveri.h:2775
PathState(int num_nodes, std::vector< int > path_start, std::vector< int > path_end)
@ VAR_CONSTANT_NON_EQUALITY
Definition: constraint_solveri.h:2085
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
bool IsPathStart(int64 node) const
Returns true if node is the first node on the path.
Definition: constraint_solveri.h:1494
@ kAccept
Definition: constraint_solveri.h:1769
virtual void EndAcceptNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
const std::vector< int > & ChangedPaths() const
Definition: constraint_solveri.h:3100
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:2799
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:2144
static const int kUnboundBooleanVarValue
Definition: constraint_solveri.h:1946
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:2431
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.
static constexpr int kNoInserted
Definition: constraint_solveri.h:2551
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
FilterEventType event_type
Definition: constraint_solveri.h:1772
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:3002
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:1753
const std::vector< IntVar * > & FindIntegerVariableArrayArgumentOrDie(const std::string &arg_name) const
Iterator begin() const
Definition: constraint_solveri.h:3347
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:2099
FilterEventType
Definition: constraint_solveri.h:1769
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:2661
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3233
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:2120
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:2075
RevGrowingArray(int64 block_size)
Definition: constraint_solveri.h:2468
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:2134
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:1759
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:2076
void Deactivate(int64 index)
Definition: constraint_solveri.h:867
int64 MaxVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2964
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:1756
void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
Definition: constraint_solveri.h:2984
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:3294
~CallMethod0() override
Definition: constraint_solveri.h:517
void SetValue(int64 index, T value)
Definition: constraint_solveri.h:2446
std::string DebugString() const override
Definition: constraint_solveri.h:759
~DelayedCallMethod1() override
Definition: constraint_solveri.h:709
~RevGrowingArray()
Definition: constraint_solveri.h:2473
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:1743
~BooleanVar() override
Definition: constraint_solveri.h:1951
std::vector< Val > prev_values_
Definition: constraint_solveri.h:940
@ EXPR_EXPR_DIFFERENCE
Definition: constraint_solveri.h:2112
Demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:512
RevPartialSequence(int size)
Definition: constraint_solveri.h:2675
@ EXPR_EXPR_IS_LESS
Definition: constraint_solveri.h:2118
Iterator begin() const
Definition: constraint_solveri.h:3293
BooleanVar(Solver *const s, const std::string &name="")
Definition: constraint_solveri.h:1948
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:2838
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:1822
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:2167
@ VAR_CONSTANT_EQUALITY
Definition: constraint_solveri.h:2082
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 OldPrev(int64 node) const
Definition: constraint_solveri.h:1453
int64 min
Definition: constraint_solveri.h:3375
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3321
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:3342
bool IsRanked(int elt) const
Definition: constraint_solveri.h:2715
IntVarLocalSearchHandler(IntVarLocalSearchOperator *op)
Definition: constraint_solveri.h:958
@ VAR_CONSTANT_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2145
bool AreAllNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2883
std::string ParameterDebugString(P param)
Definition: constraint_solveri.h:538
int64 GetAcceptedObjectiveValue() const
Definition: constraint_solveri.h:1797
virtual void RankNotLast(SequenceVar *const var, int index)=0
VarArrayConstantArrayExpressionType
Definition: constraint_solveri.h:2153
virtual void InsertVarConstantArrayExpression(IntExpr *const expression, IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type)=0