Dear all, I have a question (probably very naive!) about the use of advisor return values. From MPG, an advisor could: schedule the associated propagator (ES_NOFIX), avoid its execution (ES_FIX) or fail the propagator in advance (ES_FAILURE). My question comes out when using multiple advisors in the same propagator. Let suppose the propagator is posted on a variable and an array of variables (in my case both are sets). Now let us suppose that one of the advisors (say a_i) on the array is executed (i.e. the advise method of the propagator is called with it as argument). I would like to have clear what will happen to the other advisors executed after it depending on it return value.
1) a_i returns ES_FAILURE. My guess is that the propagator wont be run, as the entire space will become failed. Am I right? 2) a_i returns ES_NOFIX. My guess here is that the propagator will be scheduled, how ever what happen if after this advisor, the advisor a_i+1 returns ES_FIX?. IMO the right thing to schedule the propagator, but is this done by gecode automatically? In general, my question is how gecode handles incremental information got from the execution of advisors?. I am asking that because I have some changes in the search tree between using advised vs. nod-advised propagation and favoring unadvised propagation. This is a bit strange to me since in the past I have been used advisors and they greatly outperform non advised propagation. Of course it can be a bug in my problem (the most probable case!). Regards, -- Gustavo Gutierrez
_______________________________________________ Gecode users mailing list [email protected] https://www.gecode.org/mailman/listinfo/gecode-users
