Ok thanks, that makes things a little clearer. I'm pretty sure you are a little further along than I was. I hadn't actually progressed to the point where I was making a choice based on the evaluations that were filtering back through the tree. I was just trying to make sure that the evals were correctplattyaj wrote:Being on the same page is a good idea. Here's what I would do. Set it to one ply - e.g. just the direct moves in response to the position. From the starting point - or almost all those posted - the evaluation should be 0. Anything else and it's a bug obviously.Fguy64 wrote:Thanks Andy, but lets put aside the meaning of the word negamax, which I probably have wrong anyways, and make sure we are on the same page with what I have actually done, based on the description I gave.
First of all, all calculation stops with white's 3rd move, there is no 5 ply from 1.h4 there is 5 ply from the starting position.
there is no "suggestion" of 1...b5 involved, I am not actually acting on these evaluations yet, just calculating the evals. No pruning at all is being done. yet.
All I am doing is feeding the engine a position and asking for a move. then full stop no more computing is done.
Now do two ply. Same thing from the start position - everything should be random.
Then ply three ... here's where things get more interesting because there are three ply searches that can "gain" material (1. d4 h6 2. Bxh6) - at least when you stop at ply three. None of those should be chosen because the bishop capture refutes h6 and you want to make sure that's not taken. In fact it should be a long time before the score changes from 0.
Andy.
In your example I agree with your h6 eval, and my algorithm would do the same. And when I actually implemented decision making, it wouldn't be chosen either, or rather, white's choice would be based on the assumption that Black wouldn't play h6.