54 unsigned long long int lf;
81 void update(
int i,
bool failed);
96 void update(
int i,
bool failed);
135 int size(
void)
const;
185 virtual size_t dispose(
Space& home);
194 template<
class Char,
class Traits>
195 std::basic_ostream<Char,Traits>&
196 operator <<(std::basic_ostream<Char,Traits>& os,
208 :
Advisor(home,p,c), _info(i << 1) {}
222 return (
_info & 1) != 0;
249 x[
i].subscribe(home,*
new (home)
Idx(home,*
this,
c,
i),
true);
272 for (
int i=0;
i<
n;
i++) {
273 typename View::VarType xi(x[
i].varimp());
278 for (
int i=0;
i<
n;
i++) {
295 double reward = 1.0 / (
nf -
chb[
i].
lf + 1);
298 double reward = 0.9 / (
nf -
chb[
i].
lf + 1);
321 assert((i >= 0) && (i <
object().
n));
365 template<
class Char,
class Traits>
366 std::basic_ostream<Char,Traits>&
367 operator <<(std::basic_ostream<Char,Traits>& os,
369 std::basic_ostringstream<Char,Traits> s;
370 s.copyfmt(os); s.width(0);
372 if (
chb.size() > 0) {
374 for (
int i=1;
i<chb.
size();
i++)
378 return os << s.str();
407 x[as.advisor().idx()].cancel(home,as.advisor(),
true);
410 return sizeof(*this);
446 int i = as.advisor().idx();
447 if (as.advisor().marked()) {
448 as.advisor().unmark();
451 as.advisor().dispose(home,
c);
456 int i = as.advisor().idx();
457 if (as.advisor().marked()) {
458 as.advisor().unmark();
461 as.advisor().dispose(home,
c);
const PropCond PC_GEN_NONE
Propagation condition to be ignored (convenience)
bool marked(void *p)
Check whether p is marked.
CHB & operator=(const CHB &a)
Assignment operator.
int size(void) const
Return size of array (number of elements)
int n
Number of chb values.
ExecStatus ES_SUBSUMED(Propagator &p)
void bump(void)
Bump failure count and alpha.
Actor must always be disposed.
Info * chb
CHB information.
Object for storing chb information.
Advisor with index and change information.
static ExecStatus post(Home home, ViewArray< View > &x, CHB &chb)
Post chb recorder propagator.
int idx(void) const
Get index of view.
void bump(void)
Bump failure count and alpha.
void update(int i)
Update chb value at position i.
const ModEvent ME_GEN_ASSIGNED
Generic modification event: variable is assigned a value.
ViewArray< View > x
Array of views.
void acquire(void)
Acquire the mutex and possibly block.
Propagator for recording chb information.
Base-class for propagators.
virtual void reschedule(Space &home)
Schedule function.
static PropCost record(void)
For recording information (no propagation allowed)
Class to iterate over advisors of a council.
void * mark(void *p)
Return marked pointer for unmarked pointer p.
int size(void) const
Return number of chb values.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Propagation has computed fixpoint.
void acquire(void)
Acquire mutex.
A mutex for mutual exclausion among several threads.
void release(void)
Release the mutex.
CHB(void)
Construct as not yet intialized.
Gecode::FloatVal c(-8, 8)
void update(int i, bool failed)
Update chb information at position i.
int p
Number of positive literals for node type.
Storage & object(void) const
Return object of correct type.
void mark(void)
Mark advisor as modified.
int n
Number of negative literals for node type.
Gecode::IntArgs i({1, 2, 3, 4})
SharedHandle::Object * object(void) const
Access to the shared object.
Idx(Space &home, Propagator &p, Council< Idx > &c, int i)
Constructor for creation.
bool failed(void) const
Check whether space is failed.
Class for CHB management.
const double chb_alpha_init
Initial value for alpha in CHB.
void init(Home home, ViewArray< View > &x, typename BranchTraits< typename View::VarType >::Merit bm)
Initialize for views x and Q-score as defined by bm.
size_t size
The size of the propagator (used during subsumption)
double operator[](int i) const
Return chb value at position i.
virtual ExecStatus advise(Space &home, Advisor &a, const Delta &d)
Give advice to propagator.
#define GECODE_KERNEL_EXPORT
void * unmark(void *p)
Return unmarked pointer for a marked pointer p.
CHB chb
Access to chb information.
Council< Idx > c
The advisor council.
void release(void)
Release mutex.
void notice(Actor &a, ActorProperty p, bool duplicate=false)
Notice actor property.
static const CHB def
Default (empty) chb information.
bool marked(void) const
Whether advisor's view has been marked.
Generic domain change information to be supplied to advisors.
void ignore(Actor &a, ActorProperty p, bool duplicate=false)
Ignore actor property.
Storage(Home home, ViewArray< View > &x, typename BranchTraits< typename View::VarType >::Merit bm)
Initialize CHB info.
unsigned long long int lf
Last failure.
Heap heap
The single global heap.
bool assigned(View x, int v)
Whether x is assigned to value v.
const double chb_alpha_limit
Limit for decreasing alpha in CHB.
Post propagator for SetVar x
Propagation has not computed fixpoint.
int _info
Index and mark information.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Recorder(Space &home, Recorder< View > &p)
Constructor for cloning p.
const double chb_alpha_decrement
Alpha decrement in CHB.
Gecode toplevel namespace
#define GECODE_VTABLE_EXPORT
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (record so that propagator runs last)
void reschedule(Space &home, Propagator &p, IntSet &y)
int size(void) const
Return size of array (number of elements)
int ModEventDelta
Modification event deltas.
Home class for posting propagators
virtual Propagator * copy(Space &home)
Copy propagator during cloning.
const double chb_qscore_init
Initial value for Q-score in CHB.
struct Gecode::@593::NNF::@62::@64 a
For atomic nodes.
static Support::Mutex m
Mutex to synchronize globally shared access.
void unmark(void)
Mark advisor as unmodified.
unsigned long int nf
Number of failures.
TFE post(PropagatorGroup g)
Only post functions (but not propagators) from g are considered.