Hi Kish, Oh, I see.
How do you know that the no-goods do not work? MPG tries to explain that even with using no-goods you might not get the guarantee that a solution is only found once. So, it might not terminate when restarting (where I am guessing that you search for _all_ solutions, right?). Best Christian -- Christian Schulte, Professor of Computer Science, KTH, www.ict.kth.se/~cschulte/ -----Original Message----- From: Kish Shen [mailto:kiss...@cisco.com] Sent: Friday, November 22, 2013 7:28 PM To: cschu...@kth.se; users@gecode.org Subject: Re: [gecode-users] Nogoods limit Hi Christian, I think I am using the predefined branchers, i.e. I just do: branch(*solver, vars, varselect, valchoice); I think this is using the pre-defined branchers? and then I set up a search engine as I showed previously. Thanks and cheers, Kish On 22/11/2013 14:04, Christian Schulte wrote: > Hi Kish, > > Let me guess: you are not using the pre-defined branchers from Gecode > or do you? If you use your own branchers you have to add support that > actually generates the no-goods. > > Cheers > Christian > > -- > Christian Schulte, Professor of Computer Science, KTH, > www.ict.kth.se/~cschulte/ > > > -----Original Message----- > From: users-boun...@gecode.org [mailto:users-boun...@gecode.org] On > Behalf Of Kish Shen > Sent: Friday, November 22, 2013 6:25 AM > To: users@gecode.org > Subject: [gecode-users] Nogoods limit > > Hi, > > I have now got restart search implemented, thanks to help from > Christian. I finally decided to implement restart DFS as a separate > search method in my interface, and only allow one solution in this > case, because getting the previous solution posted as a no-goods > looked quite difficult, and probably not a good idea for most search anyway. > > I ran some tests, and it seems that the restart with cutoff is > working, but the no-goods limit is not: > > I tested the search with an N-Queens problem, using INT_VAR_NONE and > INT_VAL_MIN for variable and value selection, and a constant cutoff. > The idea here is that every single restart (without no-goods) should > perform exactly the same search, so if the cutoff is set below the > number of failures before the solution is found, then the search will not terminate. > This is indeed the case, e.g. for N=8, with the cutoff set at 23, then > the search does not terminate, but with cutoff=24, a solution is > returned. Also, using a geometric cutoff, a solution is also found, > even with a low initial cutoff. So this seems to show that the restart > with cutoff is working as expected. > > However, it seems that I can't get the nogoods_limit to work -- using > the same 8-Queens example, with a constant cutoff of 23, I expect that > restarts with no-goods should be able to find the solution. However, > even when I set the nogoods_limit very high (1000), the search does > not terminate. So I assume this means my code for nogoods_limit is not working... > > I setup the restart DFS search engine as follows: > > sengine = new GecodeRBS<DFS>(solver, o); > > where o is a Search::Options, and has o.nogoods_limit set (I verified > this by printing o.nogoods_limit just before calling the above). > > GecodeRBS is based on the code Chrisitan sent me: > > template<template<class> class E> > class GecodeRBS : public GecodeEngineBase { > protected: > RBS<E,GecodeSpace> e; > > public: > GecodeRBS(GecodeSpace* solver, const Search::Options& o) : > e(solver,o) {} > ..... > } > > (there might be typos: I typed the above in by hand, as cutting and > pasting the actual code (in an VNC window) and my mailer running under > Windows is a > pain) > > I have not defined master() in GecodeSpace, as I think the default > does what I need -- nogoods will be posted, so if nogood_limits is > set, then nogoods should be collected and posted in the default master(). > > So I expected that if o.nogoods_limit is set in my sengine setup code, > then nogoods will be posted by master, and with the limit set to 1000, > all nogoods in my 8-Queens examples should be collected and posted, so > the search should terminate. So I don't know why the search is not terminating. > Am I doing something wrong in my code, or is my understanding of the > expected behaviour incorrect? > > I am using Gecode 4.2.0. > > Cheers, > > Kish > > _______________________________________________ > 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