But, first and foremost, read the documentation!
Then you would have known many things in advance: that you should not contact me but the users list, that it is clone not copy, that status matters. Honestly, why do you think there is some 450 pages plus docs if it does not serve any purpose? Christian -- Christian Schulte, www.ict.kth.se/~cschulte/ From: [email protected] [mailto:[email protected]] On Behalf Of Guido Tack Sent: Friday, February 22, 2013 10:29 AM To: Mohamed Rezgui Cc: [email protected] Subject: Re: [gecode-users] Problem with FlatzincSpace deep copy As I said, using copy won't work, in fact it's likely that this causes the problem. Simply call status() on the space before calling clone(), that will get rid of the exception (SpaceNotStable has nothing to do with whether there are any branchers). Cheers, Guido On 22/02/2013, at 20:26 , Mohamed Rezgui <[email protected]> wrote: 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 -- Guido Tack, http://www.csse.monash.edu/~guidot/
_______________________________________________ Gecode users mailing list [email protected] https://www.gecode.org/mailman/listinfo/gecode-users
