Go to the documentation of this file.
58 unsigned long long int lf;
74 unsigned long long int nf;
86 void update(
int i,
bool failed);
99 void update(
int i,
bool failed);
126 operator bool(
void)
const;
146 int size(
void)
const;
205 template<
class Char,
class Traits>
206 std::basic_ostream<Char,Traits>&
223 :
Advisor(home,share,
a), _info(
a._info) {
233 return (_info & 1) != 0;
258 for (
int i=
x.size();
i--; )
260 x[
i].subscribe(home,*
new (home)
Idx(home,*
this,
c,
i),
true);
283 for (
int i=
n;
i--; ) {
284 typename View::VarType xi(
x[
i].varimp());
289 for (
int i=
n;
i--; ) {
306 double reward = 1.0 / (nf - chb[
i].lf + 1);
307 chb[
i].qs = (1.0 - alpha) * chb[
i].qs + alpha * reward;
309 double reward = 0.9 / (nf - chb[
i].lf + 1);
310 chb[
i].qs = (1.0 - alpha) * chb[
i].qs + alpha * reward;
326 assert((
i >= 0) && (i < storage->
n));
354 CHB::operator bool(
void)
const {
355 return storage != NULL;
375 template<
class Char,
class Traits>
376 std::basic_ostream<Char,Traits>&
379 std::basic_ostringstream<Char,Traits> s;
380 s.copyfmt(os); s.width(0);
382 if (chb.
size() > 0) {
384 for (
int i=1;
i<chb.size();
i++)
388 return os << s.str();
401 c.update(home, share,
p.c);
418 x[as.advisor().idx()].cancel(home,as.advisor(),
true);
421 return sizeof(*this);
457 int i = as.advisor().idx();
458 if (as.advisor().marked()) {
459 as.advisor().unmark();
462 as.advisor().dispose(home,
c);
467 int i = as.advisor().idx();
468 if (as.advisor().marked()) {
469 as.advisor().unmark();
472 as.advisor().dispose(home,
c);
void notice(Actor &a, ActorProperty p, bool duplicate=false)
Notice actor property.
const ModEvent ME_GEN_ASSIGNED
Generic modification event: variable is assigned a value.
Post propagator for SetVar x
static PropCost record(void)
For recording information (no propagation allowed)
void update(int i)
Update chb value at position i.
unsigned long long int lf
Last failure.
Storage * storage
Pointer to storage object.
ExecStatus ES_SUBSUMED(Propagator &p)
void acquire(void)
Acquire the mutex and possibly block.
int _info
Index and mark information.
static ExecStatus post(Home home, ViewArray< View > &x, CHB &chb)
Post chb recorder propagator.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (record so that propagator runs last)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
const double chb_alpha_limit
Limit for decreasing alpha in CHB.
bool assigned(View x, int v)
Whether x is assigned to value v.
Class for CHB management.
void * mark(void *p)
Return marked pointer for unmarked pointer p.
Class to iterate over advisors of a council.
static const CHB def
Default (empty) chb information.
Gecode::IntArgs i(4, 1, 2, 3, 4)
Advisor with index and change information.
virtual void reschedule(Space &home)
Schedule function.
int size(void) const
Return number of chb values.
const double chb_qscore_init
Initial value for Q-score in CHB.
bool marked(void) const
Whether advisor's view has been marked.
void release(void)
Release mutex.
void unmark(void)
Mark advisor as unmodified.
void bump(void)
Bump failure count and alpha.
unsigned int use_cnt
How many references exist for this object.
Gecode toplevel namespace
virtual ExecStatus advise(Space &home, Advisor &a, const Delta &d)
Give advice to propagator.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Base-class for propagators.
Object for storing chb information.
int n
Number of chb values.
Storage(Home home, ViewArray< View > &x, typename BranchTraits< typename View::VarType >::Merit bm)
Allocate CHB info.
~Storage(void)
Delete object.
Generic domain change information to be supplied to advisors.
Home class for posting propagators
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
@ AP_DISPOSE
Actor must always be disposed.
CHB(void)
Construct as not yet intialized.
virtual Propagator * copy(Space &home, bool share)
Copy propagator during cloning.
Idx(Space &home, Propagator &p, Council< Idx > &c, int i)
Constructor for creation.
#define GECODE_KERNEL_EXPORT
Base class for heap allocated objects.
const double chb_alpha_init
Initial value for alpha in CHB.
void mark(void)
Mark advisor as modified.
const double chb_alpha_decrement
Alpha decrement in CHB.
Support::Mutex m
Mutex to synchronize globally shared access.
Heap heap
The single global heap.
Council< Idx > c
The advisor council.
bool failed(void) const
Check whether space is failed.
unsigned long long int nf
Number of failures.
Propagator for recording chb information.
void free(T *b, long unsigned int n)
Delete n objects starting at b.
@ ES_FIX
Propagation has computed fixpoint.
int idx(void) const
Get index of view.
CHB & operator=(const CHB &a)
Assignment operator.
Info * chb
CHB information.
Recorder(Space &home, bool share, Recorder< View > &p)
Constructor for cloning p.
double operator[](int i) const
Return chb value at position i.
CHB chb
Access to chb information.
void ignore(Actor &a, ActorProperty p, bool duplicate=false)
Ignore actor property.
Gecode::FloatVal c(-8, 8)
const PropCond PC_GEN_NONE
Propagation condition to be ignored (convenience)
void update(int i, bool failed)
Update chb information at position i.
void release(void)
Release the mutex.
A mutex for mutual exclausion among several threads.
int n
Number of negative literals for node type.
void acquire(void)
Acquire mutex.
int ModEventDelta
Modification event deltas.
@ ES_NOFIX
Propagation has not computed fixpoint.
@ ES_OK
Execution is okay.
int p
Number of positive literals for node type.
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.
Archive & operator<<(Archive &e, FloatNumBranch nl)
bool marked(void *p)
Check whether p is marked.
void bump(void)
Bump failure count and alpha.