novel regression-based chess evaluation function challenges conventional evaluation function

21
1 Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function Rahul Desirazu The Harker School

Upload: shyamdesirazu

Post on 05-Aug-2015

103 views

Category:

Documents


0 download

DESCRIPTION

Intel STS paper

TRANSCRIPT

Page 1: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

1

Novel Regression-Based Chess Evaluation Function Challenges

Conventional Evaluation Function

Rahul Desirazu

The Harker School

Page 2: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

2

Abstract

21st century chess engines use an evaluation function to determine the best move

in a given board state. This evaluation function uses weighted metrics created by chess

experts. Without these experts, building a world-class evaluation function is difficult. In

this paper, we present a method to create a chess evaluation function that does not require

chess expertise. The evaluation function that we present uses 55 metrics that are based

only on piece weights and attacking relationships in a position. The weights of each of

these metrics were obtained by applying a least squares regression to evaluations of 6588

board positions using a well-known chess engine, Rybka. We replaced the evaluation

function in Stockfish, an open source chess engine, with our regression-based evaluation

function and played against other computer bots on the Internet Chess Club (ICC). The

weights of the pieces determined through our regression model differed from the

conventional weights of these pieces, suggesting that the conventional piece weights used

to evaluate board states may not be entirely accurate. After playing 31 games, our engine

obtained a rating of 2346, which is better than 99.5% of active players on the ICC. Based

on the engine’s success, it appears that someone with little knowledge of chess can in fact

engineer a chess engine’s evaluation function by using regression analysis. This same

analysis may be tested in fields like medicine to weight risk factors for diseases like heart

disease, cancer, and diabetes.

Page 3: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

3

1. Introduction

21st century chess engines use an evaluation function to find the best move in a

board state. These evaluation functions use a set of weighted metrics, created by chess

experts. Without access to experts, creating a chess engine is difficult. In this project, we

attempt to create a chess engine without a team of experts that can perform at a

reasonable playing level.

1.1 A History of the Chess Engine1

Hungarian engineer Baron Wolfgang von Kempelen built the first chess-playing

machine in 1769. Known as “The Turk, ” the machine was actually not a machine. Rather

it was a contraption with a human chess master hidden in its interface. Since 1769, chess-

playing machines have progressed significantly. Mathematician Claude Shannon was one

of the first to create an algorithm for a chess engine. His algorithm looks at every

possible sequence of moves that can be played by both players in a given board state.

Each sequence, or continuation, is analyzed to a certain depth, or number of moves in the

continuation. For example, if white plays 8 moves and black plays 7 moves in a certain

continuation, the depth of the continuation is 15. The algorithm evaluates the board state

at the end of every continuation to determine the best move in the original board state.

Shannon also realized that chess has many possible continuations, so he devised a

pruning algorithm to reduce the number of continuations analyzed by the engine. Fewer

continuations mean that each continuation can be analyzed to a greater depth. Over time,

mathematicians have focused on increasing the depth of the continuations analyzed and

improving the algorithm used to evaluate positions.

Page 4: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

4

1.2 FEN String2 and Evaluation Function

3

In chess engines, Forsythe-Edwards Notation (FEN) strings are used to represent

a board state. FEN strings provide the necessary information to restart a game from a

particular board state and contain 6 fields: an alpha numeric representation of the board

state; side to move; castling availability for both sides; en passant target squares; number

of moves since last pawn move or capture (used in claiming a draw); number of moves

played in the game. The FEN string for Figure 1 is “8/8/8/8/3B1k2/8/1r6/4K3 b - - 0

35”.

Chess engines read a FEN string and generate the evaluation of the board state

using an evaluation function. A board state with a positive evaluation correlates to an

advantage for white, while a board state with a negative evaluation correlates to a black

advantage. An evaluation with a large magnitude also means that the player with the

advantage has a large one. An engine’s evaluation function uses a weighted positional

metrics to determine the evaluation of the position. Figure 1 illustrates how a board state

