Author: Alessandro Damiani
Date: 14:19:11 09/10/99
Go up one level in this thread
[..]
>>>>>Easy to test. I'll supply some data in a bit, just for fun...
>>>>
>>>>For one moment forget about alpha and beta, you are on the wrong track as
>>>>alpha and beta are not a part at all of the code. You need an extra stack
>>>>that is set to -INF at each ply. Then before you do A/B you do the bestmove
>>>>calculation for that ply. Involved variables: SCORE and STACK, no alpha beta.
>>>>
>>>>Ed
>>>
>>>I think the best way to explain is to write a small piece of code in pseudo C,
>>>else we talk around the point.
>>>
>>>Alessandro
>>
>>
>>OK... here is what I did:
>
>Drunken code adjustment inserted ................
>
>
>>
>>Normal alpha/beta first:
>
>Drunken code added:
>
>>
>>int Search(int alpha, int beta, etc...) {
>> best=-infinity;
> roughbest = -INFINITY;
>> bestmove=0;
> roughbestmove = 0;
>> foreach (move in movelist) {
>> MakeMove();
> roughvalue = StaticEvaluate(-whatever,etc);
>> value=-Search(-beta,-alpha,etc.)
>> if (value > best) {
>> best=value;
>> bestmove=current.move;
>> }
>> if (value > alpha) {
>> if (value >= beta) {
>> return(value);
>> }
>> alpha=value;
>> }
> if (roughvalue > roughbest)
> {
> roughvalue = roughbest;
> roughbestmove = current.move;
> }
>> }
> if (THEREWASNTANEWALPHA)
> HastStore(roughbestmove, etc...)
> else
>> HashStore(bestmove,alpha, etc...)
>>}
>>
[..]
What you say is:
roughbest = (MAX m: m is a move in the position: StaticEval(Son(m)))
where Son(m) is the position after the move m is made.
What should this help?
Alessandro
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.