[gecode-users] Strange branching behaviour when using FunctionBrancher

Andrea Peano andrea.peano at unife.it
Tue Sep 23 13:59:57 CEST 2014


I was just reading on the Gecode guide that this behaviour is due to the
"recomputation".
So I have two more questions: can I completely prevent this behaviour by
disabling recomputation?
Has recomputation a direct effect on parallel search?

Thanks,
Andrea

On Tue, Sep 23, 2014 at 1:22 PM, Andrea Peano <andrea.peano at unife.it> wrote:

> Hello,
>
> I've implemented a search strategy by splitting the search into three
> levels. I think the code may explain better this strategy.
>
>
> void MyModel::post(Space& home)
> {
>
> static_cast<MyModel&>(home).second_level();
>
> }
>
> void MyModel::second_level()
> {
>
> status();
>
> //do something with the partial solution
> //print "second level"
>
> branch(*this, BoolBranchDirection, INT_VAL_MIN());
>
> branch(*this, post2);
>
> }
>
> void MyModel::post2(Space& home)
> {
>
> static_cast<MyModel&>(home).third_level();
>
> }
>
> void MyModel::third_level()
> {
>
> if(BoolBranchDirection.val()==0)
> {
> //print third level left
> //left branch behaviour (install further branches)
> }
> else
> {
> //print third level right
> //right branch behaviour (install further branches)
> }
>
> }
>
> Imagine now we are fixing the partial solution before the "post" calling,
> so the solver goes only once into the "post" function (and it's confirmed
> by GIST).
>
> The strange fact is that "second_level" is called more than once! Instead
> I expect one call for "second_level" and two calls for "third_level", which
> executes two different paths of the code.
>
> These are the prints I read:
> second level
> third level left
> second level
> third level right
> second level
> third level right
>
> But I expected:
> second level
> third level left
> third level right
>
> Can you clarify this behaviour please?
>
> Furthermore, I experienced that I need to call "status()" within the
> second level, to ground some variables I expected to be already ground. Is
> this normal?
>
> I'm using Gecode 4.2.1
>
> Thanks,
> Andrea
>
>
> --
>
> Andrea Peano - PhD student
> Department of Engineering - University of Ferrara
> Tel: +39 0532 97 4827
>



-- 

Andrea Peano - PhD student
Department of Engineering - University of Ferrara
Tel: +39 0532 97 4827
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20140923/59a2f9a1/attachment-0001.html>


More information about the users mailing list