could be evaluated:

Page 5: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

5

Figure 1: In this example, only three metrics are used to evaluate the board state. The

first metric, with weight a, is the number of white bishops minus black bishops on the

board, the second, with weight b is the number of white rooks minus black rooks on the

board, and the third, with weight c, is the number of white bishops attacking black rooks

minus black bishops attacking white rooks. The first metric value is +1, because white

has one bishop on the board and black has zero. The second metric value is -1, because

white has zero rooks on the board and black has one. The third metric value is +1 because

white has one bishop attacking a black rook, while black has none. From white’s

perspective the evaluation of this board state is (+1) a + (-1) b + (+1) c or a – b + c.

In Figure 1, the each metric value was multiplied by the corresponding weight

and summed for the three metrics. Equation 1 generalizes an evaluation function for n

metrics:

Equation 1: mi is the value of metric i; wi is the weight of metric i; e is the evaluation of

the board state

1.3 Minimax and Alpha-Beta Pruning4

Chess engines use a Minimax and alpha-beta pruning algorithm in conjunction

with an evaluation function to arrive at the best move in a board state. Minimax is a

decision rule used to minimize the possible loss in a worst-case scenario. It evaluates

Page 6: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

6

every possible board state n moves after the current board state using the engine’s

evaluation function and determines which move would result in the best scenario given

perfect play from the opponent.

The Minimax Algorithm has runtime complexity O (2n), where n is the depth of

evaluation. Due to the expensive nature of the Minimax Algorithm, most modern chess

engines use an alpha-beta algorithm to prune branches in the tree of possible

continuations. The algorithm stops evaluating a possible move when at least one

continuation has been found that proves the move to be worse than a previous move.

Although the pruned tree still has an exponential runtime complexity, fewer branches of

the tree are examined, so each branch can be explored to a deeper depth.

1.4 Problems with Existing Evaluation Functions5

Chess engines use thousands of weighted positional metrics, created and hand-

tuned by a panel of experts. Stockfish, an open source chess engine, uses metrics such as

pawn structure, king safety and piece mobility to evaluate board states; each of these

metrics is then subdivided into hundreds of more specific metrics. Each of these metrics

has a middlegame weight and endgame weight, so the weight that fires during evaluation

depends on the stage of the game. Creating a world-class evaluation function requires

expertise in chess. The purpose of this project was to create a relatively accurate

evaluation function without experts. We created a simplified list of metrics without

experts and weighted these metrics using a least squares regression to database of board

state evaluations. We replaced the evaluation function in an open-source chess engine

with our regression-based evaluation function and played games to determine how well

our-regression based chess engine could play.

Page 7: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

7

2. Methods

2.1 Collecting Board States and Evaluations in Rybka

We used the tool AutoIT6 to collect p = 6588 board states and evaluations from Deep

Rybka 47, a world champion chess engine. The AutoIT script performs the following

tasks:

1. Choose a random board state from Rybka’s database of 1.5 million games

2. Use Rybka’s ‘Copy Position’ to export board state as a FEN string

3. Copy the FEN string to a data file

4. Start Rybka’s analysis engine

5. Wait for 30 seconds for the evaluation value to converge

6. Match the evaluation of the board state with the FEN string obtained in Step 3

7. Do the same process for another random board state

2.2 Representing our System of Equations

An amateur would evaluate a board state by looking for material imbalances

(comparing the pieces on the white and black sides) and attacking relationships (e.g.

pawn attacking queen, knight attacking a rook) on the board. So, we presented a list of n

= 55 metrics with weights initially unknown that only consider piece weights and

attacking relationships. Since we have a database of p board states and corresponding

evaluations, we represent the system of p equations and n unknown metric weights in the

form Ax = b, where A is the matrix of metric values derived from every board state, x is

the unknown vector of weights, and b is the vector of Rybka evaluations:

Page 8: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

8

(

)(

) (

)

