chesslablab / php-chess

A chess library for PHP.
https://chesslablab.github.io/php-chess/
MIT License
91 stars 45 forks source link

Fix the threat evaluation #533

Closed programarivm closed 3 months ago

programarivm commented 4 months ago
          Rather than implementing a new evaluation feature, it looks like it is the [threat evaluation](https://github.com/chesslablab/php-chess/blob/main/src/Eval/ThreatEval.php) what needs to be fixed. The threat evaluation is working correctly in many positions when a piece is at risk of being lost. The signal though is not triggered in the position below. The king alone seems not to be taken into consideration as a defending piece.

chessboard

Originally posted by @programarivm in https://github.com/chesslablab/php-chess/issues/528#issuecomment-2084765210

programarivm commented 3 months ago

The Threat evaluation is not buggy, it is pointing out if a piece can be lost based on the difference between the number of attacking pieces and the number of defending pieces. No sequence of moves needs to be played in order to make this observation programmatically.

chessboard

Figure 1. K7/8/6N1/4P3/8/3n4/1b6/7k b - -

Black has a moderate material advantage. Black has a moderate control of the center. Black has a slight space advantage. The black player is significantly pressuring more squares than its opponent. Black has a slight threat advantage. White has a slight passed pawn advantage. White has a slight advanced pawn advantage. Black has a slight isolated pawn advantage. White has a moderate outpost advantage. The pawn on e5 is being threatened and may be lost if not defended properly. e5 is a passed pawn. e5 is an advanced pawn. e5 is an isolated pawn. d6 and f6 are outpost squares. Overall, 3 heuristic evaluation features are favoring White while 6 are favoring Black.

A new evaluation feature needs to be implemented for these positions where a sequence of moves needs to be played in order to determine whether or not a piece can be lost.

chessboard (1)

Figure 2. 2r3k1/8/8/2q5/8/8/2N5/1K6 b - -