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