[gecode-users] Position of IntVar in IntVarArray within a propagate function

Peter Vanhee peter.vanhee at gmail.com
Tue Apr 13 18:52:04 CEST 2010


Of course, I missed the most obvious solution :) This will do the trick.

Thanks!
Peter

On 13 Apr 2010, at 18:50, Mikael Zayenz Lagerkvist wrote:

> When you define your propagator, just add two int-fields pos0 and pos1 and instantiate the propagators with the appropriate info. Remember to update the fields when the propagator is copied.
> 
> /Mikael
> 
> --
> Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz
> 
> On 13 apr 2010, at 18.03, Peter Vanhee <peter.vanhee at gmail.com> wrote:
> 
>> Hey all,
>> 
>> I am working on a binary propagator which needs to know the position of the two variables
>> it receives within the domain of the problem (coded with an IntVarArray).
>> 
>> I am not sure whether this is possible (and if it should be possible!) to access this information, as I believe
>> a binary propagator should be able to propagate without knowing the context.
>> 
>> Still, in my particular problem I don't see any other solution.
>> 
>> Here a code snippet:
>> 
>>       // in the model
>>       IntVarArray        domains;
>> 
>>       // in the propagator
>>       ExecStatus
>>       BinaryPropagator::propagate(Space& home, const ModEventDelta& med) {
>> 
>>           if (x0.assigned()) {
>>               int val = x0.val();
>> 
>>               // need to know index of x0 within "domains" to access info that depends on position in domain + value on that position
>>               // does x0 has some reference to this? or home?
>>               int idx = ?
>>           }
>>           else {
>>               // same here but with x1
>>           }
>>       }
>> 
>> A simple but rather dumb solution would be to encode the position within the values using
>> some mathematical trick, but this will create unnecessary holes within the domain.
>> 
>> Thanks for any help on this!
>> 
>> Peter
>> 
>> 
>> _______________________________________________
>> Gecode users mailing list
>> users at gecode.org
>> https://www.gecode.org/mailman/listinfo/gecode-users




More information about the users mailing list