Author: Bob Durrett
Date: 10:02:19 11/27/02
Go up one level in this thread
On November 27, 2002 at 12:01:24, Robert Hyatt wrote: >On November 27, 2002 at 09:49:55, Bob Durrett wrote: > >> >>Disclaimer: I do not know the specifics of how position evaluation is >>accomplished in the top chess engines. >> >> >>From what I have read here, position evaluation is typically accomplished with a >>"function." This function appears to be fairly simple. Otherwise it would be >>called a position evaluation "subprogram." Since a large number of positions >>are evaluated, the evaluation must be very quick and hence simple. >> >>Less processor time is available for searching if the amount of processor time >>used for position evaluation is increased. In an extreme example, one might >>devote 90% of the processor time to position evaluation. I do not know what >>this percentage is in practice. If a huge number of positions are evaluated, >>then the total amount of processor time devoted to evaluation might be large. >> >>It seems that there is a tradeoff between complexity of position evaluation and >>the number of positions evaluated. My impression is that current engines devote >>only a very small percentage of the processor time to evaluation of any given >>position. >> >>Devoting a large amount of processor time to position evaluation of each >>individual position would make sense, or so it seems, only if the evaluation >>were very very good. Essentially, this would mean evaluating only a relatively >>few positions but evaluating them extremely well, using a complex position >>evaluation subprogram. >> >>In theory, a perfect evaluation subprogram would have to evaluate only one >>position for each move made. Maybe someone would say that chess engines do just >>that. They "evaluate" the position after the move was made. They just do it >>using search algorithms. >> >> >>So, this leads to the following question: >> >>Has anybody yet explored the option of using complex evaluation subprograms >>[which do not rely primarily on the use of search algorithms] for position >>evaluation? >> >>Bob D. > > >You definition of "simple" is very vague. For example, is Crafty "simple" or >"complex"?? I was definitely NOT saying Crafty is simple!!!! I was referring to the position evaluation code only. Also, I meant simple in a relative sense, when compared to more complex evaluation, or to the overall chess engine program. >Whichever you choose, Crafty spends over 50% of the total time used for >selecting a move in executing the evaluation code. ********************************************** That is very interesting information! It would be nice to have similar information for other chess engines. [Hint.] ********************************************** To me, the gyrations a chess engine has to go through [alpha/beta and such], other than execution of the evaluation "function," seem more like overhead. Of course, this is merely my perception. Hard-core alpha/beta devotees would probably take exception to this characterization. : ) >I have a hard time calling 50% of the total >time "simple" myself, Well, there are two things being discussed here: (a) percentage of total processor time used to perform position evaluation, and (b) complexity of the evaluation versus the number of positions evaluated per unit of time. >since this is about 4,000 lines of code, roughly... Are all 4000 lines of this code within a single compact "function"? [Or is the code somehow spread out here and there, willy nilly, throughout the Crafty code?] It would be easy to feel that a 4000 line evaluation "function" might not be "simple," but when taken in the context that you have 51,000 lines of code in Crafty, 4000 doesn't sound like much at all!!!!!!!! Anyway, my questions are driven by my perception that the evaluation function size/complexity would be a critical parameter in chess engine design, at least for the types of chess engines that do a lot of searching. I really would like to know about the tradeoffs that determine: (a) the number of lines of position evaluation code as a percentage of the total number of lines of code of the chess engine, and (b) the percentage of total processor time to devote to position evaluation. How does the chess engine programmer decide which percentages to use? What are the optimal percentages? [Please assume a mature chess engine (like Crafty), and not one just started] Bob D.
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.