I was not modeling but writing a propagator. Thanks for solving my problem. Best, Max
On 08/24/2012 09:54 AM, Christian Schulte wrote: > > There are in fact several big fat warnings in MPG saying that views > are not for modeling! They are there for a reason! > > > > Christian > > > > -- > > Christian Schulte, www.ict.kth.se/~cschulte/ > > > > *From:* users-boun...@gecode.org [mailto:users-boun...@gecode.org] *On > Behalf Of *Max Ostrowski > *Sent:* Thursday, August 23, 2012 2:05 PM > *To:* Guido Tack > *Cc:* users@gecode.org > *Subject:* Re: [gecode-users] Propagating to Fixpoint > > > > Great, this really solves the problem. > Have not thought of this. > Thank you very very much. > In my example everything works as expected and the fixpoint is always > the same. > Are you sure that it can still happen that the fixpoint of the same > set of constraints is different, > if i use a different order? > Then i have to stick to my fallback method. > > > Nevertheless, > big thanks for solving my problem. Everything works now and is a > hundred times faster :) > > Best, > Max > > On 08/23/2012 01:44 PM, Guido Tack wrote: > > Without looking at the details: Do you check the return value of > IntView::lq? The view functions are not meant to be used in models. > If lq returns failure, you have to check that yourself, or the space > won't be failed. > > > > Cheers, > > Guido > > > -- > > Guido Tack > > > > > On 23/08/2012, at 13:20, Max Ostrowski <ostro...@cs.uni-potsdam.de > <mailto:ostro...@cs.uni-potsdam.de>> wrote: > > Actually its quite complicated. > I'm currently debugging and have 60 constraints written on paper > that have this effect. > Two of them are actually not reified constraints but directly > using IntView::lq(constant) > > I can give you a description where it happens in my system, but it > will be a mess for you to write simplified code that reproduces this. > > Actually given two spaces original1 and original2 that are equal, > variables are constraint like this: > > posx(6)=[0..185] posx(5)=[0..190] posx(4)=[0..142] > posx(3)=[0..158] posx(2)=[0..113] posx(1)=[0..157] > > > > all reified constraints are posted with free boolean variables, using > > > > linear(*this, intArgs, intVarArgs, r,0,b_[boolvar],ICL_DEF); > > Now i set the boolean variables accordingly, always doing > propagation (calling status()) after each single posting > > To original1 false ((-1 $* posx(3))+posx(1))$<=0 > > To original1 false ( 10+(-1 $* posx(6))+posx(5))$>0 > To original1 false ( 58+(-1 $* posx(5))+posx(4))$>0 > To original1 true posx(6)<=69 // this > is no reified constraint, but just posted IntView(posx(6)).lq(69) > To original1 false ( 43+(-1 $* posx(6))+posx(1))$>0 > To original1 false ((-1 $* posx(5))+posx(2))$<=0 > To original1 true ((-1 $* posx(1))+posx(3))$<=0 > To original1 true ((-1 $* posx(4))+posx(3))$<=0 > To original1 false ( 42+(-1 $* posx(5))+posx(3))$>0 > To original1 false ( 42+(-1 $* posx(6))+posx(3))$>0 > To original1 true ( -42+(-1 $* posx(3))+posx(1))$<0 > To original1 true ( -15+(-1 $* posx(6))+posx(1))$<0 > To original1 true ( 58+(-1 $* posx(1))+posx(4))$>0 > To original1 true ( 42+(-1 $* posx(1))+posx(3))$>0 > To original1 false ((-1 $* posx(1))+posx(2))$<=0 > To original1 true ((-1 $* posx(6))+posx(1))$<=0 > To original1 true ((-1 $* posx(5))+posx(1))$<=0 > To original1 true ( -10+(-1 $* posx(5))+posx(1))$<0 > To original1 true ((-1 $* posx(2))+posx(1))$<=0 > To original1 false ( 43+(-1 $* posx(2))+posx(1))$>0 > To original1 true ( -28+(-1 $* posx(1))+posx(6))$>0 > To original1 false ( 28+(-1 $* posx(6))+posx(1))$>0 > To original1 false ( -43+(-1 $* posx(1))+posx(2))$<0 > To original1 true ( -58+(-1 $* posx(4))+posx(1))$<0 > To original1 true posx(1)<=29 // this is > no reified constraint, but just posted IntView(posx(1)).lq(29) > To original1 false ((-1 $* posx(1))+posx(4))$<=0 // lets > call this constraint X > > Now this space is failed. > > Something similar with the second space, but posting nr. 5 is > different. > > To original2 false ((-1 $* posx(3))+posx(1))$<=0 > To original2 false ( 10+(-1 $* posx(6))+posx(5))$>0 > To original2 false ( 58+(-1 $* posx(5))+posx(4))$>0 > To original2 false ((-1 $* posx(1))+posx(4))$<=0 // this is > constraint X, it is now posted on this position, no longer as the > last constraint anymore > To original2 true posx(6)<=69 // this is > no reified constraint, but just posted IntView(posx(6)).lq(69) > To original2 false ( 43+(-1 $* posx(6))+posx(1))$>0 > To original2 false ((-1 $* posx(5))+posx(2))$<=0 > To original2 true ((-1 $* posx(1))+posx(3))$<=0 > To original2 true ((-1 $* posx(4))+posx(3))$<=0 > To original2 false ( 42+(-1 $* posx(5))+posx(3))$>0 > To original2 false ( 42+(-1 $* posx(6))+posx(3))$>0 > To original2 true ( -42+(-1 $* posx(3))+posx(1))$<0 > To original2 true ( -15+(-1 $* posx(6))+posx(1))$<0 > To original2 true ( 58+(-1 $* posx(1))+posx(4))$>0 > To original2 true ( 42+(-1 $* posx(1))+posx(3))$>0 > To original2 false ((-1 $* posx(1))+posx(2))$<=0 > To original2 true ((-1 $* posx(6))+posx(1))$<=0 > To original2 true ((-1 $* posx(5))+posx(1))$<=0 > To original2 true ( -10+(-1 $* posx(5))+posx(1))$<0 > To original2 true ((-1 $* posx(2))+posx(1))$<=0 > To original2 false ( 43+(-1 $* posx(2))+posx(1))$>0 > To original2 true ( -28+(-1 $* posx(1))+posx(6))$>0 > To original2 false ( 28+(-1 $* posx(6))+posx(1))$>0 > To original2 false ( -43+(-1 $* posx(1))+posx(2))$<0 > To original2 true ( -58+(-1 $* posx(4))+posx(1))$<0 > To original2 true > posx(1)<=29 // this is no > reified constraint, but just posted IntView(posx(1)).lq(29) > > This Space is not failed > > > > > I know this is quite a huge blob of data and you probably wont > have the time to reconstruct it. > I will just have to adjust my code that this can happen. > BTW: Can you confirm that this is due to the use of IntView::lq ? > I never experienced this without them. > > Best, > Max > > > > > On 08/23/2012 12:40 PM, Guido Tack wrote: > > I guess under certain conditions the code that posts the constraints (not > the actual propagator) can be stronger than ICL_DEF, in which case this can > happen. > > If it's not too complicated, could you send us a concrete example? > > > > Cheers, > > Guido > > > > > > > > _______________________________________________ > Gecode users mailing list > users@gecode.org <mailto: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