Hi, I am working on an Othello Agent (VC++ console). Where I am currently: NegaScout Recursion with AlphaBeta pruning, Iterative Deepening and Transpostion Table. The Evaluation function is the sum of a series of key differentials (eg. mobility, corners, stability etc) multiplied by a coefficient array: c[no. of pieces][no. of differentials]. The coefficients were determined by optimising to minimise abs(target score - score) for each board over a 5000 board set generated for each stage of the game. So far so good....
I have read that a win/loss search can increase depth of search dramatically but am having difficulty seeing conceptually how I might modify the above to accomodate this? Is it as simple as modifying the evaluation function to return the sign of the board score as win/loss and letting the alpha-beta pruning do the rest...?
1) Can anyone point me to some pseudo-code for a win/loss search algorithm?
2) Is my evaluation function sufficient to allow the algorithm to work well (if I return the sign of the score) - or should I evaluate boards differently? - eg. some probabilistic measure of a win rather than this linear scoring method?
Thanks
Win/Loss Search vs Greedy Search
If anyone has looked/is looking at this: I tried implementing a win/loss search by narrowing the alpha-beta window to -1..+1 and had the eval fnc return -1,0,+1 (sign of score) but only had about a 1 ply speed-up - hardly worth-it... but I think this is maybe due to my eval fnc being a bit unstable in that, on roughly balanced board positions, it seems to flip between sides on who it thinks is winning. To get a good pick-up I think I need to do better on my eval optimisation - particularly focusing on stability when adding pieces...
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement