[gecode-users] Propagator return values

Martin Mann mmann at informatik.uni-freiburg.de
Tue May 26 10:10:01 CEST 2009


 > Christian Schulte (25.5.2009 16:31):
 >> If no variables are modified by a propagator and the propagator says
 >> ES_NOFIX, Gecode still knows that nothing has changed. So finding out
 >> whether something has changed, and if yes reporting ES_NOFIX and
 >> ES_FIX
 >> otherwise is exactly the same than reporting ES_NOFIX.


ok ... now I am confused ... :)

So to say, if I am not changing the domains within my filtering it 
doesnt matter what I return (ES_FIX or ES_NOFIX) ?

But isnt there a difference in the "meaning"? That is, either I want to 
tell the engine I cannot do any filtering anymore (ES_FIX) or that only 
a partial filtering of the domains was done?

"[..]
# ES_NOFIX: the propagator has done propagation
# ES_FIX: the propagator has done propagation and has computed a 
fixpoint. That is, running the propagator immediately again will do nothing.
[..]" (from Gecode documentation)

So in a case I dont want to filter (e.g. due to too large domain sizes 
etc.) what is better to return?

I would guess ES_FIX, because the propagator should not be called again 
until another change of the domains has been done...

Or am I wrong about that?

Think the use cases / description of the ExecStatus possibilities is 
quite short. Everytime I have to write a propagator I am a bit confused 
what to return. Only the ES_FAILED and ES_SUBSUMED cases are totally 
clear to me.. ;)


Thanks for your help to the eyeless user!

Martin





More information about the gecode-users mailing list