49 bool operator ()(
const std::pair<X,int>& lhs,
50 const std::pair<X,int>& rhs) {
51 return lhs.second < rhs.second;
56 IntVar unify(Home home, IntVar
x, IntVar
y) {
61 IntSet unify(Home,
const IntSet&
x,
const IntSet&
y) {
64 Iter::Ranges::Inter<IntSetRanges,IntSetRanges>
i(xr,yr);
71 void removeDuplicates(Home home, A&
c, IntArgs&
v) {
72 typedef typename A::value_type S;
73 typedef std::pair<S,int> P;
75 P*
a = re.alloc<P>(c.size());
82 int cur = a[0].second-1;
83 for (
int i=0; i<c.size(); i++) {
84 if (a[i].second==cur) {
85 cc[cc.size()-1] = unify(home, cc[cc.size()-1], a[
i].first);
92 re.free<P>(
a,c.size());
112 removeDuplicates(home,c,v);
117 for (
int i=0; i<v.
size(); i++)
118 cv[i].init(c[i],v[i]);
138 for (
int i=0; i<c.
size(); i++)
154 for (
int i=0; i<c.
size(); i++) {
162 removeDuplicates(home,c,v);
166 for (
int i=0; i<v.
size(); i++) {
167 if (c[i].ranges() > 1) {
170 for (
int j=0; j<v.
size(); j++)
171 cv[j].init(home,c[j],v[j]);
192 for (
int i=0; i<c.
size(); i++)
193 cv[i].init(home,c[i].
min(),c[
i].max(),v[
i]);
214 for (
int i=0; i<c.
size(); i++)
223 for (
int i=0; i<v.
size(); i++)
225 count(home, x, cards, v, ipl);
Value consistent global cardinality propagator.
IntPropLevel vbd(IntPropLevel ipl)
Extract value, bounds, or domain propagation from propagation level.
int size(void) const
Return size of array (number of elements)
void count(Home home, const IntVarArgs &x, int n, IntRelType irt, int m, IntPropLevel)
Post propagator for .
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
void quicksort(Type *l, Type *r, Less &less)
Standard quick sort.
Argument array for non-primitive types.
Gecode::IntArgs i({1, 2, 3, 4})
Domain consistent global cardinality propagator.
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Passing integer variables.
Passing integer arguments.
bool same(VarArgArray< Var > x, VarArgArray< Var > y)
void check(const FloatVal &n, const char *l)
Check whether float n is a valid number, otherwise throw out of limits exception with information l...
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
IntPropLevel
Propagation levels for integer propagators.
Post propagator for SetVar SetOpType SetVar y
Exception: Arguments contain same variable multiply
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Domain propagation Options: basic versus advanced propagation.
void values(Home home, const IntVarArgs &x, IntSet y, IntPropLevel ipl=IPL_DEF)
Post constraint .
Post propagator for SetVar x
Gecode toplevel namespace
Multi _c(Gecode::IntArgs({1, 2, 3}))
#define GECODE_POST
Check for failure in a constraint post function.
Home class for posting propagators
Exception: Arguments are of different size
#define GECODE_ES_FAIL(es)
Check whether execution status es is failed, and fail space home.
Bounds consistent global cardinality propagator.
struct Gecode::@593::NNF::@62::@64 a
For atomic nodes.