Hi, I just added a fix to the svn trunk for the case of a reified equality between an IntVar and an int. The default ICL for that case is now ICL_DOM (consistent with just using rel directly).
Other cases (e.g. equality between two variables) may still ignore the ICL, but we'll have a look at that, too. Cheers, Guido -- Guido Tack http://www.csse.monash.edu/~guidot/ On 13/04/2012, at 9:17 PM, Max Ostrowski wrote: > Thanks and sorry for bugging you again. > > I tried to analyze the minimodel code. > I think that posting LinExpr instead of LinRel won't change the problem, > right? > So is there any interface so that one can still use the very handy LinExpr > class? > I do parse some quite complicated formulas and want to post a linear() > constraint. > LinExpr as far as I understood, optimizes this formula and reformulates it to > fit into the form that is needed for the linear constraint. > Is there a way to get this linear constraint out of it again to post it > manually and preserve the ICL? > > Or do i have to generate the linear constraint (array of variables and > numbers) myself to get the full propagation power. Is there a logical reason > why the ICL is lost during this "translation"? > > Best, > Max > > On 04/10/2012 01:19 PM, Christian Schulte wrote: >> >> Maybe, not so clear yet. We will change reification for the next major >> release and might at that time also think how to fix passing the consistency >> level. >> >> For the time being you should stick to what Guido has suggested. >> >> Christian >> >> -- >> Christian Schulte, www.ict.kth.se/~cschulte/ >> >> From: users-boun...@gecode.org [mailto:users-boun...@gecode.org] On Behalf >> Of Max Ostrowski >> Sent: Tuesday, April 10, 2012 12:42 PM >> To: Guido Tack >> Cc: users@gecode.org >> Subject: Re: [gecode-users] Reified Constraints do not propagate >> >> Thank you very much for the insight. >> Unfortunately this could be a problem, >> as i have to change my data structures. >> >> Will this be fixed in future versions? >> >> Best, >> Max >> >> On 04/10/2012 12:32 PM, Guido Tack wrote: >> This is a current shortcoming of the minimodel library. For some linear >> constraints (such as x==5 in this case) the IntConLevel is ignored. To get >> the full propagation, you have to post the constraint directly, like this: >> >> Gecode::rel(*test, test->x_[1], IRT_EQ, 5, test->b_[1], ICL_DOM); >> >> Cheers, >> Guido >> >> On 10 Apr 2012, at 19:20, Max Ostrowski wrote: >> >> >> I have a small example where i do not understand why no propagation takes >> place. >> >> test is a pointer to the space instance >> x_ is an array of 10 IntVars(0,10) >> b_ is an array of 2 BoolVars(0,1) >> >> >> LinRel rel1(test->x_[0],IRT_EQ,5); >> rel1.post(*test,true,ICL_DEF); >> >> Gecode::distinct(*test,test->x_,ICL_DEF); >> >> LinRel rel2(test->x_[1],IRT_EQ,5); >> Gecode::rel(*test, rel2 == test->b_[1],ICL_DEF); >> >> test->status(); >> if (test->failed()) >> std::cout << "Failed" << std::endl; >> std::cout << test->x_ << std::endl; >> std::cout << test->b_ << std::endl; >> >> >> So i post das one of my elements x_[0] is 5, and all elements are distinct. >> Now i have a reified constraint that x_[1] == 5. >> The distinct constraint removes 5 from he domain of x_[1], >> but the propagator does not fire. >> The result is: >> {5, {0..4,6..10}, {0..4,6..10}, {0..4,6..10}, {0..4,6..10}, {0..4,6..10}, >> {0..4,6..10}, {0..4,6..10}, {0..4,6..10}, {0..4,6..10}} >> {[0..1], [0..1]} >> >> Even with ICL_DOM the boolean variable is not touched if values are removed >> from the domain. >> Also i think this could be easily done with "Advisors" ? >> I have no experience with this, so my question: >> Is this behavior the desired one? >> Can this be changed if i have reifications like mine where i compare to >> constants? >> >> Thanks a lot, >> >> Max >> _______________________________________________ >> Gecode users mailing list >> users@gecode.org >> https://www.gecode.org/mailman/listinfo/gecode-users >> >> -- >> Guido Tack, >> http://www.csse.monash.edu/~guidot/ >> >> >> >> > > _______________________________________________ > Gecode users mailing list > users@gecode.org > https://www.gecode.org/mailman/listinfo/gecode-users
_______________________________________________ Gecode users mailing list users@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users