36 template<
class Tracer>
39 : tracer(o.tracer), opt(o), path(opt.nogoods_limit), d(0) {
50 cur = snapshot(s,opt);
54 template<
class Tracer>
70 template<
class Tracer>
76 template<
class Tracer>
97 cur = path.recompute(d,opt.a_d,*
this,tracer);
104 if (tracer && (path.entries() > 0)) {
108 unsigned int nid = tracer.
nid();
109 switch (cur->status(*
this)) {
113 tracer.wid(), nid, *cur);
125 tracer.wid(), nid, *cur);
129 (void) cur->choice();
138 if ((d == 0) || (d >= opt.c_d)) {
145 const Choice* ch = path.push(*
this,cur,c,nid);
148 tracer.wid(), nid, *cur, ch);
162 template<
class Tracer>
168 template<
class Tracer>
175 template<
class Tracer>
Choice for performing commit
No-goods recorded from restarts.
void init(unsigned int wid, unsigned int nid, unsigned int a)
Initialize.
unsigned int nid(void) const
Return parent node id.
@ DFS
Engine is a DFS engine.
Space * next(void)
Search for next solution
Statistics statistics(void) const
Return statistics.
NoGoods & nogoods(void)
Return no-goods.
void constrain(const Space &b)
Constrain future solutions to be better than b (should never be called)
DFS(Space *s, const Options &o)
Initialize for space s with options o.
Search tree edge for recomputation
unsigned int truealt(void) const
Return true number for alternatives (excluding lao optimization)
unsigned int nid(void) const
Return node identifier.
const Choice * choice(void) const
Return choice.
unsigned long int fail
Number of failed nodes in search tree.
unsigned long int node
Number of nodes expanded.
void start(void)
Reset stop information.
bool stop(const Options &o)
Check whether engine must be stopped.
void reset(void)
Reset information.
SpaceStatus status(StatusStatistics &stat=unused_status)
Query space status.
@ SS_BRANCH
Space must be branched (at least one brancher left)
@ SS_SOLVED
Space is solved (no brancher left)
@ SS_FAILED
Space is failed
Gecode toplevel namespace
#define GECODE_NEVER
Assert that this command is never executed.