Hi everybody, i have to step into this discussion as i have similar demands ;) I want to be notified whenever a boolean variable is assigned. Currently i do this with a modified version of "wait". So i'm using a propagator that watches the boolean variable. It furthermore has a 4byte member variable which then says me which variable i do watch. During propagation i then can add the changed variable to the list of assigned variables. I do not change the domain of anything. Now my question: Is it in this case more clever to use advisors? I do not need to propagate, but as i'm not doing any propagation there should be no overhead. Currently the performance of my systems suffers a bit because i have to subscribe to every boolean variable. Every propagator has a 4byte member. All this is copied during cloning of a space, which happens quite often. Can i avoid this using advisors?
Any idea how i can avoid copying the 4byte identifier of my propagator. It is just used for the identification of which boolean variable i'm subscribed to. I do not need a copy of the propagator for each space. Best, Max On 02/03/2012 09:07 AM, Guido Tack wrote: > Hi Matthew, > > Gecode does not keep track of domain modifications on that level. The > first thing I'd try is whether iterating through the variables is > really too expensive. After all, checking whether the domain has > changed is really cheap - just compare the domain sizes before and > after (accessing them is constant time). > > If iteration is prohibitively expensive, you have to implement a > custom propagator that doesn't implement a constraint but simply > "listens" to domain modifications. It would be posted for all > variables you're interested in, create advisors to be notified of > modifications (so that it doesn't have to iterate), and simply record > that information in an external data structure. It doesn't ever have > to be scheduled for propagation. Our tutorial documentation should > contain all the information to get you started. Note that this > approach also incurs an overhead, because each modification needs to > be recorded somewhere, but that's just unavoidable. > > Cheers, > Guido > > On 3 Feb 2012, at 15:14, Matthew Kitching wrote: > >> Hi all, >> >> After calling "status" is it possible to get a list of all the domain >> values pruned, or even a list of all the variables who had their >> domains pruned? I am able to iterate through all variables and >> compare their domains, but this is of course, not very fast. >> >> Thanks a lot, >> >> Matthew >> _______________________________________________ >> Gecode users mailing list >> [email protected] <mailto:[email protected]> >> https://www.gecode.org/mailman/listinfo/gecode-users > > -- > Guido Tack, http://people.cs.kuleuven.be/~guido.tack/ > <http://people.cs.kuleuven.be/%7Eguido.tack/> > > > > > > _______________________________________________ > Gecode users mailing list > [email protected] > https://www.gecode.org/mailman/listinfo/gecode-users >
_______________________________________________ Gecode users mailing list [email protected] https://www.gecode.org/mailman/listinfo/gecode-users