Equation 2: mpn is the value of the nth metric in the pth board state, wn is the unknown

metric weight, ep is the known evaluation of the pth board state

2.3 Collecting Metric Values

To collect our matrix of metric values, the FEN Strings collected in Rybka were

imported into Stockfish. We modified Stockfish to compute metric values for the p board

states. Figure 3 illustrates the pseudo code describing our modifications.

//create a matrix of metric values

// with p rows and n columns

metricsValues[p][n];

// the first FEN string to be read

boardState = 0;

while (boardState < p)

{

read boardState

for (metricNumber = 0; metricNumber < n; metricNumber++)

{

metrics[lineNumber][metricNumber] = <compute metric value of metric>

}

// next boardState

boardState++;

}

Figure 2: Pseudo code describing how the matrix of metric values is created using the

database of board states.

2.4 Calculating Metric Weights

Assuming all of the rows of the matrix in Equation 2 are linearly independent (no

two board states are the same) and p >> n, we have an over constrained system, so no

one set of metrics weights satisfy all the equations. We used a least squares regression8 in

Mathematica 89 to calculate a set of metric weights that minimizes the sum of the squared

Page 9: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

9

errors between our evaluations and the database evaluations and automate the weights of

our metrics. The table in the Appendix displays the 55 metrics, their weights, and

method of computing the metric value. We replaced the evaluation function in Stockfish,

an open source chess engine, with our weighted metrics. Figure 3 shows how our

modified version of Stockfish evaluates a board state.

weights[n] = <import weights>

metricValues[n];

for (metricNumber = 0; metricNumber < n; metricNumber++)

{

metricValues[metricNumber] = <compute metric value of the metric>

}

eval = <dot product of metricsValues and weights>

Figure 3: Pseudo code describing how a board state is evaluated. A list of metric values

is computed and dotted with a list of weights to obtain the evaluation.

2.5 Non-Regression-Based Engine

Given our knowledge of chess, we wanted to test if a regression-based engine

played at a higher level than an engine with metrics weighted without a regression. Of

our 55 metrics, we only knew the weights of the 5 piece value metrics from convention

(Table 1). These weighted metrics became the basis of our non-regression based engine’s

evaluation function.

Page 10: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

10

Metric Weight (non-

regression)

How metric value is computed?

Pawn 1 Number of white pawns – number of black pawns

Knight 3 Number of white knights – number of black knights

Bishop 3 Number of white bishops – number of black bishops

Rook 5 Number of white rooks – number of black rooks

Queen 9 Instance of white queen – instance of black queen

Table 1: 5 metrics and their known weights for the non-regression-based evaluation

function

2.6 Playing Games on the Internet Chess Club

The original version of Stockfish could only evaluate a board state. We modified

it to be able to play an entire game. The regression-based engine played 31 games against

computer bots on the Internet Chess Club (ICC)10

, while the non-regression based engine

played 24 games against computer bots on the ICC. For every game, a numerical score

was assigned to each possible result, with a win assigned a 1, a draw a 0.5, and a loss a 0.

After each engine played all its games, the average scores and opponent ratings were

calculated and inputted into a rating calculator on the United States Chess Federation11

website to determine the rating of each engine.

3. Data and Results

The weights of pieces obtained from the regression-based evaluation function are

different from the conventional weights of those pieces. Graph 1 depicts the difference

between the two sets of weights for the different pieces:

Page 11: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

11

Graph 1: Illustrates the difference between expected piece weight and regression-based

piece weights when the weight of a pawn is normalized (set to 1). The expected weight is

larger than the regression-based weight for each piece, but the magnitude of the

difference increases with the weight of the piece.

Our attacking relationship metrics can be divided into 4 categories: 1. Side to

move’s lower weighted piece attacking a higher weighted piece; 2. Side to move’s higher

weighted piece attacking a lower weighted piece; 3. Defending side’s lower weighted

piece attacking a higher weighted piece; 4. Defending side’s higher weighted piece

