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