[gecode-users] order in calls to status and commit...
Guido Tack
tack at ps.uni-sb.de
Mon May 28 18:29:46 CEST 2007
Sébastien Mouthuy wrote:
> Could you tell me what is exactly the order in which the functions
> status and commit are called ?
I presume you mean status and commit of a branching, right?
> For me it should be
>
> call to status with space S. if it returns true, then copy S. let's
> call
> the copy Sc. Then call commit() with S and a=0. when we will have
> backtracked, commit will be called with Sc and a=1.
In principle, this is how it works. Our search engines however use
recomputation, so they don't actually make a copy everytime, but
sometimes use a copy that is higher up in the search tree and
recompute the needed space from there.
The exact protocol is:
* When you call Space::status, after computing a fixpoint of the
propagators, the space calls the status method of the installed
branchings to find the first branching that returns true. If there is
none, the status is SS_SOLVED, otherwise it's SS_BRANCH.
* When you call Space::description, the space asks the branching
that returned true for a description and returns it
* When you call commit, the space tries to find the branching that
matches the description, and calls its commit method.
> I ask this question because I post a branching in the commit
> function of
> another branching. Then I catch the following exception:
> terminate called after throwing an instance of
> 'Gecode::SpaceNoBranching'
> what(): Space::commit: Attempt to commit with no branching
This means that in the commit step, the space didn't find a branching
that matched the branching description. This could either mean that
the branching description is bogus, or that your branching really
hasn't been installed yet.
Are you using the standard, built-in search engines? If yes, please
check if the problem still persists with c_d=1 and a_d=100000 as
parameters passed to e.g. DFS (switching off recomputation). If the
problem goes away using these options, there's either something wrong
in our Space::commit logic, or in the way you create and use
BranchingDescs.
Cheers,
Guido
--
Guido Tack
Programming Systems Lab, Saarland University, Germany
http://www.ps.uni-sb.de/~tack
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20070528/eff63c93/attachment.htm>
More information about the gecode-users
mailing list