36 namespace Gecode {
namespace Set {
namespace Channel {
44 :
Advisor(home,p,c), idx(index) {
46 p.
y.subscribe(home,*
this);
69 p.
y.cancel(home,*
this);
88 }
else if (
x[
i].
one()) {
100 if (
y.glbSize()==
static_cast<unsigned int>(
y.glbMax()-
y.glbMin()+1)) {
113 co.update(home, p.
co);
143 return sizeof(*this);
186 for (; cur < lub.min(); cur++) {
191 for (; cur <
x.
size(); cur++) {
209 int index = a.
index();
216 if (
x[index].zero()) {
220 assert(
x[index].
one());
bool running
Flag whether propagation is currently running.
void reschedule(Space &home, Propagator &p, PropCond pc)
Re-schedule propagator p with propagation condition pc.
static PropCost quadratic(PropCost::Mod m, unsigned int n)
Quadratic complexity for modifier m and size measure n.
ExecStatus ES_SUBSUMED(Propagator &p)
const FloatNum max
Largest allowed float value.
bool one(const Gecode::FloatValArgs &a)
Check whether has only one coefficients.
ChannelBool(Space &home, ChannelBool &p)
Constructor for cloning p.
const Gecode::ModEvent ME_SET_BB
Domain operation has changed both greatest lower and least upper bound.
int ModEvent
Type for modification events.
Council< IndexAdvisor > co
Council for managing advisors.
void dispose(Space &home, Council< A > &c)
Delete advisor.
GLBndSet zeros
Accumulated zero Booleans.
void subscribe(Space &home, Propagator &p, PropCond pc, bool schedule=true)
Subscribe propagator p with propagation condition pc to variable.
ExecStatus ES_NOFIX_DISPOSE(Council< A > &c, A &a)
Advisor a must be disposed and its propagator must be run
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as PC_QUADRATIC_LO)
ViewArray< Gecode::Int::BoolView > x
Array of views.
static ExecStatus post(Home home, ViewArray< Gecode::Int::BoolView > &x, View y)
Post propagator for .
Propagation has computed fixpoint.
Base-class for both propagators and branchers.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
IndexAdvisor(Space &home, ChannelBool< View > &p, Council< A > &c, int index)
Constructor for creation.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
int glbMax(void) const
Return glb maximum.
const FloatNum min
Smallest allowed float value.
Gecode::IntArgs i(4, 1, 2, 3, 4)
unsigned int size(void) const
Return size.
Multi _d(Gecode::IntArgs(3, 3, 2, 1))
virtual size_t dispose(Space &home)
Delete propagator and return its size.
void init(Space &home)
Initialize as the empty set.
Value iterator from range iterator.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Range iterator for integer sets.
Advisor storing a single index
bool glbAny(void) const
Test whether delta represents any domain change in glb.
void cancel(Space &home, Propagator &p, PropCond pc)
Cancel subscription of propagator p with propagation condition pc to all views.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
int glbMin(void) const
Return glb minimum.
virtual ExecStatus advise(Space &home, Advisor &a, const Delta &d)
Give advice to propagator.
virtual void reschedule(Space &home)
Schedule function.
int lubMin(void) const
Return lub minimum.
bool testSetEventLB(ModEvent me0, ModEvent me1, ModEvent me2)
Generic domain change information to be supplied to advisors.
int index(void) const
Access index.
struct Gecode::@585::NNF::@62::@64 a
For atomic nodes.
Propagator & propagator(void) const
Return the advisor's propagator.
void dispose(Space &home, Council< A > &c)
Dispose the advisor.
bool assigned(View x, int v)
Whether x is assigned to value v.
int lubMax(void) const
Return lub maximum.
bool lubAny(void) const
Test whether delta represents any domain change in lub.
Propagation has not computed fixpoint.
GLBndSet ones
Accumulated one Booleans.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Propagator for channelling between set variable and its characteristic function
Gecode toplevel namespace
static void schedule(Space &home, Propagator &p, ModEvent me)
Schedule propagator p with modification event me.
bool testSetEventUB(ModEvent me0, ModEvent me1, ModEvent me2)
SetDelta delta
Accumulated delta information.
const Gecode::ModEvent ME_SET_VAL
Domain operation has resulted in a value (assigned variable)
const Gecode::ModEvent ME_SET_CARD
Domain operation has changed the variable cardinality.
int ModEventDelta
Modification event deltas.
int size(void) const
Return size of array (number of elements)
Home class for posting propagators
bool include(Space &home, int i, int j, SetDelta &d)
Include the set in this set.
void dummy(Space &)
A dummy function for branching.
const Gecode::PropCond PC_BOOL_VAL
Propagate when a view becomes assigned (single value)
const Gecode::ModEvent ME_BOOL_VAL
Domain operation has resulted in a value (assigned variable)
Finite set delta information for advisors.