Moderator: Andres Valverde
mjlef wrote:For programs using NULL pruning close to the qsearch which also include checks in qsearch, make sure you set your depth high enough to catch at least one ply of checking moves in the qsearch.
For example, if you only do checks at depth=0 in the qsearch and you are at say depth=2 now, with R=3, that wpuld make the new depth 2-3-1 = -2. Better set the depth at 0 to include those checks (that might be mates or other wins). I see a few public domain sources that do not do this, and can miss mate threats.
mjlef wrote:Hi Tord,
Thanks. I have not worked on my chess program in about 10 years, concentrating on the universal game program "Zillions of Games" instead. It plays most any board game, and I found it a challenge trying to come up with a search and evaluation based simply on the rules of the game and board topology. It plays pretty well.
Recently, talking with my friend Frederic Friedel I heard about some advances in computer chess (amateur programs suddenly getting a lot stronger) so I started looking at my old program. I found it still runs pretty fast (and it is 16 bit code an Pascal!). Many of the new ideas were based on the old idea of reducing depth in cetain conditions. The history reduction idea was clever and worth a try so I guess I am back in. I need to work on something better than the old Borland Pascal compiler I used. I just downloaded freepascal and will see if I can use that. Might speed things up and give me more memory to play with.
Thanks for your encouragement.
Oh, in the past I tried most everythng, so if anyone wants my advice, let me know.
Mark
Tom King wrote:mjlef wrote:Hi Tord,
Thanks. I have not worked on my chess program in about 10 years, concentrating on the universal game program "Zillions of Games" instead. It plays most any board game, and I found it a challenge trying to come up with a search and evaluation based simply on the rules of the game and board topology. It plays pretty well.
Recently, talking with my friend Frederic Friedel I heard about some advances in computer chess (amateur programs suddenly getting a lot stronger) so I started looking at my old program. I found it still runs pretty fast (and it is 16 bit code an Pascal!). Many of the new ideas were based on the old idea of reducing depth in cetain conditions. The history reduction idea was clever and worth a try so I guess I am back in. I need to work on something better than the old Borland Pascal compiler I used. I just downloaded freepascal and will see if I can use that. Might speed things up and give me more memory to play with.
Thanks for your encouragement.
Oh, in the past I tried most everythng, so if anyone wants my advice, let me know.
Mark
Mark Lefler as in the chess program "Now"? Or should I call it "Then" if you haven't been around a while
I used to use Now as a sparring partner for my program way back before useful things like Winboard were invented.
Welcome back! I took a two year "sabbatical" from computer chess, but am back tinkering again. Like you, I think the buzz around things like Fruit, Rybkha and new techniques such as the history pruning stuff have got my creative juices flowing again (in the very limited free time I have).
mjlef wrote:I really need to get winboard working with NOW.
I wonder if anyone has some sample pascal or c code I could look at.
OK, some experiments I want to do (maybe you all have the same ideas and some data). When does history reduction fail? Ideas:
a. Create a program that logs number of attempts history pruning is done at each depth, and number of failures, to see if the fail rate is dependant on depth. Also log the number of the move that was found in the resulting research. This might give information to tune it (is the Fruit /Toga rule of pruning the 4th and higher legal moves good, or should that number vary by depth?)
b. Log the history ratios used and once again compare with failures. A chart could be made indicating relative reduction risk based on varying percentages by different depths.
mjlef wrote:Hi Tord,
Thanks. I have not worked on my chess program in about 10 years, concentrating on the universal game program "Zillions of Games" instead. It plays most any board game, and I found it a challenge trying to come up with a search and evaluation based simply on the rules of the game and board topology. It plays pretty well.
Oh, in the past I tried most everythng, so if anyone wants my advice, let me know.
mjlef wrote:Thanks. Looks easy enought o implement.
Is there a good public domain UCI display program/auto tester you would recommend?
What I have done in the past is have a set of say 50 standard openings. The auto player lets each program play once as white and once as black, with the game reuslts going in a file. I have a simple utility to tally the results. What is everyone using now (back in the ealry 90's, me and other prrogrammers just came with with a scheme using files).
mjlef wrote:ZOG supports external engines for any game (very simple format using DLL calls).
If you ever write something like this, it would be cool. You could use the Zillions Rules Files to let people write a game, then your utility could compile it on the fly. It would run a lot faster, though our node rate is not too bad.
Tord Romstad wrote:mjlef wrote:ZOG supports external engines for any game (very simple format using DLL calls).
This sounds interesting. If I understand correctly, this means that I should be able to port my hexagonal chess engine to ZOG? This would be really nice, because my current GUI is for Mac OS X only. My program is fairly strong (at least I have never won or drawn against it), and the most recent version even supports 2 CPUs.
That's basically what I do, too. I use XBoard (which is essentially exactly the same as Winboard, except that it runs in the X Window System) and PolyGlot for this. XBoard does not have any built-in facilities for running a match from a pre-defined set of positions, but it allows you to select a single initial position at startup (by a command line argument). What I do is to use a small Python program which loops through my 50 opening position, and starts XBoard once for each position.
There are probably easier ways to do this in other GUIs.
Ross Boyd wrote:Testing is absolutely critical to gauge improvement... and it is horrendously time consuming. Fabien emphasises testing one change at a time. This requires excrutiating patience and an equally exquisite amount of intuition about which factors to test.... I bet there are a few developers who can identify with the difficulties I'm talking about.
Now I'm writing scripts to automate Winboard+Polyglot tournaments on my home network. One machine is the tournament controller and has a generated text file with all the proposed games to be played. Each workstation polls this shared file to get instructions on what game to run next. Using this topology I can add work stations (at any time) and with little or no effort have them churning out results.
I get the impression that Winboard is somehow fairer in sharing CPU cycles but I could be sincerely mistaken. WB is certainly faster and less resource hungry.
I figure the best way to get a consistent test environment is to write it myself and de-couple dependance on GUI's that I don't have control over.
Btw, keep up the great work with Glaurang... its not that far from the top now.
Tord Romstad wrote:Hi Ross,
First of all, I would like to inform all readers that I won't be able to read any posts in this or other threads during the next three weeks. I'm leaving for a 3-week holiday in less than half an hour.Ross Boyd wrote:Testing is absolutely critical to gauge improvement... and it is horrendously time consuming. Fabien emphasises testing one change at a time. This requires excrutiating patience and an equally exquisite amount of intuition about which factors to test.... I bet there are a few developers who can identify with the difficulties I'm talking about.
Yes. I have never been very patient, and never test changes very carefully. I am also frustrated that my test results usually turn out to be confusing, contradictory and non-reproducible.Now I'm writing scripts to automate Winboard+Polyglot tournaments on my home network. One machine is the tournament controller and has a generated text file with all the proposed games to be played. Each workstation polls this shared file to get instructions on what game to run next. Using this topology I can add work stations (at any time) and with little or no effort have them churning out results.
That sounds nice. Unfortunately I have only one computer (but with two CPUs) available for testing right now, and because I use it for other purposes as well I can't let it run test matches 24 hours/day.
Tord
Ross Boyd wrote:Now I'm writing scripts to automate Winboard+Polyglot tournaments on my home network. One machine is the tournament controller and has a generated text file with all the proposed games to be played. Each workstation polls this shared file to get instructions on what game to run next. Using this topology I can add work stations (at any time) and with little or no effort have them churning out results.
Ross
Return to Programming and Technical Discussions
Users browsing this forum: No registered users and 44 guests