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