43 namespace Gecode {
namespace Int {
namespace GCC {
74 return new (home)
Val<Card>(home,share,*
this);
100 for (
int i = k.
size();
i--; ) {
101 removed += k[
i].counter();
102 sum_min += k[
i].min();
108 for (
int i = k.
size();
i--; )
114 for (
int i = x.
size();
i--; )
126 for (
int i = k.
size();
i--; )
140 for (
int i = k.
size();
i--; ) {
141 int ci = count[
i] + k[
i].counter();
157 if ((req == non) && (n_r == 1)) {
159 for (
int i = x.
size();
i--; ) {
163 assert((single >= 0) && (single < k.
size()));
167 assert((single >= 0) && (single < k.
size()));
169 for (
int i = k.
size();
i--; )
177 for (
int i = k.
size();
i--; ) {
178 int ci = count[
i] + k[
i].counter();
179 if (ci == k[
i].
max()) {
181 rem.
set(static_cast<unsigned int>(
i));
186 if (ci > k[
i].
max()) {
191 if (Card::propagate) {
193 int occupied = t_noa - ci;
204 for (
int i = n_x;
i--; ) {
210 if (rem.
get(static_cast<unsigned int>(idx)))
220 int* p = r.alloc<
int>(k.
size());
224 p[n_p++] = k[
i.val()].card();
226 for (
int i = x.
size();
i--;) {
233 bool all_assigned =
true;
235 for (
int i = x.
size();
i--; ) {
243 all_assigned =
false;
248 for (
int i = k.
size();
i--; )
254 if (Card::propagate) {
258 for (
int i = k.
size();
i--; ) {
259 if (k[
i].counter() > k[
i].max()) {
262 allmax += k[
i].max() - k[
i].counter();
263 if (k[
i].counter() < k[
i].
min())
264 reqmin += k[
i].min() - k[
i].counter();
268 if ((x.
size() < reqmin) || (allmax < x.
size())) {
279 return prop_val<Card>(home, *
this,
x, k);
288 if (isDistinct<Card>(home,x,k))
bool get(unsigned int i) const
Access value at bit i.
ViewArray< Card > k
Array containing either fixed cardinalities or CardViews.
Value consistent global cardinality propagator.
void update(Space &, bool share, ViewArray< View > &a)
Update array to be a clone of array a.
static ExecStatus post(Home home, ViewArray< IntView > &x, ViewArray< Card > &k)
Post propagator for views x and cardinalities k.
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
ExecStatus ES_SUBSUMED(Propagator &p)
Value iterator for array of integers
bool lookupValue(T &a, int v, int &i)
Return index of v in array a.
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Val(Home home, ViewArray< IntView > &x, ViewArray< Card > &k)
Constructor for posting.
Base-class for propagators.
const unsigned int card
Maximum cardinality of an integer set.
Base-class for both propagators and branchers.
Value iterator for values in a bitset.
ViewArray< IntView > x
Views on which to perform value-propagation.
#define GECODE_ES_CHECK(es)
Check whether execution status es is failed or subsumed, and forward failure or subsumption.
int p
Number of positive literals for node type.
virtual size_t dispose(Space &home)
Destructor.
Gecode::IntArgs i(4, 1, 2, 3, 4)
void quicksort(Type *l, Type *r, Less &less)
Standard quick sort.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost funtion returning high linear.
Execution has resulted in failure.
void subscribe(Space &home, Propagator &p, PropCond pc, bool process=true)
Subscribe propagator p with propagation condition pc to variable.
ExecStatus prop_val(Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< Card > &k)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
void set(unsigned int i)
Set bit i.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator for view array x.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
Node * x
Pointer to corresponding Boolean expression node.
void count(Home home, const IntVarArgs &x, int n, IntRelType irt, int m, IntConLevel)
Post propagator for .
virtual size_t dispose(Space &home)
Delete actor and return its size.
bool assigned(View x, int v)
Whether x is assigned to value v.
Propagation has not computed fixpoint.
int size(void) const
Return size of array (number of elements)
Gecode toplevel namespace
int ModEventDelta
Modification event deltas.
Home class for posting propagators
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)