attacking a lower weighted piece. Table 2 shows the average weights for these four

metric categories:

Side to Move Defending Side

Lower Weighted -> Higher Weighted 2.62 (1) 0.39 (3)

Higher Weighted -> Lower Weighted 0.11 (2) 0. (4)

Table 2: Shows the average weights of metrics in each attacking relationship category.

Illustrates the importance of attacking relationships in the 1st category (Side to move’s

lower weighted pieces attacking opponent’s higher weighted pieces)

3 3

5

9

0

1

2

3

4

5

6

7

8

9

10

KNIGHT BISHOP ROOK QUEEN

Pie

ce W

eig

ht

Discrepancy Between Conventional and Regression-based piece weights

Theoretical Weights

Regression-based Weights

Page 12: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

12

There is a piece weight difference between the two pieces in an attacking

relationship. Going by the weights in the Appendix, the piece weight difference for a

pawn attacking a queen is 6.64 (the weight of a queen) – 1.04 (the weight of a pawn) or

5.60. Graph 2 highlights the correlation between the regression-based weight of the

attacking relationship and the piece weight difference for attacking relationships in the 1st

category.

Graph 2: Illustrates the strong R^2 = 0.82 positive correlation between piece weight

difference and regression-based weight for attacking relationships in the 1st category.

The regression-based engine obtained an ICC rating 2346, which is better than

99.5% of active players on ICC, while the non-regression based engine has ICC rating

2213, which is better than 98.6% of active players on ICC. Graph 3 depicts trends in

score due to opponent rating.

R² = 0.8224

0

1

2

3

4

5

6

0 1 2 3 4 5 6

Re

gre

ssio

n-b

ase

d W

eig

ht

Piece Weight Difference

Correlation between Piece Weight difference and Attacking Relationship Weight

Difference vs. Weight

Linear (Difference vs.Weight)

Page 13: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

13

Graph 3: Illustrates the average score of both the regression based and non-regression

based engines against opponents rated under 2400, 2400, and above 2400. For both

engines, the average score decreased as the playing level increased. The regression based

engine scored higher against opponents of all categories, especially opponents rated

above 2400, scoring an average of 0.36 against opponents rated over 2400, versus the

0.00 scored by the non-regression-based engine.

4. Discussion

4.1 Results from the Games

Our regression-based model played better than 99.5% people on the ICC, while

the non-regression-based engine played better than 98.6% of people on the ICC. The

regression-based engine held its ground against higher rated players much more

consistently than the non-regression based engine. Also, the regression-based engine both

lost to and won against players of a higher caliber than the non-regression based engine.

Both the regression-based and non-regression-based engines performed at a

reasonable playing level, which suggests that someone with little knowledge of chess can

make a decent chess evaluation function. The regression-based engine outperformed the

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

Under 2400 2400 Over 2400

Ave

rag

e

Sco

re

Opponent Playing Level

How Opponent Playing Level Affects Results

Regression

Non Regression

Page 14: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

14

non-regression-based engine, so using a regression to model metrics weights was more

effective than using basic chess conventions to model these weights.

4.1.1 Small Sample Size of Games Played

The small sample size of games played (31 for the regression-based engine, 24 for

the non-regression-based engine) means that a few outlier game results may be affecting

both the engines’ ratings and discrepancies between the regression-based and non-

regression-based engines. We manually played games on the ICC (we did not create a bot

interface), so playing games took time, and we could not collect more games. Our engine

evaluates certain types of board states more accurately than others. From observation, the

regression-based engine converted advantageous board states into wins more effectively

in the middlegame than the endgame. A majority of the 6588 board states and evaluations

in our database came from the middlegame because many of the 1.5 million source

games end in the middlegame. The regression-based evaluation function, therefore, used

metric weights that favored middlegame board states over endgame board states.

Therefore, the engine that evaluated more middlegame board states than endgame board

states would report better results.

4.2 Metric Weights

