@@ -20,8 +20,8 @@ public class Evaluator: IChessEval
2020
2121 protected readonly PawnEvaluator _evalPawns ;
2222 public readonly MaterialEvaluator _evalMaterial ;
23+ private readonly PcSqEvaluator _evalPcSq ;
2324
24- public readonly PhasedScore [ ] [ ] _pcsqPiecePos = new PhasedScore [ PieceUtil . LookupArrayLength ] [ ] ;
2525 public readonly PhasedScore [ ] [ ] _mobilityPieceTypeCount = new PhasedScore [ PieceTypeUtil . LookupArrayLength ] [ ] ;
2626
2727 public readonly int [ ] _endgameMateKingPcSq ;
@@ -90,46 +90,7 @@ public Evaluator(Settings settings)
9090 //setup pawn evaluation
9191 _evalPawns = new PawnEvaluator ( _settings , 10000 ) ;
9292 _evalMaterial = new MaterialEvaluator ( _settings . MaterialValues ) ;
93-
94-
95- //normalize pcsq
96- Action < Settings . PcSqDictionary > actionNormalizePcSq = ( data ) =>
97- {
98- int sum = PositionUtil . AllPositions . Sum ( p => data [ p ] ) ;
99- int per = sum / 64 ;
100- data . Offset -= per ;
101- } ;
102- foreach ( PieceType pieceType in PieceTypeUtil . AllPieceTypes )
103- {
104- actionNormalizePcSq ( settings . PcSqTables [ pieceType ] [ GameStage . Opening ] ) ;
105- actionNormalizePcSq ( settings . PcSqTables [ pieceType ] [ GameStage . Endgame ] ) ;
106- }
107-
108- //setup piecesq tables
109- foreach ( Piece piece in PieceUtil . AllPieces )
110- {
111- _pcsqPiecePos [ ( int ) piece ] = new PhasedScore [ 64 ] ;
112- foreach ( Position pos in PositionUtil . AllPositions )
113- {
114-
115- if ( piece . PieceToPlayer ( ) == Player . White )
116- {
117- _pcsqPiecePos [ ( int ) piece ] [ ( int ) pos ] = PhasedScoreUtil . Create (
118- settings . PcSqTables [ piece . ToPieceType ( ) ] [ GameStage . Opening ] [ pos ] ,
119- settings . PcSqTables [ piece . ToPieceType ( ) ] [ GameStage . Endgame ] [ pos ] ) ;
120- }
121- else
122- {
123- _pcsqPiecePos [ ( int ) piece ] [ ( int ) pos ] = PhasedScoreUtil . Create (
124- - settings . PcSqTables [ piece . ToPieceType ( ) ] [ GameStage . Opening ] [ pos . Reverse ( ) ] ,
125- - settings . PcSqTables [ piece . ToPieceType ( ) ] [ GameStage . Endgame ] [ pos . Reverse ( ) ] ) ;
126- }
127-
128-
129- }
130- }
131-
132-
93+ _evalPcSq = new PcSqEvaluator ( settings ) ;
13394
13495 //setup mobility arrays
13596
@@ -201,13 +162,9 @@ public Evaluator(Settings settings)
201162
202163 }
203164
204- public void PcSqValuesAdd ( Piece piece , Position pos , ref PhasedScore value )
205- {
206- value = value . Add ( _pcsqPiecePos [ ( int ) piece ] [ ( int ) pos ] ) ;
207- }
208- public void PcSqValuesRemove ( Piece piece , Position pos , ref PhasedScore value )
165+ public PcSqEvaluator PcSq
209166 {
210- value = value . Subtract ( _pcsqPiecePos [ ( int ) piece ] [ ( int ) pos ] ) ;
167+ get { return _evalPcSq ; }
211168 }
212169
213170 public int EvalFor ( Board board , Player who )
0 commit comments