53 bool operator ()(
const std::pair<X,int>& lhs,
54 const std::pair<X,int>& rhs) {
55 return lhs.second < rhs.second;
60 IntVar unify(Home home, IntVar
x, IntVar
y) {
65 IntSet unify(Home,
const IntSet&
x,
const IntSet&
y) {
68 Iter::Ranges::Inter<IntSetRanges,IntSetRanges>
i(xr,yr);
75 void removeDuplicates(Home home, A&
c, IntArgs&
v) {
76 typedef typename A::value_type S;
77 typedef std::pair<S,int> P;
79 P*
a = re.alloc<P>(c.size());
86 int cur = a[0].second-1;
87 for (
int i=0; i<c.size(); i++) {
88 if (a[i].second==cur) {
89 cc[cc.size()-1] = unify(home, cc[cc.size()-1], a[
i].first);
96 re.free<P>(
a,c.size());
116 removeDuplicates(home,c,v);
121 for (
int i = v.
size(); i--; )
122 cv[i].init(c[i],v[i]);
142 for (
int i = c.
size(); i--; )
158 for (
int i=c.
size(); i--; ) {
166 removeDuplicates(home,c,v);
170 for (
int i = v.
size(); i--; ) {
171 if (c[i].ranges() > 1) {
174 for (
int j = v.
size(); j--; )
175 cv[j].init(home,c[j],v[j]);
196 for (
int i = c.
size(); i--; )
197 cv[i].init(home,c[i].
min(),c[
i].max(),v[
i]);
218 for (
int i = c.
size(); i--; )
227 for (
int i = v.
size(); i--; )
229 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 .
Multi _c(Gecode::IntArgs(3, 1, 2, 3))
Gecode::IntArgs i(4, 1, 2, 3, 4)
bool same(void) const
Test whether array contains same variable multiply.
void quicksort(Type *l, Type *r, Less &less)
Standard quick sort.
Argument array for non-primitive types.
Domain consistent global cardinality propagator.
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Passing integer variables.
Passing integer arguments.
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
struct Gecode::@585::NNF::@62::@64 a
For atomic nodes.
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
#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.