Author: Steve Maughan
Date: 11:46:27 10/01/01
I've been tinkering with my engine again and delved into the move ordering. Currently I use pseudo SEE to order i.e. if no defenders then value=captured_piece_value otherwise assume that value=captured_piece_value - attacking_piece_value. Quite simple and quick. Now I am wanting to implement SEE. I've already done this in a program I wrote a couple of years ago. That implementation performed a normal search where the only moves played were those that captured on the specific square. This was slow - although not horrendous. I was thinking about trying to implement something a little faster. Leen Ameraal posted a simple routine that utilied a table of attackers and defenders. Once this table is filled the actual evaluation is relatively quick. I'm quite sure that this would be faster than my original implementation. However it is clearly not a simple task to fill these tables. Here's a test position. Assume that White must evaluate the score of a) bxc6 and then b) Rxe2 [d]6k1/1p6/2n5/1P6/B7/4p3/1R1rp2R/K7 w - - 0 1 To evaluate bxc6 correctly one needs to see that the Bishop has a valid xray attack. Does everyone bother with this type of situation? I would imagine that this is quite important so I would guess that they do. The second position is a little more subtle. To see that Rxe2 wins a pawn one must also see that after Black recaptures on e2, white is then, and only then, able to recapture on e2. This is a little more subtle as it's the Black piece (i.e. opponents piece) that blocks the recapture. This would be (more) difficult to catch in a SEE routine. How many programs would evaluate this correctly? I suspect most do 'a' but not 'b'. All help appreciated! Steve Maughan
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.