[gecode-users] Propagating to Fixpoint

Max Ostrowski ostrowsk at cs.uni-potsdam.de
Thu Aug 23 13:20:23 CEST 2012


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
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20120823/4026e836/attachment.html>


More information about the users mailing list