Thanks much for your help!
Regards, Gustavo — Gustavo On Wed, Aug 20, 2014 at 7:03 PM, Guido Tack <t...@gecode.org> wrote: > On 21 Aug 2014, at 5:18 am, Gustavo Gutierrez <gustavo.ggutier...@gmail.com> > wrote: >> Hi Christian, >> >> Thanks a lot for the paper reference. It was indeed the kind of >> experimentation I was looking for. I have two further questions, the first >> of them I probably know the answer already but I just one confirmation. >> >> 1) Suppose you have two solvers for the same csp that only differ in the >> first one not using any optimization like modification events or dynamic >> scheduling of propagators. The second one uses the optimization so described >> in the paper you pointed out. Given that both solvers are applied to the >> same problem instance the search trees must be the same, right?. My guess >> here is founded on the fact that we talk about an optimization but in both >> cases every solver will compute the same fix point for every node in the >> search tree. > That's correct (as long as the propagators are monotonic, which most of them > are). >> 2) Let suppose a solver that uses both finite domains and finite sets. Let >> me suppose also for this question that propagating on set variables is more >> expensive that on integer variables (probably due to the domain >> representation ). Now, if there are two propagators in the solver that >> report the same cost, for instance binary::high does the geode kernel make >> any distinction between them when they are going to be executed?. > No, the variable type does not have an influence on the scheduling. You'd > have to give your set propagators a higher cost if you want them to be > scheduled after the integer propagators. >> My last question is derived from the following use case. How do I force the >> execution of all propagators on set variables after all the propagators on >> finite variables have been executed. > As I said, give them higher cost. But you probably won't be able to > guarantee execution order (and a propagator for x subset y might be a lot > cheaper than alldifferent on an array of integer variables!). > Cheers, > Guido >> >> Regards, >> Gustavo >> — >> Gustavo >> >> >> On Wed, Aug 20, 2014 at 1:12 PM, Christian Schulte <cschu...@kth.se> wrote: >> >> We have measured the impact for integer variables even with different >> modification events. You can check it here: >> >> >> >> >> http://www.gecode.org/~schulte/paper.html?id=SchulteStuckey:TOPLAS:2008 >> >> >> >> >> >> >> There might be more to gain for set variables, but I am only guessing here. >> >> >> >> >> >> >> Cheers >> >> >> >> Christian >> >> >> >> >> >> >> -- >> >> >> >> Christian Schulte, KTH, web.it.kth.se/~cschulte/ >> >> >> >> >> >> >> From: users-boun...@gecode.org [mailto:users-boun...@gecode.org] On Behalf >> Of Gustavo Gutierrez >> Sent: Wednesday, August 20, 2014 07:26 PM >> To: Guido Tack >> Cc: gecode list >> Subject: Re: [gecode-users] Set propagators and modification event delta >> >> >> >> >> >> Hi Guido, >> >> >> >> >> Thanks for the answer. Did you measured the impact of using modification >> events in the propagate method versus normal implementations of the >> propagators? >> >> >> >> >> What I mean by normal implementations is suppose you implement the pruning >> rules without taking into account what have changed since the last time. >> That will of course maintain the correctness but you will end up applying >> unnecessary operations. Are the two variants significantly different in the >> case of set variables? >> >> >> >> >> I'm asking this because using modifications events lead to more involved >> code and is very easy to get it wrong. But on the other hand, is something I >> will keep doing for performance reasons. >> >> >> >> >> Regards, >> >> >> Gustavo >> >> >> — >> Gustavo >> >> >> >> >> On Wed, Aug 20, 2014 at 3:27 AM, Guido Tack <t...@gecode.org> wrote: >> >> >> Hi Gustavo, >> >> modification events are really sets of modifications, e.g. if you have only >> a lower bound modification the event is ME_SET_GLB, for only upper bound >> it's ME_SET_LUB, but if both have been modified you get ME_SET_BB. >> >> You guessed correctly: The testSetEventLB function returns true if the >> argument event contains a lower bound modification (so it could be >> ME_SET_GLB, ME_SET_BB, ME_SET_CGLB or ME_SET_CBB). The versions with >> multiple arguments test whether any of them contains a lower bound >> modification (the implementation computes the union of the events and then >> does the check). >> >> Cheers, >> Guido >> >> On 20 Aug 2014, at 12:33 am, Gustavo Gutierrez >> <gustavo.ggutier...@gmail.com> wrote: >> >> > Dear all, >> > >> > I am trying to write a propagator and I really would like to take >> > advantage of the modification event information offered by the geocode >> > kernel in the respective argument to the propagate method. To that end, I >> > am looking at set propagators as an example. In concrete I am looking at >> > the code of the intersection propagator in inter.hpp. >> > >> > That implementation calls testSetEventLB defined in common.hpp. My >> > question is concrete: does this function returns true when the >> > modification event passed as parameter signals a modification of the lower >> > bound?. My intuition from its definition and the internal functions it >> > uses tell me so but I would like to corroborate it with you. >> > >> > There are other testSetEvent* that take a different number of arguments >> > (all of them being modification events). For example, testSetEventLB with >> > two arguments. Does this one returns true if any of the two events imply >> > modification to the lower bounds? >> > >> > Best regards, >> > -- >> > Gustavo Gutierrez >> > _______________________________________________ >> > Gecode users mailing list >> > users@gecode.org >> > https://www.gecode.org/mailman/listinfo/gecode-users >> >> >> >> >>
_______________________________________________ Gecode users mailing list users@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users