Hello! Thank you very much, it is exactly what I needed.
Thank you for your help again. Zoltán Ujhelyi On 2008.08.23., at 8:56, Guido Tack wrote: > Hi! > > Please let me know if this is more or less what you wanted to use: > > BExpr be = new BExpr(new Expr(new > Expr(space.var2).minus(space.var1)), IRT_EQ, 0, ICL_DOM); > > The ICL argument is now part of the BExpr, so it means that the > linear constraint inside is propagated with ICL_DOM. I hope that's > what you need. It will be available in Gecode/J 2.2.0 (very > probably next week). > > Cheers, > Guido > > Ujhelyi Zoltan wrote: > >> Hello, >> >> thank you for your reply. >> >> I understand the problem stated here, but I would like to ask whether >> there is a solution to add a constraint like that to a Boolean >> Expression with the domain consistent propagation (ICL_DOM). >> >> I did not found any possibilities for that looking in the Gecode/J >> API, but it would help a lot for our project. >> >> Thank you, >> Ujhelyi Zoltán >> On 2008.08.11., at 11:34, Guido Tack wrote: >> >>> Could you please post to the mailing list? Thanks. Guido >>> >>> Am 11.08.2008 um 11:22 schrieb Ujhelyi Zoltan: >>> >>>> Hello, >>>> >>>> thank you for your reply. >>>> >>>> I understand the problem stated here, but I would like to ask >>>> whether there is a solution to add a constraint like that to a >>>> Boolen Expression with the domain consistent propagation (ICL_DOM). >>>> >>>> I did not found any possibilities for that looking in the Gecode/J >>>> API, but it would help a lot for our project. >>>> Thank you, >>>> Zoltán Ujhelyi >>>> On 2008.08.11., at 9:03, Guido Tack wrote: >>>> >>>>> Hi. >>>>> >>>>> As you've already found out, you have to use domain consistent >>>>> propagation (ICL_DOM) to get the result you want. You should be >>>>> able to use post(space, new Expr(space.variable1), IRT_EQ, new >>>>> Expr(space.variable2), ICL_DOM) to get the desired result. I'm >>>>> not 100% sure, but I think your solution that uses e=variable1- >>>>> variable2, e=0 doesn't work because only the e=0 is propagated to >>>>> domain consistency, while e=variable1-variable2 still only >>>>> achieves bounds consistency. >>>>> >>>>> Cheers, >>>>> Guido >>>>> >>>>> Ujhelyi Zoltan wrote: >>>>> >>>>>> Hello again, >>>>>> >>>>>> I have been experimenting with the questions raised in my >>>>>> previous mail. >>>>>> >>>>>> I created a small Gecode space to be able to test the problem >>>>>> in a >>>>>> smaller scale, where I did use two variables (variable1, >>>>>> variable2, >>>>>> both IntVars with the domain {0,5}) and three constraints: >>>>>> variable1 >>>>>> equals variable2, and variable2 cannot have the values 2 and 4. >>>>>> >>>>>> In all of my tests the latter two constraints are described like >>>>>> that: >>>>>> >>>>>> post(space, new BExpr(space.variable1, IRT_NQ, 2)); >>>>>> post(space, new BExpr(space.variable1, IRT_NQ, 4)); >>>>>> >>>>>> For the third constraint I had several tries. When I was using >>>>>> the >>>>>> rel() clause to write the constraint, I got the expected result: >>>>>> >>>>>> Variable #1: {0..1,3,5} >>>>>> Variable #2: {0..1,3,5} >>>>>> >>>>>> But when using a similar construct I would like to use in the >>>>>> static >>>>>> verifier, I got no result for the second variable, it can has all >>>>>> values from it's domain. >>>>>> >>>>>> post(space, new BExpr(space.variable1, IRT_EQ, space.variable2)); >>>>>> >>>>>> Reading about different propagators, I have been able to get the >>>>>> expected result with the use of the ICL_DOM propagator, but only >>>>>> if I >>>>>> was posting the constraint directly, like that: >>>>>> >>>>>> post(space, new Expr(space.variable1), IRT_EQ, new >>>>>> Expr(space.variable2),org.gecode.GecodeEnumConstants.ICL_DOM); >>>>>> >>>>>> But if I tried to translate the a BExprs to that form, I did not >>>>>> succeed: >>>>>> >>>>>> Expr expression = new Expr(new >>>>>> Expr(space.variable2).minus(space.variable1)); >>>>>> post(space, new Expr(expression), IRT_EQ, 0, >>>>>> org.gecode.GecodeEnumConstants.ICL_DOM); >>>>>> >>>>>> Can you tell me a way how to enable this strong ICL_DOM >>>>>> propagators >>>>>> meanwhile using the BExpr form, if it is possible? It would help >>>>>> our >>>>>> project a lot, it would simplify it's code. >>>>>> >>>>>> Thank you for your help, >>>>>> Zoltán Ujhelyi >>>>>> On 2008.08.09., at 18:30, Ujhelyi Zoltan wrote: >>>>>> >>>>>>> Hello all, >>>>>>> >>>>>>> we are currently trying to build a static checker system on >>>>>>> top of >>>>>>> Gecode/J 2.1.1. (in an Eclipse environment), and we have found >>>>>>> an >>>>>>> interesting case. >>>>>>> >>>>>>> In order to allow us greater flexibility we try to use the >>>>>>> Expression >>>>>>> API (it allows us to build constraints in a hierarchical >>>>>>> manner). >>>>>>> >>>>>>> I was testing the implementation, and found an interesting final >>>>>>> result: there were to IntVars, which were supposed to be the >>>>>>> same, did >>>>>>> not have the same final ranges: one of them had {2,4}, but the >>>>>>> other >>>>>>> had {2,3,4}. I tried to trace back the code to look whether the >>>>>>> constraints were wrong or not, and found the following >>>>>>> expression >>>>>>> building term: >>>>>>> >>>>>>> BExpr expression = new BExpr(new Expr(variable1),relation, new >>>>>>> Expr(variable2)); >>>>>>> >>>>>>> Tracing the variables variable1 was a new variable, it hadn't >>>>>>> been >>>>>>> constrained yet, while variable2's domain had been limited to >>>>>>> the >>>>>>> values 2 and 4 (and they were the variables mentioned before in >>>>>>> this >>>>>>> letter), while the relation had the value IRT_EQ. >>>>>>> >>>>>>> I tried a post of the expression right after it's construction >>>>>>> to see >>>>>>> whether it helps or not: >>>>>>> org.gecode.Gecode.post(space, expression); >>>>>>> >>>>>>> It did not solve the problem, but when I replaced the post >>>>>>> method to >>>>>>> the following rel call, the constraint handling was working as I >>>>>>> expected it before. >>>>>>> >>>>>>> rel(space, variable1, IntRelType.IRT_EQ, variable2); >>>>>>> >>>>>>> I would like to know, whether this phenomenon is the intentional >>>>>>> (maybe I do not understand something under the hood), or not. >>>>>>> And if >>>>>>> you could tell me a way to avoid it, I would be very glad. >>>>>>> >>>>>>> Thank you very much in advance for your help, >>>>>>> Zoltán Ujhelyi >>>>>>> _______________________________________________ >>>>>>> Gecode users mailing list >>>>>>> [EMAIL PROTECTED] >>>>>>> https://www.gecode.org/mailman/listinfo/gecode-users >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Gecode users mailing list >>>>>> [EMAIL PROTECTED] >>>>>> https://www.gecode.org/mailman/listinfo/gecode-users >>>>> >>>> >>> >> >> >> _______________________________________________ >> Gecode users mailing list >> [EMAIL PROTECTED] >> https://www.gecode.org/mailman/listinfo/gecode-users > _______________________________________________ Gecode users mailing list [EMAIL PROTECTED] https://www.gecode.org/mailman/listinfo/gecode-users