I explain the changes I have done for the new version 0.71.
• Bonus for pieces supporting advance of passed pawn, and two bugs on passed pawns.
• Solved bug with mate avoidable with en passant.
• Use already calculated (with magics) attacks when possible instead of calculating again.
• Now reduces a little less on LMR.
• Solved bug with knight trapped by enemy pawns.
• Little move ordering bonus for moving attacked piece by a pawn move, only when depth <3. Is a sort of pre-quiescence optimization.
• Optimization of bonus for rook on semi-open column.
• Optimization of values of weak pawns. There is a bonus that depends on the column number.
• Now it’s less verbose.
• Optimization of values of mobility.
• Bug on check extension.
• Little increase of value of central pawns.
• Do not prune if it’s a move of passed pawn.
• Bug that was not using hash move at the start of new turn!
• For aspiration loop, passed delta from 32 to 16.
• Stop search earlier if a capture seems clearly better than all the other moves (i.e., the best move does not change from the start). I tried instead of reducing analysis time with no success.
• Changed extension for piece capture at pv lines. Now is:
Code: Select all
If (capture && is pv && see_to_depth <= original_see_to_depth )
Extend;
• New king safety function. It evaluates attacks near the king weighted with the type of piece (in two ways, discarding protected squares and analyzing all the squares), contact checks, safe checks, number of pawns protecting the king, number of attacks in the 4*4 square of the king, if the king is advanced, number of pieces that attack, number of pieces that defend, number of rook/queen attacks in columns. Also now uses x-ray attacks on some of those evaluations.
• Disabled secondary hash of evaluations. Now it gets saved always in the standard hash.
• New move generation of only possible checks (for quiescence). Basically validates the generated moves when source or destination are in this bitboard:
Code: Select all
ItCanCheck=(RookAttacks(king position,his pieces) | BishopAttacks(king position,his pieces) | Knight attacks[king position]) & ~his pieces;
• For the moment I did not succeed on trying to bonus having more space.
• Is doing eval pruning even if is pv. I tried to do only when is not pv and is always a regression.
• There is a bug on search root:
Code: Select all
if ( score > beta ) { //must be score >=beta
return score;
}
I discovered it when I tried to add a mate distance pruning, that was exiting because alpha==beta. I tried this prune taking into account only mate scores, with no success.
So for the moment I keep this like this.
• I tried in different ways to use the IsRepetiton idea of gull, but always was bad. May be it’s because I already have a move ordering penalization for moves that go where the piece was previously (and the piece it’s not attacked by a pawn).