C++ Reference
C++ Reference: Routing
constraint_solveri.h
Go to the documentation of this file.
133 };
1531 int64 GetActiveInAlternativeSet(int alternative_index) const {
2076 VOID_FALSE_CONSTRAINT = 0,
2082 VAR_CONSTANT_EQUALITY = 0,
2090 VAR_CONSTANT_CONSTANT_BETWEEN = 0,
2095 EXPR_EXPR_EQUALITY = 0,
2105 EXPR_OPPOSITE = 0,
2112 EXPR_EXPR_DIFFERENCE = 0,
2126 EXPR_EXPR_CONSTANT_CONDITIONAL = 0,
2131 EXPR_CONSTANT_DIFFERENCE = 0,
2144 VAR_CONSTANT_CONSTANT_SEMI_CONTINUOUS = 0,
2149 VAR_CONSTANT_ARRAY_ELEMENT = 0,
2154 VAR_ARRAY_CONSTANT_ARRAY_SCAL_PROD = 0,
2159 VAR_ARRAY_MAX = 0,
2166 VAR_ARRAY_CONSTANT_INDEX = 0,
Argument Holder: useful when visiting a model.
Definition: constraint_solveri.h:2310
const std::vector< IntVar * > & FindIntegerVariableArrayArgumentOrDie(const std::string &arg_name) const
bool HasIntegerVariableArrayArgument(const std::string &arg_name) const
int64 FindIntegerArgumentWithDefault(const std::string &arg_name, int64 def) const
Getters.
void SetSequenceArgument(const std::string &arg_name, SequenceVar *const var)
const IntTupleSet & FindIntegerMatrixArgumentOrDie(const std::string &arg_name) const
void SetIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values)
void SetIntegerExpressionArgument(const std::string &arg_name, IntExpr *const expr)
void SetTypeName(const std::string &type_name)
void SetIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &vars)
const std::vector< int64 > & FindIntegerArrayArgumentOrDie(const std::string &arg_name) const
IntExpr * FindIntegerExpressionArgumentOrDie(const std::string &arg_name) const
void SetSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &vars)
void SetIntervalArgument(const std::string &arg_name, IntervalVar *const var)
void SetIntegerArgument(const std::string &arg_name, int64 value)
Setters.
const std::string & TypeName() const
Type of the argument.
void SetIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values)
bool HasIntegerExpressionArgument(const std::string &arg_name) const
Checks if arguments exist.
void SetIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &vars)
int64 FindIntegerArgumentOrDie(const std::string &arg_name) const
ArrayWithOffset(int64 index_min, int64 index_max)
Definition: constraint_solveri.h:2431
virtual T Evaluate(int64 index) const
Definition: constraint_solveri.h:2440
~ArrayWithOffset() override
Definition: constraint_solveri.h:2438
void SetValue(int64 index, T value)
Definition: constraint_solveri.h:2446
std::string DebugString() const override
Definition: constraint_solveri.h:2452
E * MutableElement(const V *const var)
Definition: constraint_solver.h:4928
bool Contains(const V *const var) const
Definition: constraint_solver.h:4924
const E & Element(const V *const var) const
Definition: constraint_solver.h:4941
void Deactivate()
Definition: constraint_solver.h:4644
bool Activated() const
Definition: constraint_solver.h:4645
An Assignment is a variable -> domains mapping, used to report solutions to the user.
Definition: constraint_solver.h:5038
IntContainer * MutableIntVarContainer()
Definition: constraint_solver.h:5190
const IntContainer & IntVarContainer() const
Definition: constraint_solver.h:5189
const SequenceContainer & SequenceVarContainer() const
Definition: constraint_solver.h:5197
SequenceContainer * MutableSequenceVarContainer()
Definition: constraint_solver.h:5200
void Clear()
IntVarElement * FastAdd(IntVar *const var)
Adds without checking if variable has been previously added.
This is the base class for all expressions that are not variables.
Definition: constraint_solveri.h:109
BaseIntExpr(Solver *const s)
Definition: constraint_solveri.h:111
virtual IntVar * CastToVar()
~BaseIntExpr() override
Definition: constraint_solveri.h:112
This is the base class for building an Lns operator.
Definition: constraint_solveri.h:1266
virtual bool NextFragment()=0
~BaseLns() override
bool HasFragments() const override
Definition: constraint_solveri.h:1274
virtual void InitFragments()
void AppendToFragment(int index)
BaseLns(const std::vector< IntVar * > &vars)
int FragmentSize() const
bool MakeOneNeighbor() override
This method should not be overridden. Override NextFragment() instead.
A BaseObject is the root of all reversibly allocated objects.
Definition: constraint_solver.h:3152
int VarType() const override
Definition: constraint_solveri.h:1971
IntVar * IsGreaterOrEqual(int64 constant) override
void RemoveInterval(int64 l, int64 u) override
This method removes the interval 'l' .
IntVarIterator * MakeHoleIterator(bool reversible) const override
Creates a hole iterator.
IntVar * IsLessOrEqual(int64 constant) override
virtual void RestoreValue()=0
bool Bound() const override
Returns true if the min and the max of the expression are equal.
Definition: constraint_solveri.h:1956
void SetMax(int64 m) override
void WhenBound(Demon *d) override
This method attaches a demon that will be awakened when the variable is bound.
bool Contains(int64 v) const override
This method returns whether the value 'v' is in the domain of the variable.
void WhenRange(Demon *d) override
Attach a demon that will watch the min or the max of the expression.
Definition: constraint_solveri.h:1964
SimpleRevFIFO< Demon * > delayed_bound_demons_
Definition: constraint_solveri.h:1986
int64 Value() const override
This method returns the value of the variable.
Definition: constraint_solveri.h:1957
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:1965
static const int kUnboundBooleanVarValue
Definition: constraint_solveri.h:1944
void SetRange(int64 mi, int64 ma) override
This method sets both the min and the max of the expression.
void RemoveValue(int64 v) override
This method removes the value 'v' from the domain of the variable.
SimpleRevFIFO< Demon * > bound_demons_
Definition: constraint_solveri.h:1985
IntVar * IsDifferent(int64 constant) override
void SetMin(int64 m) override
std::string BaseName() const override
Returns a base name for automatic naming.
Definition: constraint_solveri.h:1979
std::string DebugString() const override
BooleanVar(Solver *const s, const std::string &name="")
Definition: constraint_solveri.h:1946
IntVarIterator * MakeDomainIterator(bool reversible) const override
Creates a domain iterator.
uint64 Size() const override
This method returns the number of values in the domain of the variable.
~BooleanVar() override
Definition: constraint_solveri.h:1949
Demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:505
~CallMethod0() override
Definition: constraint_solveri.h:510
CallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:507
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:512
std::string DebugString() const override
Definition: constraint_solveri.h:514
Demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:543
~CallMethod1() override
Definition: constraint_solveri.h:549
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:551
std::string DebugString() const override
Definition: constraint_solveri.h:553
CallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:545
Demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:573
CallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:575
~CallMethod2() override
Definition: constraint_solveri.h:583
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:585
std::string DebugString() const override
Definition: constraint_solveri.h:589
Demon proxy to a method on the constraint with three arguments.
Definition: constraint_solveri.h:613
~CallMethod3() override
Definition: constraint_solveri.h:624
CallMethod3(T *const ct, void(T::*method)(P, Q, R), const std::string &name, P param1, Q param2, R param3)
Definition: constraint_solveri.h:615
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:626
std::string DebugString() const override
Definition: constraint_solveri.h:630
Defines operators which change the value of variables; each neighbor corresponds to one modified vari...
Definition: constraint_solveri.h:1290
ChangeValue(const std::vector< IntVar * > &vars)
~ChangeValue() override
virtual int64 ModifyValue(int64 index, int64 value)=0
bool MakeOneNeighbor() override
This method should not be overridden. Override ModifyValue() instead.
A constraint is the main modeling object.
Definition: constraint_solver.h:3584
A Decision represents a choice point in the search tree.
Definition: constraint_solver.h:3228
A DecisionVisitor is used to inspect a decision.
Definition: constraint_solver.h:3249
Low-priority demon proxy to a method on the constraint with no arguments.
Definition: constraint_solveri.h:663
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
Definition: constraint_solveri.h:672
~DelayedCallMethod0() override
Definition: constraint_solveri.h:668
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:670
DelayedCallMethod0(T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:665
std::string DebugString() const override
Definition: constraint_solveri.h:676
Low-priority demon proxy to a method on the constraint with one argument.
Definition: constraint_solveri.h:696
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
Definition: constraint_solveri.h:706
DelayedCallMethod1(T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:698
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:704
std::string DebugString() const override
Definition: constraint_solveri.h:710
~DelayedCallMethod1() override
Definition: constraint_solveri.h:702
Low-priority demon proxy to a method on the constraint with two arguments.
Definition: constraint_solveri.h:732
Solver::DemonPriority priority() const override
This method returns the priority of the demon.
Definition: constraint_solveri.h:748
~DelayedCallMethod2() override
Definition: constraint_solveri.h:742
DelayedCallMethod2(T *const ct, void(T::*method)(P, Q), const std::string &name, P param1, Q param2)
Definition: constraint_solveri.h:734
void Run(Solver *const s) override
This is the main callback of the demon.
Definition: constraint_solveri.h:744
std::string DebugString() const override
Definition: constraint_solveri.h:752
A Demon is the base element of a propagation queue.
Definition: constraint_solver.h:3301
The class IntExpr is the base of all integer expressions in constraint programming.
Definition: constraint_solver.h:3836
void SetValue(int64 v)
Definition: constraint_solver.h:4685
The class IntVar is a subset of IntExpr.
Definition: constraint_solver.h:3997
The class Iterator has two direct subclasses.
Definition: constraint_solver.h:3914
void SynchronizeOnAssignment(const Assignment *assignment)
virtual void OnSynchronize(const Assignment *delta)
Definition: constraint_solveri.h:1840
bool FindIndex(IntVar *const var, int64 *index) const
Definition: constraint_solveri.h:1820
int Size() const
Definition: constraint_solveri.h:1831
~IntVarLocalSearchFilter() override
void Synchronize(const Assignment *assignment, const Assignment *delta) override
This method should not be overridden.
IntVarLocalSearchFilter(const std::vector< IntVar * > &vars)
IntVar * Var(int index) const
Definition: constraint_solveri.h:1832
int64 Value(int index) const
Definition: constraint_solveri.h:1833
void AddVars(const std::vector< IntVar * > &vars)
Add variables to "track" to the filter.
bool IsVarSynced(int index) const
Definition: constraint_solveri.h:1837
void OnRevertChanges(int64 index, int64 value)
Definition: constraint_solveri.h:1109
void OnAddVars()
Definition: constraint_solveri.h:978
IntVarLocalSearchHandler()
Definition: constraint_solveri.h:948
IntVarLocalSearchHandler(const IntVarLocalSearchHandler &other)
Definition: constraint_solveri.h:949
bool ValueFromAssignment(const Assignment &assignment, IntVar *var, int64 index, int64 *value)
Definition: constraint_solveri.h:1092
IntVarLocalSearchHandler(IntVarLocalSearchOperator *op)
Definition: constraint_solveri.h:951
void AddToAssignment(IntVar *var, int64 value, bool active, std::vector< int > *assignment_indices, int64 index, Assignment *assignment) const
Definition: constraint_solveri.h:952
Specialization of LocalSearchOperator built from an array of IntVars which specifies the scope of the...
Definition: constraint_solveri.h:1028
int64 InverseValue(int64 index) const
Definition: constraint_solveri.h:1072
void SetOldInverseValue(int64 index, int64 value)
Definition: constraint_solveri.h:1082
bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta) override
Redefines MakeNextNeighbor to export a simpler interface.
void SetInverseValue(int64 index, int64 value)
Definition: constraint_solveri.h:1078
friend class IntVarLocalSearchHandler
Definition: constraint_solveri.h:1059
virtual bool MakeOneNeighbor()
Creates a new neighbor.
~IntVarLocalSearchOperator() override
Definition: constraint_solveri.h:1049
bool IsInverseValue(int64 index) const
Definition: constraint_solveri.h:1067
IntVarLocalSearchOperator()
Definition: constraint_solveri.h:1030
IntVarLocalSearchOperator(const std::vector< IntVar * > &vars, bool keep_inverse_values=false)
Definition: constraint_solveri.h:1034
int64 OldInverseValue(int64 index) const
Definition: constraint_solveri.h:1074
Interval variables are often used in scheduling.
Definition: constraint_solver.h:4394
Local Search Filters are used for fast neighbor pruning.
Definition: constraint_solveri.h:1719
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...
virtual int64 GetSynchronizedObjectiveValue() const
Objective value from last time Synchronize() was called.
Definition: constraint_solveri.h:1754
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...
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:1723
virtual bool IsIncremental() const
Definition: constraint_solveri.h:1738
virtual void Revert()
Cancels the changes made by the last Relax()/Accept() calls.
Definition: constraint_solveri.h:1748
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:1725
virtual int64 GetAcceptedObjectiveValue() const
Objective value from the last time Accept() was called and returned true.
Definition: constraint_solveri.h:1757
Filter manager: when a move is made, filters are executed to decide whether the solution is feasible ...
Definition: constraint_solveri.h:1763
LocalSearchFilterManager(std::vector< FilterEvent > filter_events)
FilterEventType
Definition: constraint_solveri.h:1767
LocalSearchFilterManager(std::vector< LocalSearchFilter * > filters)
int64 GetSynchronizedObjectiveValue() const
Definition: constraint_solveri.h:1794
int64 GetAcceptedObjectiveValue() const
Definition: constraint_solveri.h:1795
bool Accept(LocalSearchMonitor *const monitor, const Assignment *delta, const Assignment *deltadelta, int64 objective_min, int64 objective_max)
Returns true iff all filters return true, and the sum of their accepted objectives is between objecti...
void Synchronize(const Assignment *assignment, const Assignment *delta)
Synchronizes all filters to assignment.
std::string DebugString() const override
Definition: constraint_solveri.h:1773
virtual void EndMakeNextNeighbor(const LocalSearchOperator *op, bool neighbor_found, const Assignment *delta, const Assignment *deltadelta)=0
void Install() override
Install itself on the solver.
virtual void EndAcceptNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
virtual void EndOperatorStart()=0
virtual void BeginMakeNextNeighbor(const LocalSearchOperator *op)=0
virtual void BeginOperatorStart()=0
Local search operator events.
virtual void EndFiltering(const LocalSearchFilter *filter, bool reject)=0
virtual void BeginFilterNeighbor(const LocalSearchOperator *op)=0
virtual void BeginAcceptNeighbor(const LocalSearchOperator *op)=0
virtual void BeginFiltering(const LocalSearchFilter *filter)=0
LocalSearchMonitor(Solver *const solver)
virtual void EndFilterNeighbor(const LocalSearchOperator *op, bool neighbor_found)=0
std::string DebugString() const override
Definition: constraint_solveri.h:1920
~LocalSearchMonitor() override
The base class for all local search operators.
Definition: constraint_solveri.h:798
virtual bool HasFragments() const
Definition: constraint_solveri.h:808
virtual bool HoldsDelta() const
Definition: constraint_solveri.h:809
virtual const LocalSearchOperator * Self() const
Definition: constraint_solveri.h:806
virtual void Reset()
Definition: constraint_solveri.h:804
virtual bool MakeNextNeighbor(Assignment *delta, Assignment *deltadelta)=0
LocalSearchOperator()
Definition: constraint_solveri.h:800
virtual void Start(const Assignment *assignment)=0
~LocalSearchOperator() override
Definition: constraint_solveri.h:801
bool StateIsValid() const
Definition: constraint_solveri.h:1651
LocalSearchVariable AddVariable(int64 initial_min, int64 initial_max)
void Commit()
void Revert()
bool SetMax(int64 new_max)
Definition: constraint_solveri.h:1686
bool SetMin(int64 new_min)
Definition: constraint_solveri.h:1683
Implements a complete cache for model elements: expressions and constraints.
Definition: constraint_solveri.h:2073
VoidConstraintType
Definition: constraint_solveri.h:2075
@ VOID_CONSTRAINT_MAX
Definition: constraint_solveri.h:2078
@ VOID_TRUE_CONSTRAINT
Definition: constraint_solveri.h:2077
virtual IntExpr * FindExprExprConstantExpression(IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type) const =0
Expr Expr Constant Expressions.
virtual IntExpr * FindExprConstantExpression(IntExpr *const expr, int64 value, ExprConstantExpressionType type) const =0
Expr Constant Expressions.
ExprExpressionType
Definition: constraint_solveri.h:2104
@ EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2108
ExprConstantExpressionType
Definition: constraint_solveri.h:2130
@ EXPR_CONSTANT_PROD
Definition: constraint_solveri.h:2133
@ EXPR_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2141
@ EXPR_CONSTANT_IS_EQUAL
Definition: constraint_solveri.h:2137
@ EXPR_CONSTANT_IS_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2139
@ EXPR_CONSTANT_MAX
Definition: constraint_solveri.h:2134
@ EXPR_CONSTANT_IS_NOT_EQUAL
Definition: constraint_solveri.h:2138
@ EXPR_CONSTANT_IS_LESS_OR_EQUAL
Definition: constraint_solveri.h:2140
@ EXPR_CONSTANT_MIN
Definition: constraint_solveri.h:2135
@ EXPR_CONSTANT_SUM
Definition: constraint_solveri.h:2136
@ EXPR_CONSTANT_DIVIDE
Definition: constraint_solveri.h:2132
VarConstantConstraintType
Definition: constraint_solveri.h:2081
@ VAR_CONSTANT_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2083
@ VAR_CONSTANT_NON_EQUALITY
Definition: constraint_solveri.h:2085
@ VAR_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2086
@ VAR_CONSTANT_LESS_OR_EQUAL
Definition: constraint_solveri.h:2084
virtual void InsertExprConstantExpression(IntExpr *const expression, IntExpr *const var, int64 value, ExprConstantExpressionType type)=0
virtual void InsertVarConstantConstantConstraint(Constraint *const ct, IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type)=0
virtual void InsertExprExprExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type)=0
VarArrayConstantArrayExpressionType
Definition: constraint_solveri.h:2153
@ VAR_ARRAY_CONSTANT_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2155
virtual void InsertVarConstantConstraint(Constraint *const ct, IntVar *const var, int64 value, VarConstantConstraintType type)=0
VarConstantConstantExpressionType
Definition: constraint_solveri.h:2143
@ VAR_CONSTANT_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2145
Solver * solver() const
VarConstantConstantConstraintType
Definition: constraint_solveri.h:2089
@ VAR_CONSTANT_CONSTANT_CONSTRAINT_MAX
Definition: constraint_solveri.h:2091
virtual void InsertVarArrayConstantExpression(IntExpr *const expression, const std::vector< IntVar * > &var, int64 value, VarArrayConstantExpressionType type)=0
virtual void InsertVoidConstraint(Constraint *const ct, VoidConstraintType type)=0
ExprExprExpressionType
Definition: constraint_solveri.h:2111
@ EXPR_EXPR_IS_EQUAL
Definition: constraint_solveri.h:2120
@ EXPR_EXPR_PROD
Definition: constraint_solveri.h:2113
@ EXPR_EXPR_EXPRESSION_MAX
Definition: constraint_solveri.h:2122
@ EXPR_EXPR_IS_LESS
Definition: constraint_solveri.h:2118
@ EXPR_EXPR_IS_LESS_OR_EQUAL
Definition: constraint_solveri.h:2119
@ EXPR_EXPR_IS_NOT_EQUAL
Definition: constraint_solveri.h:2121
virtual void InsertExprExprConstantExpression(IntExpr *const expression, IntExpr *const var1, IntExpr *const var2, int64 constant, ExprExprConstantExpressionType type)=0
ExprExprConstraintType
Definition: constraint_solveri.h:2094
@ EXPR_EXPR_GREATER
Definition: constraint_solveri.h:2096
@ EXPR_EXPR_LESS
Definition: constraint_solveri.h:2098
@ EXPR_EXPR_NON_EQUALITY
Definition: constraint_solveri.h:2100
@ EXPR_EXPR_GREATER_OR_EQUAL
Definition: constraint_solveri.h:2097
@ EXPR_EXPR_CONSTRAINT_MAX
Definition: constraint_solveri.h:2101
@ EXPR_EXPR_LESS_OR_EQUAL
Definition: constraint_solveri.h:2099
virtual void InsertVarArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &vars, VarArrayExpressionType type)=0
virtual Constraint * FindVarConstantConstantConstraint(IntVar *const var, int64 value1, int64 value2, VarConstantConstantConstraintType type) const =0
Var Constant Constant Constraints.
virtual Constraint * FindExprExprConstraint(IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type) const =0
Expr Expr Constraints.
virtual IntExpr * FindExprExpression(IntExpr *const expr, ExprExpressionType type) const =0
Expr Expressions.
virtual void InsertVarArrayConstantArrayExpression(IntExpr *const expression, const std::vector< IntVar * > &var, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type)=0
virtual void Clear()=0
virtual void InsertVarConstantConstantExpression(IntExpr *const expression, IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type)=0
virtual Constraint * FindVoidConstraint(VoidConstraintType type) const =0
Void constraints.
virtual IntExpr * FindVarConstantConstantExpression(IntVar *const var, int64 value1, int64 value2, VarConstantConstantExpressionType type) const =0
Var Constant Constant Expressions.
ExprExprConstantExpressionType
Definition: constraint_solveri.h:2125
@ EXPR_EXPR_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2127
virtual IntExpr * FindVarArrayConstantArrayExpression(const std::vector< IntVar * > &vars, const std::vector< int64 > &values, VarArrayConstantArrayExpressionType type) const =0
Var Array Constant Array Expressions.
VarArrayConstantExpressionType
Definition: constraint_solveri.h:2165
@ VAR_ARRAY_CONSTANT_EXPRESSION_MAX
Definition: constraint_solveri.h:2167
ModelCache(Solver *const solver)
virtual Constraint * FindVarConstantConstraint(IntVar *const var, int64 value, VarConstantConstraintType type) const =0
Var Constant Constraints.
virtual ~ModelCache()
VarArrayExpressionType
Definition: constraint_solveri.h:2158
@ VAR_ARRAY_EXPRESSION_MAX
Definition: constraint_solveri.h:2162
virtual IntExpr * FindExprExprExpression(IntExpr *const var1, IntExpr *const var2, ExprExprExpressionType type) const =0
Expr Expr Expressions.
VarConstantArrayExpressionType
Definition: constraint_solveri.h:2148
@ 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.
virtual IntExpr * FindVarArrayExpression(const std::vector< IntVar * > &vars, VarArrayExpressionType type) const =0
Var Array Expressions.
virtual void InsertVarConstantArrayExpression(IntExpr *const expression, IntVar *const var, const std::vector< int64 > &values, VarConstantArrayExpressionType type)=0
virtual IntExpr * FindVarArrayConstantExpression(const std::vector< IntVar * > &vars, int64 value, VarArrayConstantExpressionType type) const =0
Var Array Constant Expressions.
virtual void InsertExprExpression(IntExpr *const expression, IntExpr *const expr, ExprExpressionType type)=0
virtual void InsertExprExprConstraint(Constraint *const ct, IntExpr *const expr1, IntExpr *const expr2, ExprExprConstraintType type)=0
void PushArgumentHolder()
void VisitIntervalVariable(const IntervalVar *const variable, const std::string &operation, int64 value, IntervalVar *const delegate) override
void BeginVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
void BeginVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
void VisitIntegerExpressionArgument(const std::string &arg_name, IntExpr *const argument) override
Variables.
void VisitSequenceVariable(const SequenceVar *const variable) override
void VisitIntervalArgument(const std::string &arg_name, IntervalVar *const argument) override
Visit interval argument.
void VisitSequenceArrayArgument(const std::string &arg_name, const std::vector< SequenceVar * > &arguments) override
ModelParser()
void VisitIntegerVariable(const IntVar *const variable, const std::string &operation, int64 value, IntVar *const delegate) override
void EndVisitConstraint(const std::string &type_name, const Constraint *const constraint) override
void EndVisitModel(const std::string &solver_name) override
void VisitSequenceArgument(const std::string &arg_name, SequenceVar *const argument) override
Visit sequence argument.
void VisitIntegerArrayArgument(const std::string &arg_name, const std::vector< int64 > &values) override
~ModelParser() override
void VisitIntegerVariableArrayArgument(const std::string &arg_name, const std::vector< IntVar * > &arguments) override
void VisitIntegerVariable(const IntVar *const variable, IntExpr *const delegate) override
void VisitIntegerMatrixArgument(const std::string &arg_name, const IntTupleSet &values) override
void BeginVisitModel(const std::string &solver_name) override
Header/footers.
void VisitIntegerArgument(const std::string &arg_name, int64 value) override
Integer arguments.
void PopArgumentHolder()
void EndVisitIntegerExpression(const std::string &type_name, const IntExpr *const expr) override
void VisitIntervalArrayArgument(const std::string &arg_name, const std::vector< IntervalVar * > &arguments) override
ArgumentHolder * Top() const
void Decr(Solver *const s)
Definition: constraint_solver.h:3768
void Incr(Solver *const s)
Definition: constraint_solver.h:3766
This class encapsulates an objective.
Definition: constraint_solver.h:4204
Base class of the local search operators dedicated to path modifications (a path is a set of nodes li...
Definition: constraint_solveri.h:1319
int64 BaseAlternativeNode(int i) const
Returns the alternative node for the ith base node.
Definition: constraint_solveri.h:1380
virtual bool MakeNeighbor()=0
bool SwapActiveAndInactive(int64 active, int64 inactive)
Replaces active by inactive in the current path, making active inactive.
int PathClass(int i) const
Returns the class of the path of the ith base node.
Definition: constraint_solveri.h:1406
virtual void OnNodeInitialization()
Called by OnStart() after initializing node information.
Definition: constraint_solveri.h:1373
int64 BaseNode(int i) const
Returns the ith base node of the operator.
Definition: constraint_solveri.h:1376
bool IsInactive(int64 node) const
Returns true if node is inactive.
Definition: constraint_solveri.h:1492
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:1486
virtual void SetNextBaseToIncrement(int64 base_index)
Set the next base to increment on next iteration.
Definition: constraint_solveri.h:1436
virtual bool ConsiderAlternatives(int64 base_index) const
Indicates if alternatives should be considered when iterating over base nodes.
Definition: constraint_solveri.h:1441
virtual bool RestartAtPathStartOnSynchronize()
When the operator is being synchronized with a new solution (when Start() is called),...
Definition: constraint_solveri.h:1419
int64 OldPath(int64 node) const
Definition: constraint_solveri.h:1453
std::vector< int64 > start_to_path_
Definition: constraint_solveri.h:1564
int BaseSiblingAlternative(int i) const
Returns the alternative for the sibling of the ith base node.
Definition: constraint_solveri.h:1388
const std::vector< int64 > & path_starts() const
Returns the vector of path start nodes.
Definition: constraint_solveri.h:1404
bool ReverseChain(int64 before_chain, int64 after_chain, int64 *chain_last)
Reverses the chain starting after before_chain and ending before after_chain.
int64 OldNext(int64 node) const
Definition: constraint_solveri.h:1443
~PathOperator() override
Definition: constraint_solveri.h:1338
int BaseAlternative(int i) const
Returns the alternative for the ith base node.
Definition: constraint_solveri.h:1378
void SetNext(int64 from, int64 to, int64 path)
Sets 'to' to be the node after 'from' on the given path.
Definition: constraint_solveri.h:1474
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:1520
bool MakeActive(int64 node, int64 destination)
Insert the inactive node after destination.
int AddAlternativeSet(const std::vector< int64 > &alternative_set)
Handling node alternatives.
Definition: constraint_solveri.h:1507
int64 Prev(int64 node) const
Returns the node before node in the current delta.
Definition: constraint_solveri.h:1352
int64 GetActiveAlternativeNode(int node) const
Returns the active node in the alternative set of the given node.
Definition: constraint_solveri.h:1537
int64 StartNode(int i) const
Returns the start node of the ith base node.
Definition: constraint_solveri.h:1402
bool SkipUnchanged(int index) const override
int64 Next(int64 node) const
Returns the node after node in the current delta.
Definition: constraint_solveri.h:1346
const int number_of_nexts_
Definition: constraint_solveri.h:1560
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:1502
bool IsPathStart(int64 node) const
Returns true if node is the first node on the path.
Definition: constraint_solveri.h:1489
int64 BaseSiblingAlternativeNode(int i) const
Returns the alternative node for the sibling of the ith base node.
Definition: constraint_solveri.h:1392
int next_base_to_increment_
Definition: constraint_solveri.h:1562
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:1431
int GetSiblingAlternativeIndex(int node) const
Returns the index of the alternative set of the sibling of node.
Definition: constraint_solveri.h:1541
bool MakeOneNeighbor() override
This method should not be overridden. Override MakeNeighbor() instead.
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:1425
bool MakeChainInactive(int64 before_chain, int64 chain_end)
Makes the nodes on the chain starting after before_chain and ending at chain_end inactive.
virtual bool InitPosition() const
Returns true if the operator needs to restart its initial position at each call to Start()
Definition: constraint_solveri.h:1498
int64 Path(int64 node) const
Returns the index of the path to which node belongs in the current delta.
Definition: constraint_solveri.h:1360
const bool ignore_path_vars_
Definition: constraint_solveri.h:1561
int64 OldPrev(int64 node) const
Definition: constraint_solveri.h:1448
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 ...
void Reset() override
int64 GetActiveAlternativeSibling(int node) const
Returns the active node in the alternative set of the sibling of the given node.
Definition: constraint_solveri.h:1548
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.
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 ...
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3240
int operator*() const
Definition: constraint_solveri.h:3239
Iterator & operator++()
Definition: constraint_solveri.h:3235
Iterator begin() const
Definition: constraint_solveri.h:3259
Chain(const CommittedNode *begin_node, const CommittedNode *end_node)
Definition: constraint_solveri.h:3253
int NumNodes() const
Definition: constraint_solveri.h:3256
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3280
Chain operator*() const
Definition: constraint_solveri.h:3276
Iterator & operator++()
Definition: constraint_solveri.h:3272
Iterator begin() const
Definition: constraint_solveri.h:3300
Iterator end() const
Definition: constraint_solveri.h:3301
ChainRange(const ChainBounds *const begin_chain, const ChainBounds *const end_chain, const CommittedNode *const first_node)
Definition: constraint_solveri.h:3295
bool operator!=(Iterator other) const
Definition: constraint_solveri.h:3328
int operator*() const
Definition: constraint_solveri.h:3327
Iterator & operator++()
Definition: constraint_solveri.h:3315
Iterator begin() const
Definition: constraint_solveri.h:3354
Iterator end() const
Definition: constraint_solveri.h:3357
NodeRange(const ChainBounds *begin_chain, const ChainBounds *end_chain, const CommittedNode *first_node)
Definition: constraint_solveri.h:3349
const std::vector< int > & ChangedPaths() const
Definition: constraint_solveri.h:3092
void CutChains()
bool IsInvalid() const
Definition: constraint_solveri.h:3118
ChainRange Chains(int path) const
void Commit()
NodeRange Nodes(int path) const
void Revert()
const std::vector< std::pair< int, int > > & ChangedArcs() const
Definition: constraint_solveri.h:3087
void ChangeNext(int node, int new_next)
Definition: constraint_solveri.h:3102
PathState(int num_nodes, std::vector< int > path_start, std::vector< int > path_end)
virtual void SetMin(IntVar *const var, int64 new_min)=0
IntVar modifiers.
void Install() override
Install itself on the solver.
virtual void RankLast(SequenceVar *const var, int index)=0
virtual void SetEndMin(IntervalVar *const var, int64 new_min)=0
~PropagationMonitor() override
virtual void EndConstraintInitialPropagation(Constraint *const constraint)=0
virtual void SetValues(IntVar *const var, const std::vector< int64 > &values)=0
virtual void SetRange(IntVar *const var, int64 new_min, int64 new_max)=0
virtual void SetMax(IntVar *const var, int64 new_max)=0
virtual void RemoveValue(IntVar *const var, int64 value)=0
virtual void SetEndMax(IntervalVar *const var, int64 new_max)=0
virtual void RankNotLast(SequenceVar *const var, int index)=0
virtual void RankNotFirst(SequenceVar *const var, int index)=0
virtual void BeginDemonRun(Demon *const demon)=0
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 PushContext(const std::string &context)=0
virtual void RemoveInterval(IntVar *const var, int64 imin, int64 imax)=0
virtual void RemoveValues(IntVar *const var, const std::vector< int64 > &values)=0
virtual void SetStartMin(IntervalVar *const var, int64 new_min)=0
IntervalVar modifiers.
virtual void SetValue(IntVar *const var, int64 value)=0
virtual void SetStartRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
virtual void BeginNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
virtual void EndNestedConstraintInitialPropagation(Constraint *const parent, Constraint *const nested)=0
virtual void SetRange(IntExpr *const expr, int64 new_min, int64 new_max)=0
virtual void SetPerformed(IntervalVar *const var, bool value)=0
virtual void StartProcessingIntegerVariable(IntVar *const var)=0
virtual void SetDurationRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
virtual void BeginConstraintInitialPropagation(Constraint *const constraint)=0
Propagation events.
virtual void SetDurationMin(IntervalVar *const var, int64 new_min)=0
virtual void SetMax(IntExpr *const expr, int64 new_max)=0
virtual void SetStartMax(IntervalVar *const var, int64 new_max)=0
virtual void EndDemonRun(Demon *const demon)=0
virtual void RegisterDemon(Demon *const demon)=0
PropagationMonitor(Solver *const solver)
virtual void EndProcessingIntegerVariable(IntVar *const var)=0
virtual void PopContext()=0
virtual void SetDurationMax(IntervalVar *const var, int64 new_max)=0
virtual void SetMin(IntExpr *const expr, int64 new_min)=0
IntExpr modifiers.
std::string DebugString() const override
Definition: constraint_solveri.h:1855
virtual void RankFirst(SequenceVar *const var, int index)=0
SequenceVar modifiers.
virtual void SetEndRange(IntervalVar *const var, int64 new_min, int64 new_max)=0
Matrix version of the RevBitSet class.
Definition: constraint_solveri.h:463
bool IsSet(int64 row, int64 column) const
Returns whether the 'column' bit in the 'row' row is set.
Definition: constraint_solveri.h:473
int64 GetFirstBit(int row, int start) const
Returns the first bit in the row 'row' which position is >= 'start'.
~RevBitMatrix()
RevBitMatrix(int64 rows, int64 columns)
void SetToOne(Solver *const solver, int64 row, int64 column)
Sets the 'column' bit in the 'row' row.
int64 Cardinality(int row) const
Returns the number of bits set to one in the 'row' row.
bool IsCardinalityOne(int row) const
Does the 'row' bitset contains only one bit set?
void SetToZero(Solver *const solver, int64 row, int64 column)
Erases the 'column' bit in the 'row' row.
bool IsCardinalityZero(int row) const
Is bitset of row 'row' null?
This class represents a reversible bitset.
Definition: constraint_solveri.h:428
bool IsCardinalityOne() const
Does it contains only one bit set?
bool IsSet(int64 index) const
Returns whether the 'index' bit is set.
void SetToOne(Solver *const solver, int64 index)
Sets the 'index' bit.
int64 GetFirstBit(int start) const
Gets the index of the first bit set starting from start.
RevBitSet(int64 size)
int64 Cardinality() const
Returns the number of bits set to one.
~RevBitSet()
void SetToZero(Solver *const solver, int64 index)
Erases the 'index' bit.
This class is a reversible growing array.
Definition: constraint_solveri.h:2466
T At(int64 index) const
Definition: constraint_solveri.h:2479
void RevInsert(Solver *const solver, int64 index, T value)
Definition: constraint_solveri.h:2489
~RevGrowingArray()
Definition: constraint_solveri.h:2473
RevGrowingArray(int64 block_size)
Definition: constraint_solveri.h:2468
void SetValue(Solver *const s, const T &val)
Definition: constraint_solver.h:3741
Reversible Immutable MultiMap class.
Definition: constraint_solveri.h:281
void Insert(const K &key, const V &value)
Inserts (key, value) in the multi-map.
Definition: constraint_solveri.h:324
RevImmutableMultiMap(Solver *const solver, int initial_size)
Definition: constraint_solveri.h:283
~RevImmutableMultiMap()
Definition: constraint_solveri.h:291
bool ContainsKey(const K &key) const
Returns true if the multi-map contains at least one instance of 'key'.
Definition: constraint_solveri.h:296
int num_items() const
Definition: constraint_solveri.h:293
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:311
This is a special class to represent a 'residual' set of T.
Definition: constraint_solveri.h:2549
void Insert(Solver *const solver, const T &elt)
Definition: constraint_solveri.h:2599
RevIntSet(int capacity)
Capacity is the fixed size of the set (it cannot grow).
Definition: constraint_solveri.h:2554
const_iterator begin() const
Definition: constraint_solveri.h:2622
T RemovedElement(int i) const
Definition: constraint_solveri.h:2593
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
void Restore(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2613
void Remove(Solver *const solver, const T &value_index)
Definition: constraint_solveri.h:2608
void Clear(Solver *const solver)
Definition: constraint_solveri.h:2618
--— RevPartialSequence --—
Definition: constraint_solveri.h:2661
int NumLastRanked() const
Definition: constraint_solveri.h:2691
RevPartialSequence(int size)
Definition: constraint_solveri.h:2675
int NumFirstRanked() const
Definition: constraint_solveri.h:2689
bool IsRanked(int elt) const
Definition: constraint_solveri.h:2715
std::string DebugString() const
Definition: constraint_solveri.h:2721
void RankLast(Solver *const solver, int elt)
Definition: constraint_solveri.h:2709
~RevPartialSequence()
Definition: constraint_solveri.h:2687
void RankFirst(Solver *const solver, int elt)
Definition: constraint_solveri.h:2703
const int & operator[](int index) const
Definition: constraint_solveri.h:2696
RevPartialSequence(const std::vector< int > &items)
Definition: constraint_solveri.h:2663
A reversible switch that can switch once from false to true.
Definition: constraint_solveri.h:389
void Switch(Solver *const solver)
Definition: constraint_solveri.h:395
The base class of all search logs that periodically outputs information when the search is running.
Definition: constraint_solveri.h:2023
void RefuteDecision(Decision *const decision) override
Before refuting the decision.
virtual void OutputLine(const std::string &line)
SearchLog(Solver *const s, OptimizeVar *const obj, IntVar *const var, double scaling_factor, double offset, std::function< std::string()> display_callback, bool display_on_new_solutions_only, int period)
~SearchLog() override
void BeginInitialPropagation() override
Before the initial propagation.
void NoMoreSolutions() override
When the search tree is finished.
void ApplyDecision(Decision *const decision) override
Before applying the decision.
void Maintain()
bool AtSolution() override
This method is called when a valid solution is found.
void OutputDecision()
std::string DebugString() const override
void AcceptUncheckedNeighbor() override
After accepting an unchecked neighbor during local search.
void EndInitialPropagation() override
After the initial propagation.
A search monitor is a simple set of callbacks to monitor all search events.
Definition: constraint_solver.h:3635
The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...
Definition: constraint_solver.h:4815
void SetBackwardSequence(const std::vector< int > &backward_sequence)
SequenceVar * Var() const
Definition: constraint_solver.h:4822
void SetForwardSequence(const std::vector< int > &forward_sequence)
const std::vector< int > & ForwardSequence() const
A sequence variable is a variable whose domain is a set of possible orderings of the interval variabl...
Definition: constraint_solver.h:4548
int64 size() const
Returns the number of interval vars in the sequence.
Definition: constraint_solver.h:4624
SequenceVarLocalSearchHandler(const SequenceVarLocalSearchHandler &other)
Definition: constraint_solveri.h:1122
SequenceVarLocalSearchHandler()
Definition: constraint_solveri.h:1121
SequenceVarLocalSearchHandler(SequenceVarLocalSearchOperator *op)
Definition: constraint_solveri.h:1124
bool ValueFromAssignment(const Assignment &assignment, SequenceVar *var, int64 index, std::vector< int > *value)
Definition: constraint_solveri.h:1212
void OnRevertChanges(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1230
void OnAddVars()
Definition: constraint_solveri.h:1235
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:1186
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:1168
~SequenceVarLocalSearchOperator() override
Definition: constraint_solveri.h:1165
std::vector< std::vector< int > > backward_values_
Definition: constraint_solveri.h:1183
void SetBackwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1175
SequenceVarLocalSearchOperator(const std::vector< SequenceVar * > &vars)
Definition: constraint_solveri.h:1160
void SetForwardSequence(int64 index, const std::vector< int > &value)
Definition: constraint_solveri.h:1172
const std::vector< int > & OldSequence(int64 index) const
Definition: constraint_solveri.h:1169
SequenceVarLocalSearchOperator()
Definition: constraint_solveri.h:1159
This iterator is not stable with respect to deletion.
Definition: constraint_solveri.h:156
void operator++()
Definition: constraint_solveri.h:162
T operator*() const
Definition: constraint_solveri.h:161
Iterator(const SimpleRevFIFO< T > *l)
Definition: constraint_solveri.h:158
This class represent a reversible FIFO structure.
Definition: constraint_solveri.h:145
T * MutableLast()
Definition: constraint_solveri.h:201
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
void Push(Solver *const s, T val)
Definition: constraint_solveri.h:177
SimpleRevFIFO()
Definition: constraint_solveri.h:175
This class represents a small reversible bitset (size <= 64).
Definition: constraint_solveri.h:403
void SetToZero(Solver *const solver, int64 pos)
Erases the 'pos' bit.
void SetToOne(Solver *const solver, int64 pos)
Sets the 'pos' bit.
int64 GetFirstOne() const
Gets the index of the first bit set starting from 0.
SmallRevBitSet(int64 size)
int64 Cardinality() const
Returns the number of bits set to one.
DemonPriority
This enum represents the three possible priorities for a demon in the Solver queue.
Definition: constraint_solver.h:613
@ DELAYED_PRIORITY
DELAYED_PRIORITY is the lowest priority: Demons will be processed after VAR_PRIORITY and NORMAL_PRIOR...
Definition: constraint_solver.h:616
T * RevAlloc(T *object)
Registers the given object as being reversible.
Definition: constraint_solver.h:796
A symmetry breaker is an object that will visit a decision and create the 'symmetrical' decision in r...
Definition: constraint_solveri.h:1994
SymmetryBreaker()
Definition: constraint_solveri.h:1996
void AddIntegerVariableEqualValueClause(IntVar *const var, int64 value)
void AddIntegerVariableLessOrEqualValueClause(IntVar *const var, int64 value)
void AddIntegerVariableGreaterOrEqualValueClause(IntVar *const var, int64 value)
~SymmetryBreaker() override
Definition: constraint_solveri.h:1998
bool Check() const
void Commit()
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)
This class represents a reversible bitset.
Definition: constraint_solveri.h:2775
bool RevSubtract(Solver *const solver, const std::vector< uint64 > &mask)
This method subtracts the mask from the active bitset.
int64 word_size() const
Returns the number of 64 bit words used to store the bitset.
Definition: constraint_solveri.h:2813
~UnsortedNullableRevBitset()
Definition: constraint_solveri.h:2780
bool RevAnd(Solver *const solver, const std::vector< uint64 > &mask)
This method ANDs the mask with the active bitset.
int64 bit_size() const
Returns the number of bits given in the constructor of the bitset.
Definition: constraint_solveri.h:2811
bool Empty() const
This method returns true if the active bitset is null.
Definition: constraint_solveri.h:2799
const RevIntSet< int > & active_words() const
Returns the set of active word indices.
Definition: constraint_solveri.h:2815
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.
void Init(Solver *const solver, const std::vector< uint64 > &mask)
This methods overwrites the active bitset with the mask.
UnsortedNullableRevBitset(int bit_size)
Size is the number of bits to store in the bitset.
int ActiveWordSize() const
This method returns the number of non null 64 bit words in the bitset representation.
Definition: constraint_solveri.h:2796
Base operator class for operators manipulating variables.
Definition: constraint_solveri.h:814
void RevertChanges(bool incremental)
Definition: constraint_solveri.h:888
std::vector< Val > old_values_
Definition: constraint_solveri.h:932
virtual bool SkipUnchanged(int index) const
Definition: constraint_solveri.h:849
int Size() const
Definition: constraint_solveri.h:840
bool HoldsDelta() const override
Definition: constraint_solveri.h:823
std::vector< Val > values_
Definition: constraint_solveri.h:931
SparseBitset delta_changes_
Definition: constraint_solveri.h:938
std::vector< Val > prev_values_
Definition: constraint_solveri.h:933
Bitset64 activated_
Definition: constraint_solveri.h:935
std::vector< int > assignment_indices_
Definition: constraint_solveri.h:934
void MarkChange(int64 index)
OnStart() should really be protected, but then SWIG doesn't see it.
Definition: constraint_solveri.h:925
const Val & Value(int64 index) const
Returns the value in the current assignment of the variable of given index.
Definition: constraint_solveri.h:843
SparseBitset changes_
Definition: constraint_solveri.h:937
bool cleared_
Definition: constraint_solveri.h:939
virtual bool IsIncremental() const
Definition: constraint_solveri.h:839
Handler var_handler_
Definition: constraint_solveri.h:940
bool ApplyChanges(Assignment *delta, Assignment *deltadelta) const
Definition: constraint_solveri.h:864
VarLocalSearchOperator(Handler var_handler)
Definition: constraint_solveri.h:817
virtual void OnStart()
Called by Start() after synchronizing the operator with the current assignment.
Definition: constraint_solveri.h:920
void Deactivate(int64 index)
Definition: constraint_solveri.h:860
std::vector< V * > vars_
Definition: constraint_solveri.h:930
VarLocalSearchOperator()
Definition: constraint_solveri.h:816
~VarLocalSearchOperator() override
Definition: constraint_solveri.h:822
Bitset64 was_activated_
Definition: constraint_solveri.h:936
void AddVars(const std::vector< V * > &vars)
Definition: constraint_solveri.h:901
void Start(const Assignment *assignment) override
This method should not be overridden.
Definition: constraint_solveri.h:826
void Activate(int64 index)
Definition: constraint_solveri.h:856
const Val & OldValue(int64 index) const
Definition: constraint_solveri.h:850
void SetValue(int64 index, const Val &value)
Definition: constraint_solveri.h:851
bool Activated(int64 index) const
Definition: constraint_solveri.h:855
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
Definition: constraint_solver.h:106
std::string ParameterDebugString(P param)
Definition: constraint_solveri.h:531
Demon * MakeDelayedConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:724
bool IsArrayConstant(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2828
bool AreAllLessOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2868
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:768
bool AreAllNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2883
bool AreAllGreaterOrEqual(const std::vector< T > &values, const T &value)
Definition: constraint_solveri.h:2858
bool IsIncreasing(const std::vector< T > &values)
Definition: constraint_solveri.h:2908
bool AreAllStrictlyPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2888
Demon * MakeConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:525
bool IsArrayBoolean(const std::vector< T > &values)
Definition: constraint_solveri.h:2838
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:605
Demon * MakeConstraintDemon1(Solver *const s, T *const ct, void(T::*method)(P), const std::string &name, P param1)
Definition: constraint_solveri.h:566
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
int64 MinVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2974
int64 PosIntDivUp(int64 e, int64 v)
Definition: constraint_solveri.h:2993
void FillValues(const std::vector< IntVar * > &vars, std::vector< int64 > *const values)
Definition: constraint_solveri.h:2984
bool AreAllBoundTo(const std::vector< IntVar * > &vars, int64 value)
Returns true if all variables are assigned to 'value'.
Definition: constraint_solveri.h:2955
bool AreAllBooleans(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2937
Demon * MakeDelayedConstraintDemon0(Solver *const s, T *const ct, void(T::*method)(), const std::string &name)
Definition: constraint_solveri.h:688
bool AreAllStrictlyNegative(const std::vector< T > &values)
Definition: constraint_solveri.h:2893
LocalSearchFilter * MakeUnaryDimensionFilter(Solver *solver, std::unique_ptr< UnaryDimensionChecker > checker)
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.
int64 PosIntDivDown(int64 e, int64 v)
Definition: constraint_solveri.h:2998
std::vector< int64 > ToInt64Vector(const std::vector< int > &input)
bool IsIncreasingContiguous(const std::vector< T > &values)
Definition: constraint_solveri.h:2898
bool AreAllNull(const std::vector< T > &values)
Definition: constraint_solveri.h:2853
bool AreAllPositive(const std::vector< T > &values)
Definition: constraint_solveri.h:2878
int64 MaxVarArray(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2964
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:648
VarLocalSearchOperator< SequenceVar, std::vector< int >, SequenceVarLocalSearchHandler > SequenceVarLocalSearchOperatorTemplate
Definition: constraint_solveri.h:1154
bool IsArrayInRange(const std::vector< IntVar * > &vars, T range_min, T range_max)
Definition: constraint_solveri.h:2918
bool AreAllOnes(const std::vector< T > &values)
Definition: constraint_solveri.h:2848
bool AreAllBound(const std::vector< IntVar * > &vars)
Definition: constraint_solveri.h:2928
LocalSearchFilter * MakePathStateFilter(Solver *solver, std::unique_ptr< PathState > path_state, const std::vector< IntVar * > &nexts)
LocalSearchFilter * filter
Definition: constraint_solveri.h:1769
FilterEventType event_type
Definition: constraint_solveri.h:1770
int64 min
Definition: constraint_solveri.h:3382
int64 max
Definition: constraint_solveri.h:3383