[gecode-users] Problem with constraint

Guido Tack tack at ps.uni-sb.de
Sat Aug 23 08:56:34 CEST 2008


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
>>>>>> users at gecode.org
>>>>>> https://www.gecode.org/mailman/listinfo/gecode-users
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Gecode users mailing list
>>>>> users at gecode.org
>>>>> https://www.gecode.org/mailman/listinfo/gecode-users
>>>>
>>>
>>
>
>
> _______________________________________________
> Gecode users mailing list
> users at gecode.org
> https://www.gecode.org/mailman/listinfo/gecode-users





More information about the gecode-users mailing list