Although most metrics followed an expected trend, there were some discrepancies

between the expected metric weights and our regression-based metric weights. The

regression-based weights of our pieces were smaller and in a different ratio than the

conventional weights of those pieces. The expected normal weight of the pawn x pawn

attacking relationship for the side to move had a strong negative value. For lesser-

weighted pieces attacking larger weighted pieces, a few weights did not adhere to the

Page 15: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

15

correlation between the weights of an attacking relationship and the difference between

the weights of the two pieces.

4.2.1 Important 1st Category Attacking Relationships

1st category attacking relationships were weighted much higher that other types of

attacking relations. For 1st category attacking relationships, the active side has the chance

to trade a lowly weighted piece for a highly weighted piece. By contrast, in 2nd

category

relationships, the side to move does not have the chance to make a beneficial trade of

pieces, and in the 3rd

category, the side to move can move the highly weighted piece

before the defending side can capture it.

4.2.2 Correlation between Piece Weights and Attacking Relationship Weights in

1st Category

The metric weights in the appendix mostly conformed to the expected metrics

weights. For the side to move, a large positive weight was given to lesser-weighted pieces

attacking pieces with larger weights. After the exchange of pieces, the evaluation of the

board state should favor the attacking side, which traded off a lesser piece for the

opponent’s better piece. As expected, the magnitude of the regression-based metric

weights strongly correlated (R^2 = 0.82) with the piece weight difference. The strong

correlation suggests that we could have used piece weight difference instead of a

regression to weight attacking relationships in the 1st category, the most significant

category.

4.3 Discrepancies in Piece Weight

The most surprising result was the discrepancy between the conventional weights

and regression-based piece weights. Based on chess convention, the normalized

Page 16: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

16

regression piece weights should match those shown in Table 1. While the regression

weighted each piece in this increasing order of magnitude, the weights did not conform to

this ratio.

4.3.1 Sample Set of Board States

The weights 1, 3, 3, 5, 9 can vary by board state. In board states with closed pawn

structures, the knight is more valuable than its “equal” counterpart, the bishop, and far

advanced pawns that threaten to become queens are usually worth more than its given

weight. Although the 6588 sample board states should have normalized the weights of the

metrics, every board state was collected from a game between two top-level opponents.

Perhaps the weights of pieces in high level games stray away from the 1, 3, 3, 5, 9 ratio.

To normalize the effect of player level in sample games on metric weights, we should

collect board states from games contested between players of various playing strengths

and perform the regression on the new data set.

4.3.2 Effect of other Metrics on Piece Weight

The 1, 3, 3, 5, 9 weights are generally used when piece weights are the only

positional metrics. In other words, these weights are used so that anybody can quickly

and somewhat accurately evaluate a board state. However, we used 50 other metrics in

conjunction with the piece weight metrics. The weights of these 50 metrics may be

compensating for the weights of pieces, skewing the piece weight ratios. To normalize

the effect of our 50 additional metrics, we must perform a regression on only the 5 piece

weight metrics. If the new weighted metrics still have weight different ratios and an

engine using these weighted metrics performs better than an engine using the 1, 3, 3, 5, 9

Page 17: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

17

weighted metrics, the hypothesis that the existing 1, 3, 3, 5, 9 weight ratio is not optimal

would be supported.

4.4 Pawn x Pawn Attacking Relationship Disadvantage

The weight of the Pawn x Pawn metric for the active side had a large negative

magnitude, suggesting that it’s a significant disadvantage to attack an enemy pawn. All

attacking relationships should favor the active side or at least be insignificant in the

evaluation of the board state. The principal explanation for this large negative weight is

that a majority of board states with pawn x pawn relationships happened to be losing for

the active side, even with the large sampling of board states. To explore the correlation

between the pawn x pawn attacking relationship and board state evaluation, more board

states would have to be collected to normalize the effect of outliers in the current data set.

4.5 Some Weights did not follow the Correlation

