Hi Christian Below is my reply, which I have changed a little bit since the original reply was badly worded on my part:
The values were not sorted. We sorted the values before using them with inter_v and ít solved the problem. :-) I have a small follow-up question regarding advisors: We use a series of advisors to schedule the propagator, but we are uncertain on what ModEvent is used, if the domain becomes smaller, but is still larger than 1? That is, if the domain is reduced to size 1, the ModEvent is ME_GEN_ASSIGNED, but wha ModEvent is used if the size is decreased from e.g. 4 to 3? Kind regards Morten Christian Schulte skrev: > Sorry, guys: somebody answered that email but somehow I must have > deleted that… Could that person please resend the message. Thanks a bunch! > > > > Sorry again from an idiot who cannot handle his mail client > > Christian > > > > -- > > Christian Schulte, www.it.kth.se/~cschulte/ > > > > *From:* users-boun...@gecode.org [mailto:users-boun...@gecode.org] *On > Behalf Of *Christian Schulte > *Sent:* Friday, January 23, 2009 5:05 PM > *To:* 'Anden blah'; us...@gecode.org > *Subject:* Re: [gecode-users] Value intersection problem > > > > Hi > > > > Are the values sorted? They must be even though the documentation > doesn’t say it (damn). > > > > Christian > > > > -- > > Christian Schulte, www.it.kth.se/~cschulte/ > > > > *From:* users-boun...@gecode.org [mailto:users-boun...@gecode.org] *On > Behalf Of *Anden blah > *Sent:* Friday, January 23, 2009 4:44 PM > *To:* us...@gecode.org > *Subject:* [gecode-users] Value intersection problem > > > > Hi > > I am trying to restrict the values of an IntView by doing the following: > ...(values is given as parameter for the method containing this code, > the type is const set<string>& ) > > > vector<string> v; > > for(set<string>::const_iterator setIt = values.begin(); setIt!= > values.end(); setIt++) > { > v.push_back(*setIt); > } > GECODE_AUTOARRAY(int,restrictedDoms,v.size()); > for(int i=0;i<v.size();i++) > { > restrictedDoms[i] = atoi(v[i].c_str()); > } > Gecode::Iter::Values::Array restrictIterator(restrictedDoms, v.size()); > > return iv.inter_v(homeFZ, restrictIterator, false); > > --- > > I can inspect the code and see that the values contained in > "restrictedDoms" are the values 1 to 10. Furthermore I can see that > iv.size() is 10 (values 1 to 10) before the call to inter_v (and > unassigned of course). Then after the call to inter_v, iv is assigned, > and I can see that the value it is assigned to is the first value in the > restrictedDoms array. > > So what am I doing wrong? > > Thanks! > > Andreas > > p.s. Of course it is useless to intersect a variable with domain 1 to > 10 with the values 1 to 10, but still the behavior is unexpected. > > ------------------------------------------------------------------------ > > What can you do with the new Windows Live? Find out > <http://www.microsoft.com/windows/windowslive/default.aspx> > > > ------------------------------------------------------------------------ > > _______________________________________________ > Gecode users mailing list > us...@gecode.org > https://www.gecode.org/mailman/listinfo/gecode-users _______________________________________________ Gecode users mailing list us...@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users