Author: Tord Romstad
Date: 08:15:37 02/04/04
Go up one level in this thread
On February 03, 2004 at 08:23:47, Ed Schröder wrote: > >After having looked at my code I noticed Rebel's approach is even more >drastic, Your code must be cleaner than mine. I usually don't understand what I do even *after* looking at my code. :-) >right after eval I do the following 2 series of checks: > >// Kind of Fail High check > > int value = 0x300; // default margin of 3 pawns > value=value+hanging_piece_value; // increase margin > if (opponent can promote) value=value+0x600; > if (king_moves_out_of_check) value=valuw+0x900; > if (score+value > beta) prune QS // stop QS, return score This doesn't make any sense at all to me. Perhaps you meant to write if (score-value > beta) prune QS on the last line above? That seems reasonable, assuming that the hanging_piece_value is the biggest hanging value for the side to move. >// Test for hanging pieces > > if (move gives a check) go one ply deeper in QS > if (alpha >= score) prune QS // stop QS, return score > if (king_moves_out_of_check) go one ply deeper in QS > if (opponent can promote) go one ply deeper in QS > if (current_depth < maximum_check_depth) go one ply deeper in QS > if (no piece is hanging) prune QS // stop QS, return score Most of this looks similar to what I do, except for the last line. Do you really mean that you don't search equal captures (e.g. bishop captures defended knight) in the qsearch? This looks extremely risky to me ... As always, I am very grateful to you for sharing your ideas. I hope that I some day will invent something sufficiently interesting to pay back my debt. Tord
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.