For lesser pieces attacking greater pieces, there was a R^2 = 0.82 positive

correlation between the weight of an attacking relationship and the discrepancy between

the weights of the two pieces. However, not every attacking relationship followed this

trend. For example, the Pawn x Knight relationship held more weight than the Pawn x

Rook relationship even though the latter is a more favorable exchange. All of the 6588

board states were taken from games contested between players of a high caliber. High-

level players don’t leave pieces hanging, so the only time the active side’s lesser pieces

attacks the opponent’s greater pieces is during a piece exchange. And even though we

have 6588 board states, only a few of those board states catch a snapshot of a piece

exchange. To determine the true correlational strength between attacking relationship

Page 18: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

18

weight and discrepancy between the weights of the pieces, we must collect more board

states in the midst of a piece exchange.

5. Direction of Future Research

5.1 Implications in Other Fields

The idea of creating simplified, cost-effective models like the one we used for a

chess engine’s evaluation function could be tested in other fields like medicine. Doctors

use subjective criteria to determine risk of a disease such as heart disease. If a group of

doctors can compile a set of known risk factors for heart disease and collect ekg’s and

blood samples from patients who suffered a heart attack, doctors can use regression

modeling to create a universal set of weights for these risk factors. The use of regression

modeling to weight risk factors can be extended beyond heart disease to diseases like

cancer, diabetes, and obesity.

5.2 Implications in Chess

Our regression modeled metric weights for 55 metrics, while current world-class

engines use thousands of weighted metrics. Since there is a correlation between the

number of metrics and the playing strength of the engine, we can continue adding metrics

to our regression model to try and increase the playing level of our engine. We can also

give each metric a middlegame and endgame weight so that the engine evaluates each

part of the game with equal accuracy. Eventually, the goal is to have our engine’s playing

level surpass Stockfish’s.

Page 19: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

19

6. Acknowledgements

Thanks to my mentor, Dr. Peter Danzig, for his guidance throughout the

development of the paper, Mr. Richard Page, whose class project inspired me to pursue

this project and who worked with me over the summer on my project goals, and Mr.

Christopher Spenner for his advice in writing this paper. Also thanks to the very helpful

support staff at stockfishchess.org.

7. References

1 A short history of computer chess. Accessed November 11, 2012.

http://www.chessbase.com/columns/column.asp?pid=102.

2 FEN Standard. Accessed November 11, 2012. http://www.chessville.com/

Reference_Center/FEN_Description.htm. 3 Shannon, Claude E. "Programming a Computer for Playing Chess." Philosophical

Magazine, November 8, 1949. Accessed November 11, 2012.

http://vision.unipv.it/IA1/ProgrammingaComputerforPlayingChess.pdf

4 Minimax search and Alpha-Beta Pruning. Last modified 2002. Accessed November 11,

2012. http://www.cs.cornell.edu/courses/cs312/2002sp/lectures/rec21.htm.

5 Romstad, Tord, Marco Costalba, Joona Kiiski, Daylen Yang, Salvo Spitaleri, and

Jim Ablett. Stockfish. Version 2.3.1. 2012. Stockfish. Accessed November

11, 2012. http://stockfishchess.org/.

6 AutoIT. Version 3.3.8.1. 2012. autoitscript. Accessed November 11, 2012.

http://www.autoitscript.com/site/.

7 Rajilich, Vasik. Rybka. Version 4. 2010. CD-ROM.

8 Papoulis, Athanasios, and S. Unnikrishna Pillai. Probability, Random Variables

and Stochastic Processes. 4th ed. New York, NY: McGraw-Hill, 2002.

9 Wolfram, Stephen. Mathematica. Version 8.0.4. Champaign, IL: Wolfram, 2011.

CD-ROM.

10

BlitzIn. Version 3.0.5. 2011. ICC. Accessed November 11, 2012.

http://www.chessclub.com/download-software.

Page 20: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

20

11

