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>
94 while (cur ==
nullptr) {
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 long int fail
Number of failed nodes in search tree.
unsigned long 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.
Space * clone(void) const
Clone space.
SpaceStatus status(StatusStatistics &stat)
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.