I've discovered that I can do what I want by posting BExprs anyway,  
and never have to create all those reified Booleans. Yay.

Malcolm

On 10/03/2008, at 6:42 PM, Mikael Zayenz Lagerkvist wrote:

> For all reified constraints that I can think of, instantiating the
> "base" variables will also mean that the Boolean variable will get
> instantiated. However, if you build more complicated expressions with
> the Booleans and additional intermediate variables, then these might
> not be instantiated. For example, think of the following constraint
> system
>    IntVar x;
>    BoolVar IsA, IsB, Neither;
>    x = a   <=>  IsA;
>    x = b   <=>  IsB;
>    IsA \/ IsB \/ Neither;
> The variable Neither will not be instantiated if x is instantiated to
> a or b (it can be either true or false, the constraints are satisfied
> either way).
>
> Cheers,
> Mikael
>
> On Mon, Mar 10, 2008 at 5:05 AM, Malcolm Ryan <[EMAIL PROTECTED] 
> > wrote:
>> If I use reification like this, do I have to write my search code so
>> that it instantiates all the booleans as well as all the 'normal'
>> variables? Or can I rely on the fact that once all the 'normal'
>> variables are instantiated all the booleans should also be  
>> instantiated.
>>
>> Malcolm
>>
>>
>>
>> On 06/03/2008, at 4:15 PM, Christian Schulte wrote:
>>
>>> Use reification, that's clumsy but works. So, with minimodeling
>>> support it
>>> should be something like (~ reifies a linear relation, && is
>>> conjunction,
>>> imp is implication, and tt means that the statement must be true):
>>>      post(home, tt(imp(~(v1 == 2),~(v2 != 1) && ~(v3 != 3)));
>>> or directly:
>>>      BoolVar b1(home,0,1), b2(home,0,1), b3(home,0,1), b23(home, 
>>> 0,1);
>>>      rel(home, v1, IRT_EQ, 2, b1);
>>>      rel(home, v2, IRT_NQ, 1, b2);
>>>      rel(home, v3, IRT_NQ, 3, b3);
>>>     rel(home, b2, BOT_AND, b3, b23);
>>>      rel(home, b1, BOT_IMP, b23, 1);
>>>
>>> Or check whether extensional constraints work for you.
>>>
>>> Christian
>>>
>>> --
>>> Christian Schulte, www.ict.kth.se/~cschulte/
>>>
>>>
>>> -----Original Message-----
>>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
>>> Behalf
>>> Of Debdeep Banerjee
>>> Sent: Thursday, March 06, 2008 3:03 PM
>>> To: [EMAIL PROTECTED]
>>> Cc: [EMAIL PROTECTED]
>>> Subject: [gecode-users] If then type constraints
>>>
>>> Hi,
>>> How do I model if-then style constraints ? What I want to do is post
>>> constraints if a variable is assigned a particular value. For  
>>> example
>>> say  I have variable set V { v1, v2, v3} and each of them has the
>>> domain
>>> {1,2,3}. what I want to achieve is
>>>   if  v1== 2  then
>>>        v2 !=1  /\  v3 !=3
>>>
>>> I know I can do this using a custom propagator, but is there any
>>> other way ?
>>>
>>> With regards
>>> Debdeep
>>>
>>> --
>>> Debdeep Banerjee
>>> PhD Candidate
>>> CSL/RSISE/NICTA
>>> Australian National University
>>> Email: [EMAIL PROTECTED]
>>> Web:http://rsise.anu.edu.au/~banerjed
>>>
>>>
>>>
>>> _______________________________________________
>>> 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
>>
>
>
>
> -- 
> Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/


_______________________________________________
Gecode users mailing list
[EMAIL PROTECTED]
https://www.gecode.org/mailman/listinfo/gecode-users

Reply via email to