Constraint |
ModelCache.findExprExprConstraint(IntExpr expr1,
IntExpr expr2,
int type) |
Expr Expr Constraints.
|
Constraint |
ModelCache.findVarConstantConstantConstraint(IntVar var,
long value1,
long value2,
int type) |
Var Constant Constant Constraints.
|
Constraint |
ModelCache.findVarConstantConstraint(IntVar var,
long value,
int type) |
Var Constant Constraints.
|
Constraint |
ModelCache.findVoidConstraint(int type) |
Void constraints.
|
Constraint |
Solver.IntegerCastInfo.getMaintainer() |
|
Constraint |
Solver.makeAbsEquality(IntVar var,
IntVar abs_var) |
Creates the constraint abs(var) == abs_var.
|
Constraint |
Solver.makeAllDifferent(IntVar[] vars) |
All variables are pairwise different.
|
Constraint |
Solver.makeAllDifferent(IntVar[] vars,
boolean stronger_propagation) |
All variables are pairwise different.
|
Constraint |
Solver.makeAllDifferentExcept(IntVar[] vars,
long escape_value) |
All variables are pairwise different, unless they are assigned to
the escape value.
|
Constraint |
Solver.makeAllowedAssignment(IntVar[] vars,
IntTupleSet tuples) |
This method creates a constraint where the graph of the relation
between the variables is given in extension.
|
Constraint |
Solver.makeBetweenCt(IntExpr expr,
long l,
long u) |
(l <= expr <= u)
|
Constraint |
Solver.makeCircuit(IntVar[] nexts) |
Force the "nexts" variable to create a complete Hamiltonian path.
|
Constraint |
Solver.makeCount(IntVar[] vars,
long value,
long max_count) |
|{i | vars[i] == value}| == max_count
|
Constraint |
Solver.makeCount(IntVar[] vars,
long value,
IntVar max_count) |
|{i | vars[i] == value}| == max_count
|
Constraint |
Solver.makeCover(IntervalVar[] vars,
IntervalVar target_var) |
This constraint states that the target_var is the convex hull of
the intervals.
|
Constraint |
Solver.makeCumulative(IntervalVar[] intervals,
int[] demands,
long capacity,
java.lang.String name) |
This constraint forces that, for any integer t, the sum of the demands
corresponding to an interval containing t does not exceed the given
capacity.
Intervals and demands should be vectors of equal size.
Demands should only contain non-negative values.
|
Constraint |
Solver.makeCumulative(IntervalVar[] intervals,
int[] demands,
IntVar capacity,
java.lang.String name) |
This constraint enforces that, for any integer t, the sum of the demands
corresponding to an interval containing t does not exceed the given
capacity.
Intervals and demands should be vectors of equal size.
Demands should only contain non-negative values.
|
Constraint |
Solver.makeCumulative(IntervalVar[] intervals,
long[] demands,
long capacity,
java.lang.String name) |
This constraint forces that, for any integer t, the sum of the demands
corresponding to an interval containing t does not exceed the given
capacity.
Intervals and demands should be vectors of equal size.
Demands should only contain non-negative values.
|
Constraint |
Solver.makeCumulative(IntervalVar[] intervals,
long[] demands,
IntVar capacity,
java.lang.String name) |
This constraint forces that, for any integer t, the sum of the demands
corresponding to an interval containing t does not exceed the given
capacity.
Intervals and demands should be vectors of equal size.
Demands should only contain non-negative values.
|
Constraint |
Solver.makeCumulative(IntervalVar[] intervals,
IntVar[] demands,
long capacity,
java.lang.String name) |
This constraint enforces that, for any integer t, the sum of demands
corresponding to an interval containing t does not exceed the given
capacity.
Intervals and demands should be vectors of equal size.
Demands should be positive.
|
Constraint |
Solver.makeCumulative(IntervalVar[] intervals,
IntVar[] demands,
IntVar capacity,
java.lang.String name) |
This constraint enforces that, for any integer t, the sum of demands
corresponding to an interval containing t does not exceed the given
capacity.
Intervals and demands should be vectors of equal size.
Demands should be positive.
|
Constraint |
Solver.makeDelayedPathCumul(IntVar[] nexts,
IntVar[] active,
IntVar[] cumuls,
IntVar[] transits) |
Delayed version of the same constraint: propagation on the nexts variables
is delayed until all constraints have propagated.
|
Constraint |
Solver.makeDeviation(IntVar[] vars,
IntVar deviation_var,
long total_sum) |
Deviation constraint:
sum_i |n * vars[i] - total_sum| <= deviation_var and
sum_i vars[i] == total_sum
n = #vars
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
int[] card_min,
int[] card_max) |
Aggregated version of count with bounded cardinalities:
forall j in 0 ..
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
int[] values,
int[] card_min,
int[] card_max) |
Aggregated version of count with bounded cardinalities:
forall j in 0 ..
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
int[] values,
IntVar[] cards) |
Aggregated version of count: |{i | v[i] == values[j]}| == cards[j]
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
long[] card_min,
long[] card_max) |
Aggregated version of count with bounded cardinalities:
forall j in 0 ..
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
long[] values,
long[] card_min,
long[] card_max) |
Aggregated version of count with bounded cardinalities:
forall j in 0 ..
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
long[] values,
IntVar[] cards) |
Aggregated version of count: |{i | v[i] == values[j]}| == cards[j]
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
long card_min,
long card_max,
long card_size) |
Aggregated version of count with bounded cardinalities:
forall j in 0 ..
|
Constraint |
Solver.makeDistribute(IntVar[] vars,
IntVar[] cards) |
Aggregated version of count: |{i | v[i] == j}| == cards[j]
|
Constraint |
Solver.makeElementEquality(int[] vals,
IntVar index,
IntVar target) |
|
Constraint |
Solver.makeElementEquality(long[] vals,
IntVar index,
IntVar target) |
|
Constraint |
Solver.makeElementEquality(IntVar[] vars,
IntVar index,
long target) |
|
Constraint |
Solver.makeElementEquality(IntVar[] vars,
IntVar index,
IntVar target) |
|
Constraint |
Solver.makeEquality(IntervalVar var1,
IntervalVar var2) |
This constraints states that the two interval variables are equal.
|
Constraint |
Solver.makeEquality(IntExpr expr,
int value) |
expr == value
|
Constraint |
Solver.makeEquality(IntExpr expr,
long value) |
expr == value
|
Constraint |
Solver.makeEquality(IntExpr left,
IntExpr right) |
left == right
|
Constraint |
Solver.makeFalseConstraint() |
This constraint always fails.
|
Constraint |
Solver.makeFalseConstraint(java.lang.String explanation) |
|
Constraint |
Solver.makeGreater(IntExpr expr,
int value) |
expr > value
|
Constraint |
Solver.makeGreater(IntExpr expr,
long value) |
expr > value
|
Constraint |
Solver.makeGreater(IntExpr left,
IntExpr right) |
left > right
|
Constraint |
Solver.makeGreaterOrEqual(IntExpr expr,
int value) |
expr >= value
|
Constraint |
Solver.makeGreaterOrEqual(IntExpr expr,
long value) |
expr >= value
|
Constraint |
Solver.makeGreaterOrEqual(IntExpr left,
IntExpr right) |
left >= right
|
Constraint |
Solver.makeIfThenElseCt(IntVar condition,
IntExpr then_expr,
IntExpr else_expr,
IntVar target_var) |
Special cases with arrays of size two.
|
Constraint |
Solver.makeIndexOfConstraint(IntVar[] vars,
IntVar index,
long target) |
This constraint is a special case of the element constraint with
an array of integer variables, where the variables are all
different and the index variable is constrained such that
vars[index] == target.
|
Constraint |
Solver.makeIndexOfFirstMaxValueConstraint(IntVar index,
IntVar[] vars) |
Creates a constraint that binds the index variable to the index of the
first variable with the maximum value.
|
Constraint |
Solver.makeIndexOfFirstMinValueConstraint(IntVar index,
IntVar[] vars) |
Creates a constraint that binds the index variable to the index of the
first variable with the minimum value.
|
Constraint |
Solver.makeIntervalVarRelation(IntervalVar t,
int r,
long d) |
This method creates a relation between an interval var and a
date.
|
Constraint |
Solver.makeIntervalVarRelation(IntervalVar t1,
int r,
IntervalVar t2) |
This method creates a relation between two interval vars.
|
Constraint |
Solver.makeIntervalVarRelationWithDelay(IntervalVar t1,
int r,
IntervalVar t2,
long delay) |
This method creates a relation between two interval vars.
The given delay is added to the second interval.
i.e.: t1 STARTS_AFTER_END of t2 with a delay of 2
means t1 will start at least two units of time after the end of t2.
|
Constraint |
Solver.makeInversePermutationConstraint(IntVar[] left,
IntVar[] right) |
Creates a constraint that enforces that 'left' and 'right' both
represent permutations of [0..left.size()-1], and that 'right' is
the inverse permutation of 'left', i.e.
|
Constraint |
Solver.makeIsBetweenCt(IntExpr expr,
long l,
long u,
IntVar b) |
b == (l <= expr <= u)
|
Constraint |
Solver.makeIsDifferentCstCt(IntExpr var,
long value,
IntVar boolvar) |
boolvar == (var != value)
|
Constraint |
Solver.makeIsDifferentCstCt(IntExpr v1,
IntExpr v2,
IntVar b) |
b == (v1 != v2)
|
Constraint |
Solver.makeIsEqualCstCt(IntExpr var,
long value,
IntVar boolvar) |
boolvar == (var == value)
|
Constraint |
Solver.makeIsEqualVar(IntExpr v1,
IntExpr v2,
IntVar b) |
b == (v1 == v2)
|
Constraint |
Solver.makeIsGreaterCstCt(IntExpr v,
long c,
IntVar b) |
b == (v > c)
|
Constraint |
Solver.makeIsGreaterCt(IntExpr left,
IntExpr right,
IntVar b) |
b == (left > right)
|
Constraint |
Solver.makeIsGreaterOrEqualCstCt(IntExpr var,
long value,
IntVar boolvar) |
boolvar == (var >= value)
|
Constraint |
Solver.makeIsGreaterOrEqualCt(IntExpr left,
IntExpr right,
IntVar b) |
b == (left >= right)
|
Constraint |
Solver.makeIsLessCstCt(IntExpr v,
long c,
IntVar b) |
b == (v < c)
|
Constraint |
Solver.makeIsLessCt(IntExpr left,
IntExpr right,
IntVar b) |
b == (left < right)
|
Constraint |
Solver.makeIsLessOrEqualCstCt(IntExpr var,
long value,
IntVar boolvar) |
boolvar == (var <= value)
|
Constraint |
Solver.makeIsLessOrEqualCt(IntExpr left,
IntExpr right,
IntVar b) |
b == (left <= right)
|
Constraint |
Solver.MakeIsLexicalLessOrEqualWithOffsetsCt(IntVar[] left,
IntVar[] right,
long[] offsets,
IntVar boolvar) |
|
Constraint |
Solver.makeIsMemberCt(IntExpr expr,
int[] values,
IntVar boolvar) |
|
Constraint |
Solver.makeIsMemberCt(IntExpr expr,
long[] values,
IntVar boolvar) |
boolvar == (expr in set)
|
Constraint |
Solver.makeLess(IntExpr expr,
int value) |
expr < value
|
Constraint |
Solver.makeLess(IntExpr expr,
long value) |
expr < value
|
Constraint |
Solver.makeLess(IntExpr left,
IntExpr right) |
left < right
|
Constraint |
Solver.makeLessOrEqual(IntExpr expr,
int value) |
expr <= value
|
Constraint |
Solver.makeLessOrEqual(IntExpr expr,
long value) |
expr <= value
|
Constraint |
Solver.makeLessOrEqual(IntExpr left,
IntExpr right) |
left <= right
|
Constraint |
Solver.makeLexicalLess(IntVar[] left,
IntVar[] right) |
Creates a constraint that enforces that left is lexicographically less
than right.
|
Constraint |
Solver.makeLexicalLessOrEqual(IntVar[] left,
IntVar[] right) |
Creates a constraint that enforces that left is lexicographically less
than or equal to right.
|
Constraint |
Solver.MakeLexicalLessOrEqualWithOffsets(IntVar[] left,
IntVar[] right,
long[] offsets) |
Creates a constraint that enforces that left is lexicographically less
than or equal to right with an offset.
|
Constraint |
Solver.makeMapDomain(IntVar var,
IntVar[] actives) |
This constraint maps the domain of 'var' onto the array of
variables 'actives'.
|
Constraint |
Solver.makeMaxEquality(IntVar[] vars,
IntVar max_var) |
|
Constraint |
Solver.makeMemberCt(IntExpr expr,
int[] values) |
|
Constraint |
Solver.makeMemberCt(IntExpr expr,
long[] values) |
expr in set.
|
Constraint |
Solver.makeMinEquality(IntVar[] vars,
IntVar min_var) |
|
Constraint |
Solver.makeNoCycle(IntVar[] nexts,
IntVar[] active) |
Prevent cycles.
|
Constraint |
Solver.makeNoCycle(IntVar[] nexts,
IntVar[] active,
java.util.function.LongPredicate sink_handler) |
Prevent cycles.
|
Constraint |
Solver.makeNoCycle(IntVar[] nexts,
IntVar[] active,
java.util.function.LongPredicate sink_handler,
boolean assume_paths) |
|
Constraint |
Solver.makeNonEquality(IntExpr expr,
int value) |
expr != value
|
Constraint |
Solver.makeNonEquality(IntExpr expr,
long value) |
expr != value
|
Constraint |
Solver.makeNonEquality(IntExpr left,
IntExpr right) |
left != right
|
Constraint |
Solver.makeNonOverlappingBoxesConstraint(IntVar[] x_vars,
IntVar[] y_vars,
IntVar[] x_size,
IntVar[] y_size) |
This constraint states that all the boxes must not overlap.
The coordinates of box i are:
(x_vars[i], y_vars[i]),
(x_vars[i], y_vars[i] + y_size[i]),
(x_vars[i] + x_size[i], y_vars[i]),
(x_vars[i] + x_size[i], y_vars[i] + y_size[i]).
The sizes must be non-negative.
|
Constraint |
Solver.makeNonOverlappingBoxesConstraint(IntVar[] x_vars,
IntVar[] y_vars,
SWIGTYPE_p_absl__SpanT_int_const_t x_size,
SWIGTYPE_p_absl__SpanT_int_const_t y_size) |
|
Constraint |
Solver.makeNonOverlappingBoxesConstraint(IntVar[] x_vars,
IntVar[] y_vars,
SWIGTYPE_p_absl__SpanT_int64_t_const_t x_size,
SWIGTYPE_p_absl__SpanT_int64_t_const_t y_size) |
|
Constraint |
Solver.makeNonOverlappingNonStrictBoxesConstraint(IntVar[] x_vars,
IntVar[] y_vars,
IntVar[] x_size,
IntVar[] y_size) |
This constraint states that all the boxes must not overlap.
The coordinates of box i are:
(x_vars[i], y_vars[i]),
(x_vars[i], y_vars[i] + y_size[i]),
(x_vars[i] + x_size[i], y_vars[i]),
(x_vars[i] + x_size[i], y_vars[i] + y_size[i]).
The sizes must be positive.
Boxes with a zero dimension can be placed anywhere.
|
Constraint |
Solver.makeNonOverlappingNonStrictBoxesConstraint(IntVar[] x_vars,
IntVar[] y_vars,
SWIGTYPE_p_absl__SpanT_int_const_t x_size,
SWIGTYPE_p_absl__SpanT_int_const_t y_size) |
|
Constraint |
Solver.makeNonOverlappingNonStrictBoxesConstraint(IntVar[] x_vars,
IntVar[] y_vars,
SWIGTYPE_p_absl__SpanT_int64_t_const_t x_size,
SWIGTYPE_p_absl__SpanT_int64_t_const_t y_size) |
|
Constraint |
Solver.makeNotBetweenCt(IntExpr expr,
long l,
long u) |
(expr < l || expr > u)
This constraint is lazy as it will not make holes in the domain of
variables.
|
Constraint |
Solver.makeNotMemberCt(IntExpr expr,
int[] values) |
|
Constraint |
Solver.makeNotMemberCt(IntExpr expr,
int[] starts,
int[] ends) |
expr should not be in the list of forbidden intervals [start[i]..end[i]].
|
Constraint |
Solver.makeNotMemberCt(IntExpr expr,
long[] values) |
expr not in set.
|
Constraint |
Solver.makeNotMemberCt(IntExpr expr,
long[] starts,
long[] ends) |
expr should not be in the list of forbidden intervals [start[i]..end[i]].
|
Constraint |
Solver.makeNullIntersect(IntVar[] first_vars,
IntVar[] second_vars) |
Creates a constraint that states that all variables in the first
vector are different from all variables in the second
group.
|
Constraint |
Solver.makeNullIntersectExcept(IntVar[] first_vars,
IntVar[] second_vars,
long escape_value) |
Creates a constraint that states that all variables in the first
vector are different from all variables from the second group,
unless they are assigned to the escape value.
|
Constraint |
Solver.makePathConnected(IntVar[] nexts,
long[] sources,
long[] sinks,
IntVar[] status) |
Constraint enforcing that status[i] is true iff there's a path defined on
next variables from sources[i] to sinks[i].
Check whether more propagation is needed.
|
Constraint |
Solver.makePathCumul(IntVar[] nexts,
IntVar[] active,
IntVar[] cumuls,
IntVar[] transits) |
Creates a constraint which accumulates values along a path such that:
cumuls[next[i]] = cumuls[i] + transits[i].
Active variables indicate if the corresponding next variable is active;
this could be useful to model unperformed nodes in a routing problem.
|
Constraint |
Solver.makePathCumul(IntVar[] nexts,
IntVar[] active,
IntVar[] cumuls,
IntVar[] slacks,
java.util.function.LongBinaryOperator transit_evaluator) |
Creates a constraint which accumulates values along a path such that:
cumuls[next[i]] = cumuls[i] + transit_evaluator(i, next[i]) + slacks[i].
Active variables indicate if the corresponding next variable is active;
this could be useful to model unperformed nodes in a routing problem.
Ownership of transit_evaluator is taken and it must be a repeatable
callback.
|
Constraint |
Solver.makePathCumul(IntVar[] nexts,
IntVar[] active,
IntVar[] cumuls,
java.util.function.LongBinaryOperator transit_evaluator) |
Creates a constraint which accumulates values along a path such that:
cumuls[next[i]] = cumuls[i] + transit_evaluator(i, next[i]).
Active variables indicate if the corresponding next variable is active;
this could be useful to model unperformed nodes in a routing problem.
Ownership of transit_evaluator is taken and it must be a repeatable
callback.
|
Constraint |
Solver.makeScalProdEquality(IntVar[] vars,
int[] coefficients,
long cst) |
|
Constraint |
Solver.makeScalProdEquality(IntVar[] vars,
int[] coefficients,
IntVar target) |
|
Constraint |
Solver.makeScalProdEquality(IntVar[] vars,
long[] coefficients,
long cst) |
|
Constraint |
Solver.makeScalProdEquality(IntVar[] vars,
long[] coefficients,
IntVar target) |
|
Constraint |
Solver.makeScalProdGreaterOrEqual(IntVar[] vars,
int[] coeffs,
long cst) |
|
Constraint |
Solver.makeScalProdGreaterOrEqual(IntVar[] vars,
long[] coeffs,
long cst) |
|
Constraint |
Solver.makeScalProdLessOrEqual(IntVar[] vars,
int[] coefficients,
long cst) |
|
Constraint |
Solver.makeScalProdLessOrEqual(IntVar[] vars,
long[] coefficients,
long cst) |
|
Constraint |
Solver.makeSortingConstraint(IntVar[] vars,
IntVar[] sorted) |
Creates a constraint binding the arrays of variables "vars" and
"sorted_vars": sorted_vars[0] must be equal to the minimum of all
variables in vars, and so on: the value of sorted_vars[i] must be
equal to the i-th value of variables invars.
This constraint propagates in both directions: from "vars" to
"sorted_vars" and vice-versa.
Behind the scenes, this constraint maintains that:
- sorted is always increasing.
- whatever the values of vars, there exists a permutation that
injects its values into the sorted variables.
For more info, please have a look at:
https://mpi-inf.mpg.de/~mehlhorn/ftp/Mehlhorn-Thiel.pdf
|
Constraint |
Solver.makeSubCircuit(IntVar[] nexts) |
Force the "nexts" variable to create a complete Hamiltonian path
for those that do not loop upon themselves.
|
Constraint |
Solver.makeSumEquality(IntVar[] vars,
long cst) |
|
Constraint |
Solver.makeSumEquality(IntVar[] vars,
IntVar var) |
|
Constraint |
Solver.makeSumGreaterOrEqual(IntVar[] vars,
long cst) |
|
Constraint |
Solver.makeSumLessOrEqual(IntVar[] vars,
long cst) |
Variation on arrays.
|
Constraint |
Solver.makeTemporalDisjunction(IntervalVar t1,
IntervalVar t2) |
This constraint implements a temporal disjunction between two
interval vars.
|
Constraint |
Solver.makeTemporalDisjunction(IntervalVar t1,
IntervalVar t2,
IntVar alt) |
This constraint implements a temporal disjunction between two
interval vars t1 and t2.
|
Constraint |
Solver.makeTransitionConstraint(IntVar[] vars,
IntTupleSet transition_table,
long initial_state,
int[] final_states) |
This constraint create a finite automaton that will check the
sequence of variables vars.
|
Constraint |
Solver.makeTransitionConstraint(IntVar[] vars,
IntTupleSet transition_table,
long initial_state,
long[] final_states) |
This constraint create a finite automaton that will check the
sequence of variables vars.
|
Constraint |
Solver.makeTrueConstraint() |
This constraint always succeeds.
|