[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