Author: Magoo
Date: 14:48:50 04/29/03
Hello dear chess loving people. I'm working on a simple chess engine, i am having some hard problems to solve. My program is TOO SLOW, and when i mean slow, i mean really slow. It's not the "nps" measure, which i think is ok, i get around (approx.) 500 000 nodes/1-2min, or something... The problem im having is move ordering of some sort, i have done my homework, i've read almost everything there is to read about chess programming on the internet. Anyway, initially i did not have move ordering at all, it worked fine with depth=2 and quiescent search until no more pieces can be captured. Then today, after some hard work, i have implemented both a Transposition Table and the History move ordering. I also implemented iterative deepening (to benefith from the TT ..). I thought this would speed my program up so i could do a 6 ply search in no time. Besides the History move ordering I use the MVV/LVA ordering for the Quiescent search. This is my move order: 1. Hash - if depth < stored_depth always try the stored "best_move" 2. Captures - orderd by MVV/LVA 3. History This should be enough, but when, i looked at the move list for some positions, i noticed that many bad moves were on top of the list, like losing captures, and moving pieces to squares where the piece can be taken. This makes me belive that you cannot just put all the captures on top of the list, put winning/equal captures should be better? But, the move list is not THAT bad (like there are no silly pawn/king moves near the top of the list). I should be getting better results than just RANDOM order (not really random but in the order move_gen produces them) not SLOWER!! What am i doing wrong?? Im guessing i have a really nasty bug in my alpha_beta function... there should be more prunning, 500 000 nodes for a 4-ply search is too much..
This page took 0.01 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.