Static move ordering tricks; depth-dependent move ordering

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Static move ordering tricks; depth-dependent move ordering

Post by Evert »

Apart from coming up with ways to improve playing strength by improving the evaluation (certainly loads left to do there), I'm trying to think of ways to improve move ordering. I have a number of ideas (as yet untested), all of which have in common that I need to do some limited evaluation of the current position (different from the normal evaluation though). This means it takes a bit more time, which means it's less likely that the idea pays off even if I do get a slightly better move ordering overall.
It occurred to me that if the point is to, say, order moves that are more likely to lead to a combination that wins material ahead of moves that are less likely, the entire exercise is pointless if the remaining depth is not enough to see the combination anyway. Close to the horizon, there may then be no point in doing the (supposed) expensive static move ordering, which happens to also be where it would hurt most.

Before exploring this idea further and wasting time on testing it, does anyone have experience with this type of idea? In particular, has anyone tried to tweak the move ordering scheme based on the remaining depth? Any caveats? Comments? Suggestions?
User avatar
hgm
Posts: 28443
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Static move ordering tricks; depth-dependent move orderi

Post by hgm »

Gaining material is not necessarily the primary goal of move ordering. You need to stay above beta, for sure, but preferably in the way that produces the least complications (little material on the board, few captures possible, no checks or other moves that get extensions possible).

So moves that capture the opponent's most active pieces, without wrecking your own defense (i.e. not with soft-pinned or overloaded pieces) are ideal refutations. At the levels close to the root, you could consider capturing the piece with the largest 'aggressive mobility' first, rather than MVV, calculated as, say, total moves + forward moves + 4*captures. Even SEE<0 moves could be good refutations if eval + SEE > beta, and they sac a piece that would get into trouble later anyway. A null move is often a sacrifice...