[gecode-users] Not all solutions, BAB vs. DFS
Guido Tack
tack at ps.uni-sb.de
Fri Sep 4 09:18:07 CEST 2009
Martin Kreißig wrote:
> Hello,
>
> I found out, that GECODe is a very good (if not the best) solution
> to my problem.
> The thing is, that I never used C++ before - everybody has to start
> at a point ;)
>
> So far I got used to it, but now - when finished - I don't get all
> solutions of my problem.
>
> Searching in this list I found out that I have to use the BAB search
> and add the option opt.solutions(0)...
You can use opt.solutions(0) with DFS, too.
> The program worked with DFS before.
> But now I get the error:
> "terminate called after throwing an instance of
> 'Gecode::SpaceConstrainUndefined' what(): Space::constrain: Attempt
> to use undefined constrain function"
BAB is for solving optimization problems, and requires implementing
the constrain function. If you don't want to do optimization, use DFS.
> My implementation does not follow the syntax given in the examples,
> like:
> "Script::run<Money,DFS,Options>(opt);"
>
> I am starting the search by this:
> DFS<CSP> dfs( csp_obj );
>
> So my question is - maybe a bit of a beginner one - this is not
> possible
> with BAB?
>
> How can I add the options variable in this implementation? BAB<CSP>
> dfs( csp_obj, opt ); is not working.
The dfs object has a next method that you can call in a loop to get
more than one solution. As soon as it returns NULL, the complete
search tree has been explored:
CSP* c = dfs.next();
while (c != NULL) {
c->print(); // e.g., output the current solution
delete c;
c = dfs.next();
}
Cheers,
Guido
More information about the gecode-users
mailing list