[Gecode] One constraint = multiple propagators
Guido Tack
tack at ps.uni-sb.de
Tue Apr 20 15:55:48 CEST 2004
Hi!
We have implemented some constraints as multiple propagators, one for each
propagation rule, to make them react to more specific modification events.
This raises two questions:
* Efficiency: Multiple propagators need more memory for dependencies and more
time during copying. This can become really expensive, as we have seen for
the intersection constraint. Should we make different versions of constraints
available, one that does everything in a single propagator, and one that
reacts to specific events? Any idea how to find out what makes more sense?
* Entailment: How do we check that the whole constraint is entailed, or
replace several propagators by a simpler one? Example: A selection constraint
that notices that the selector variable is determined could be replaced by
just a union or whatever. We could either check for entailment in every
propagator, and let only one of them create the replacement propagator(s), or
have some common variable that they use to communicate (again quite
expensive...)
Another thing that is not quite clear to us is whether there is any way for a
propagator to find out which variables really triggered what propagation
conditions. This could be used to use a single propagator for multiple
propagation rules.
Regards,
Guido
--
Guido Tack
Programming Systems Lab
http://www.ps.uni-sb.de/~tack
More information about the gecode-users
mailing list