Rating Estimator. Last modified August 4, 2012. Accessed November 11, 2012.

http://www.uschess.org/content/view/9177/679/.

8. Appendix

Metric Regression (weight)

How metric value is computed

Side to Move Pawn X Pawn -1.08354 Instances of pawns attacking pawns Pawn X Knight 1.33703 Instances of pawns attacking knights Pawn X Bishop 1.74922 Instances of pawns attacking bishops Pawn X Rook 1.02793 Instances of pawns attacking rooks Pawn X Queen 4.7279 Instances of pawns attacking queen Knight X Pawn 0.0956523 Instances of knights attacking pawns Knight X Knight -0.228428 Instances of knights attacking knights Knight X Bishop 0.760167 Instances of knights attacking bishops Knight X Rook 1.02338 Instances of knights attacking rooks Knight X Queen 5.36788 Instances of knights attacking queen Bishop X Pawn 0.150581 Instances of bishops attacking pawns Bishop X Knight 0.297229 Instances of bishops attacking knights Bishop X Bishop 0.0591714 Instances of bishops attacking bishops Bishop X Rook 1.79835 Instances of bishops attacking rooks Bishop X Queen 4.54408 Instances of bishops attacking queen Rook X Pawn 0.188971 Instances of rooks attacking pawns Rook X Knight 0.426902 Instances of rooks attacking knights Rook X Bishop 0.760438 Instances of rooks attacking bishops Rook X Rook 0.528506 Instances of rooks attacking rooks Rook X Queen 3.86158 Instances of rooks attacking queen Queen X Pawn 0.196079 Instances of queen attacking pawns Queen X Knight -0.00773957 Instances of queen attacking knights Queen X Bishop 0.453631 Instances of queen attacking bishops Queen X Rook -0.279459 Instances of queen attacking rooks Queen X Queen 0.18281 Instance of queen attacking queen

Defending Side Pawn X Pawn -1.14423 Instances of pawns attacking pawns Pawn X Knight -0.0870649 Instances of pawns attacking knights Pawn X Bishop 0.230158 Instances of pawns attacking bishops Pawn X Rook 0.863338 Instances of pawns attacking rooks Pawn X Queen 0.363773 Instances of pawns attacking queen Knight X Pawn 0.0560502 Instances of knights attacking pawns Knight X Knight -0.281736 Instances of knights attacking knights Knight X Bishop 0.180345 Instances of knights attacking bishops

Page 21: Novel Regression-Based Chess Evaluation Function Challenges Conventional Evaluation Function

21

Knight X Rook -0.10701 Instances of knights attacking rooks Knight X Queen 0.859854 Instances of knights attacking queen Bishop X Pawn 0.120128 Instances of bishops attacking pawns Bishop X Knight 0.1253 Instances of bishops attacking knights Bishop X Bishop -0.422367 Instances of bishops attacking bishops Bishop X Rook 0.233419 Instances of bishops attacking rooks Bishop X Queen 0.529539 Instances of bishops attacking queen Rook X Pawn 0.109619 Instances of rooks attacking pawns Rook X Knight 0.573432 Instances of rooks attacking knights Rook X Bishop 0.421293 Instances of rooks attacking bishops Rook X Rook 0.119157 Instances of rooks attacking rooks Rook X Queen 0.878515 Instances of rooks attacking queen Queen X Pawn 0.039703 Instances of queen attacking pawns Queen X Knight 0.020088 Instances of queen attacking knights Queen X Bishop 0.499491 Instances of queen attacking bishops Queen X Rook -0.0405067 Instances of queen attacking rooks Queen X Queen -0.18281 Instance of queen attacking queen

Piece Value Pawn 1.03723 Number of white pawns – number of

black pawns Knight 2.27615 Number of white knights – number of

black knights Bishop 2.38974 Number of white bishops – number of

black bishops Rook 3.35919 Number of white rooks – number of black

rooks Queen 6.64456 Instance of white queen – instance of

black queen