and the clone() method throw en exeption Gecode::SpaceNotStable because there are no branchers and this is why I used copy()
Best regards, Mohamed REZGUI 2013/2/22 Mohamed Rezgui <[email protected]> > OK thank you I change it but the bug is still here :S > > Best Regards > Moahmed REZGUI > > > 2013/2/22 Guido Tack <[email protected]> > >> Hi, >> >> you're using several classes not in the way they were designed. >> >> First of all, you have to call clone on fs instead of copy. >> >> Secondly, you're not supposed to create the Engine* like that. Try the >> following code: >> >> BAB<FlatZincSpace> bab(s_copy, opt); >> FlatZincSpace* solution = bab.next(); >> >> Please have a look at the tutorial documentation, these things are >> explained there. >> >> Cheers, >> Guido >> >> On 22/02/2013, at 20:04 , Mohamed Rezgui <[email protected]> wrote: >> >> Hi everybody, >> >> I have a bug to copy (deep copy) a FlatzincSpace without branhing (no >> Branchers) >> when I would like to start a branch and bound in only two decision >> variables. >> >> <code> >> Printer p; >> FlatZincSpace* fs = FlatZincSpace::parse(......); >> >> FlatZincSpace* s_copy = fs->copy(false); >> s_copy->shrinkArrays(p); >> >> >> SearchOptions opt = o; >> opt.threads = 1.0; //MonoThread >> opt.expand(); >> >> Gecode::IntVarArgs vars(2); >> vars[0] = s_copy->iv[0]; >> vars[1] = s_copy->iv[1]; >> >> >> Gecode::branch(*s_copy, vars, Gecode::INT_VAR_NONE(), >> Gecode::INT_VAL_MIN()); >> Gecode::Search::Engine* bab = Gecode::Search::bab(s_copy, 1.0, opt); >> >> FlatZincSpace* solution = NULL; >> solution = static_cast<FlatZincSpace*>(bab->next()) >> ;//<----------------------- Bug here >> </code> >> >> the bug is declared in this instruction line 85 >> file search/sequential/bab.hh >> <code> >> forceinline >> BAB::BAB(Space* s, size_t sz, const Options& o) >> : Worker(sz), opt(o), d(0), mark(0), best(NULL) { >> current(s); //<----------------------- Bug here >> </code> >> >> Precisely when there is an allocation of an actorlink in s->allocated() >> file search/worker.hh line 162 >> <code> >> forceinline void >> Worker::current(const Space* s) { >> if (s == NULL) { >> mem_total -= mem_cur; >> mem_cur = 0; >> } else { >> mem_cur = mem_space + s->allocated(); //<----------------------- >> Bug here >> mem_total += mem_cur; >> if (mem_total > memory) >> memory = mem_total; >> } >> } >> >> With Gecode rev13367 >> >> Can you help me please ? >> >> Best Regards, >> Mohammed REZGUI >> _______________________________________________ >> Gecode users mailing list >> [email protected] >> https://www.gecode.org/mailman/listinfo/gecode-users >> >> >> -- >> Guido Tack, >> http://www.csse.monash.edu/~guidot/ >> >> >> >> > > > -- > Cordialement, > Mohamed REZGUI > -- Cordialement, Mohamed REZGUI
_______________________________________________ Gecode users mailing list [email protected] https://www.gecode.org/mailman/listinfo/gecode-users
