Peter, the changelog for the transitions from 1.* to 2.* and 2.* to 3.* actually tells you what and how to change.
Then, we are currently in the process of writing "Modeling and Programming with Gecode". Please give me 30 minutes to send out an annoucement of a draft. The draft has a chapter that addresses your problem! Christian -- Christian Schulte, www.ict.kth.se/~cschulte/ -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Peter Vanhee Sent: Friday, March 19, 2010 3:47 PM To: [email protected] Subject: [gecode-users] Iterating/filtering IntView in Gecode 3.x Hey all, I have more or less the same problem as mentioned here: http://thread.gmane.org/gmane.comp.lib.gecode.user/919, however the solution seems to be outdated for gecode 3.x: e.g. GECODE_AUTOARRAY is not existing anymore etc. Within the binary propagator, and when one variable is assigned (x0), I need to filter values in the other variable (x1). What I do right now is: // loop over all values of x1 and push to remove if necessary vector<int> remove; for (IntVarValues i(*x1); i(); ++i) { if (!predicate(home, x0->val(), i.val())) remove.push_back(i.val()); } // remove values from domain for(vector<int>::iterator i=remove.begin(); i!=remove.end(); ++i) { GECODE_ME_CHECK(x1->nq(_home, r)); } This is not at all efficient: 90% of the time is spent in Int::IntVarImp::nq_full, and 38% in Int::IntVarImp::RangeList::min(). How can I change this? I have variables with big domains (into the millions of values) that have few continuous ranges. Thanks, Peter _______________________________________________ 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
