[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