public virtual void TestInit()
 {
     gameState  = GameStateBuilder.Build();
     evConfig   = new EvaluationConfig();
     evConfigPO = new PrivateObject(evConfig);
     evaluator  = new PositionEvaluatorWithStats(gameState, evConfig);
 }
Esempio n. 2
0
 public ArtemisEngine(GameState gameState, IEngineConfig config, OpeningBook openingBook)
 {
     this.gameState     = gameState;
     transpositionTable = new TranspositionTable(config);
     evConfig           = new EvaluationConfig();
     evaluator          = new PositionEvaluator(gameState, evConfig);
     Config             = config;
     this.openingBook   = openingBook;
     threadMaster       = new ThreadMaster(this, gameState, transpositionTable, config);
 }
Esempio n. 3
0
        public SearchThread(ArtemisEngine engine, ThreadMaster master, GameState gameState, TranspositionTable transpositionTable, ConcurrentDictionary <ulong, bool> searchedNodes, IEngineConfig config)
        {
            this.master    = master;
            this.gameState = gameState;
            EvaluationConfig evConfig = new EvaluationConfig();

            evaluator     = new PositionEvaluator(gameState, evConfig);
            moveEvaluator = new MoveEvaluator(evConfig);
            quietSearch   = new QuiescenceSearch(engine, gameState, evaluator, moveEvaluator);
            pvSearch      = new PVSearch(engine, gameState, transpositionTable, killerMoves, evaluator, moveEvaluator, quietSearch, searchedNodes, config);
            this.config   = config;
        }
Esempio n. 4
0
        // ReSharper restore FieldCanBeMadeReadOnly.Global
        // ReSharper restore ConvertToConstant.Global


        public void Set(EvaluationConfig CopyFromConfig)
        {
            // Copy material values.
            EgPawnMaterial   = CopyFromConfig.EgPawnMaterial;
            MgKnightMaterial = CopyFromConfig.MgKnightMaterial;
            EgKnightMaterial = CopyFromConfig.EgKnightMaterial;
            MgBishopMaterial = CopyFromConfig.MgBishopMaterial;
            EgBishopMaterial = CopyFromConfig.EgBishopMaterial;
            MgRookMaterial   = CopyFromConfig.MgRookMaterial;
            EgRookMaterial   = CopyFromConfig.EgRookMaterial;
            MgQueenMaterial  = CopyFromConfig.MgQueenMaterial;
            EgQueenMaterial  = CopyFromConfig.EgQueenMaterial;
            // Copy piece location values.
            MgPawnAdvancement   = CopyFromConfig.MgPawnAdvancement;
            EgPawnAdvancement   = CopyFromConfig.EgPawnAdvancement;
            MgPawnCentrality    = CopyFromConfig.MgPawnCentrality;
            EgPawnCentrality    = CopyFromConfig.EgPawnCentrality;
            MgKnightAdvancement = CopyFromConfig.MgKnightAdvancement;
            EgKnightAdvancement = CopyFromConfig.EgKnightAdvancement;
            MgKnightCentrality  = CopyFromConfig.MgKnightCentrality;
            EgKnightCentrality  = CopyFromConfig.EgKnightCentrality;
            MgKnightCorner      = CopyFromConfig.MgKnightCorner;
            EgKnightCorner      = CopyFromConfig.EgKnightCorner;
            MgBishopAdvancement = CopyFromConfig.MgBishopAdvancement;
            EgBishopAdvancement = CopyFromConfig.EgBishopAdvancement;
            MgBishopCentrality  = CopyFromConfig.MgBishopCentrality;
            EgBishopCentrality  = CopyFromConfig.EgBishopCentrality;
            MgBishopCorner      = CopyFromConfig.MgBishopCorner;
            EgBishopCorner      = CopyFromConfig.EgBishopCorner;
            MgRookAdvancement   = CopyFromConfig.MgRookAdvancement;
            EgRookAdvancement   = CopyFromConfig.EgRookAdvancement;
            MgRookCentrality    = CopyFromConfig.MgRookCentrality;
            EgRookCentrality    = CopyFromConfig.EgRookCentrality;
            MgRookCorner        = CopyFromConfig.MgRookCorner;
            EgRookCorner        = CopyFromConfig.EgRookCorner;
            MgQueenAdvancement  = CopyFromConfig.MgQueenAdvancement;
            EgQueenAdvancement  = CopyFromConfig.EgQueenAdvancement;
            MgQueenCentrality   = CopyFromConfig.MgQueenCentrality;
            EgQueenCentrality   = CopyFromConfig.EgQueenCentrality;
            MgQueenCorner       = CopyFromConfig.MgQueenCorner;
            EgQueenCorner       = CopyFromConfig.EgQueenCorner;
            MgKingAdvancement   = CopyFromConfig.MgKingAdvancement;
            EgKingAdvancement   = CopyFromConfig.EgKingAdvancement;
            MgKingCentrality    = CopyFromConfig.MgKingCentrality;
            EgKingCentrality    = CopyFromConfig.EgKingCentrality;
            MgKingCorner        = CopyFromConfig.MgKingCorner;
            EgKingCorner        = CopyFromConfig.EgKingCorner;
            // Copy passed pawn values.
            PassedPawnPowerPer128       = CopyFromConfig.PassedPawnPowerPer128;
            MgPassedPawnScalePer128     = CopyFromConfig.MgPassedPawnScalePer128;
            EgPassedPawnScalePer128     = CopyFromConfig.EgPassedPawnScalePer128;
            EgFreePassedPawnScalePer128 = CopyFromConfig.EgFreePassedPawnScalePer128;
            EgKingEscortedPassedPawn    = CopyFromConfig.EgKingEscortedPassedPawn;
            // Copy piece mobility values.
            PieceMobilityPowerPer128 = CopyFromConfig.PieceMobilityPowerPer128;
            MgKnightMobilityScale    = CopyFromConfig.MgKnightMobilityScale;
            EgKnightMobilityScale    = CopyFromConfig.EgKnightMobilityScale;
            MgBishopMobilityScale    = CopyFromConfig.MgBishopMobilityScale;
            EgBishopMobilityScale    = CopyFromConfig.EgBishopMobilityScale;
            MgRookMobilityScale      = CopyFromConfig.MgRookMobilityScale;
            EgRookMobilityScale      = CopyFromConfig.EgRookMobilityScale;
            MgQueenMobilityScale     = CopyFromConfig.MgQueenMobilityScale;
            EgQueenMobilityScale     = CopyFromConfig.EgQueenMobilityScale;
            // Copy king safety values.
            KingSafetyPowerPer128              = CopyFromConfig.KingSafetyPowerPer128;
            MgKingSafetySemiOpenFilePer8       = CopyFromConfig.MgKingSafetySemiOpenFilePer8;
            KingSafetyMinorAttackOuterRingPer8 = CopyFromConfig.KingSafetyMinorAttackOuterRingPer8;
            KingSafetyMinorAttackInnerRingPer8 = CopyFromConfig.KingSafetyMinorAttackInnerRingPer8;
            KingSafetyRookAttackOuterRingPer8  = CopyFromConfig.KingSafetyRookAttackOuterRingPer8;
            KingSafetyRookAttackInnerRingPer8  = CopyFromConfig.KingSafetyRookAttackInnerRingPer8;
            KingSafetyQueenAttackOuterRingPer8 = CopyFromConfig.KingSafetyQueenAttackOuterRingPer8;
            KingSafetyQueenAttackInnerRingPer8 = CopyFromConfig.KingSafetyQueenAttackInnerRingPer8;
            KingSafetyScalePer128              = CopyFromConfig.KingSafetyScalePer128;
            // Copy minor values.
            MgBishopPair = CopyFromConfig.MgBishopPair;
            EgBishopPair = CopyFromConfig.EgBishopPair;
            // Copy endgame scaling values.
            EgBishopAdvantagePer128   = CopyFromConfig.EgBishopAdvantagePer128;
            EgOppBishopsPerPassedPawn = CopyFromConfig.EgOppBishopsPerPassedPawn;
            EgOppBishopsPer128        = CopyFromConfig.EgOppBishopsPer128;
            EgWinningPerPawn          = CopyFromConfig.EgWinningPerPawn;
        }
Esempio n. 5
0
        private static void SetDefaultParameters(Parameters Parameters)
        {
            var evaluationConfig = new EvaluationConfig();

            // Pawns
            Parameters[nameof(EvaluationConfig.MgPawnAdvancement)].Value = evaluationConfig.MgPawnAdvancement;
            Parameters[nameof(EvaluationConfig.EgPawnAdvancement)].Value = evaluationConfig.EgPawnAdvancement;
            Parameters[nameof(EvaluationConfig.MgPawnCentrality)].Value  = evaluationConfig.MgPawnCentrality;
            Parameters[nameof(EvaluationConfig.EgPawnCentrality)].Value  = evaluationConfig.EgPawnCentrality;
            Parameters[nameof(EvaluationConfig.EgPawnConstant)].Value    = evaluationConfig.EgPawnConstant;
            // Knights
            Parameters[nameof(EvaluationConfig.MgKnightAdvancement)].Value = evaluationConfig.MgKnightAdvancement;
            Parameters[nameof(EvaluationConfig.EgKnightAdvancement)].Value = evaluationConfig.EgKnightAdvancement;
            Parameters[nameof(EvaluationConfig.MgKnightCentrality)].Value  = evaluationConfig.MgKnightCentrality;
            Parameters[nameof(EvaluationConfig.EgKnightCentrality)].Value  = evaluationConfig.EgKnightCentrality;
            Parameters[nameof(EvaluationConfig.MgKnightCorner)].Value      = evaluationConfig.MgKnightCorner;
            Parameters[nameof(EvaluationConfig.EgKnightCorner)].Value      = evaluationConfig.EgKnightCorner;
            Parameters[nameof(EvaluationConfig.EgKnightConstant)].Value    = evaluationConfig.EgKnightConstant;
            // Bishops
            Parameters[nameof(EvaluationConfig.MgBishopAdvancement)].Value = evaluationConfig.MgBishopAdvancement;
            Parameters[nameof(EvaluationConfig.EgBishopAdvancement)].Value = evaluationConfig.EgBishopAdvancement;
            Parameters[nameof(EvaluationConfig.MgBishopCentrality)].Value  = evaluationConfig.MgBishopCentrality;
            Parameters[nameof(EvaluationConfig.EgBishopCentrality)].Value  = evaluationConfig.EgBishopCentrality;
            Parameters[nameof(EvaluationConfig.MgBishopCorner)].Value      = evaluationConfig.MgBishopCorner;
            Parameters[nameof(EvaluationConfig.EgBishopCorner)].Value      = evaluationConfig.EgBishopCorner;
            Parameters[nameof(EvaluationConfig.EgBishopConstant)].Value    = evaluationConfig.EgBishopConstant;
            // Rooks
            Parameters[nameof(EvaluationConfig.MgRookAdvancement)].Value = evaluationConfig.MgRookAdvancement;
            Parameters[nameof(EvaluationConfig.EgRookAdvancement)].Value = evaluationConfig.EgRookAdvancement;
            Parameters[nameof(EvaluationConfig.MgRookCentrality)].Value  = evaluationConfig.MgRookCentrality;
            Parameters[nameof(EvaluationConfig.EgRookCentrality)].Value  = evaluationConfig.EgRookCentrality;
            Parameters[nameof(EvaluationConfig.MgRookCorner)].Value      = evaluationConfig.MgRookCorner;
            Parameters[nameof(EvaluationConfig.EgRookCorner)].Value      = evaluationConfig.EgRookCorner;
            Parameters[nameof(EvaluationConfig.EgRookConstant)].Value    = evaluationConfig.EgRookConstant;
            // Queens
            Parameters[nameof(EvaluationConfig.MgQueenAdvancement)].Value = evaluationConfig.MgQueenAdvancement;
            Parameters[nameof(EvaluationConfig.EgQueenAdvancement)].Value = evaluationConfig.EgQueenAdvancement;
            Parameters[nameof(EvaluationConfig.MgQueenCentrality)].Value  = evaluationConfig.MgQueenCentrality;
            Parameters[nameof(EvaluationConfig.EgQueenCentrality)].Value  = evaluationConfig.EgQueenCentrality;
            Parameters[nameof(EvaluationConfig.MgQueenCorner)].Value      = evaluationConfig.MgQueenCorner;
            Parameters[nameof(EvaluationConfig.EgQueenCorner)].Value      = evaluationConfig.EgQueenCorner;
            Parameters[nameof(EvaluationConfig.EgQueenConstant)].Value    = evaluationConfig.EgQueenConstant;
            // King
            Parameters[nameof(EvaluationConfig.MgKingAdvancement)].Value = evaluationConfig.MgKingAdvancement;
            Parameters[nameof(EvaluationConfig.EgKingAdvancement)].Value = evaluationConfig.EgKingAdvancement;
            Parameters[nameof(EvaluationConfig.MgKingCentrality)].Value  = evaluationConfig.MgKingCentrality;
            Parameters[nameof(EvaluationConfig.EgKingCentrality)].Value  = evaluationConfig.EgKingCentrality;
            Parameters[nameof(EvaluationConfig.MgKingCorner)].Value      = evaluationConfig.MgKingCorner;
            Parameters[nameof(EvaluationConfig.EgKingCorner)].Value      = evaluationConfig.EgKingCorner;
            // Passed Pawns
            Parameters[nameof(EvaluationConfig.PassedPawnPowerPer16)].Value        = evaluationConfig.PassedPawnPowerPer16;
            Parameters[nameof(EvaluationConfig.MgPassedPawnScalePer128)].Value     = evaluationConfig.MgPassedPawnScalePer128;
            Parameters[nameof(EvaluationConfig.EgPassedPawnScalePer128)].Value     = evaluationConfig.EgPassedPawnScalePer128;
            Parameters[nameof(EvaluationConfig.EgFreePassedPawnScalePer128)].Value = evaluationConfig.EgFreePassedPawnScalePer128;
            Parameters[nameof(EvaluationConfig.EgKingEscortedPassedPawn)].Value    = evaluationConfig.EgKingEscortedPassedPawn;
            // Piece Mobility
            Parameters[nameof(EvaluationConfig.PieceMobilityPowerPer16)].Value = evaluationConfig.PieceMobilityPowerPer16;
            Parameters[nameof(EvaluationConfig.MgKnightMobilityScale)].Value   = evaluationConfig.MgKnightMobilityScale;
            Parameters[nameof(EvaluationConfig.EgKnightMobilityScale)].Value   = evaluationConfig.EgKnightMobilityScale;
            Parameters[nameof(EvaluationConfig.MgBishopMobilityScale)].Value   = evaluationConfig.MgBishopMobilityScale;
            Parameters[nameof(EvaluationConfig.EgBishopMobilityScale)].Value   = evaluationConfig.EgBishopMobilityScale;
            Parameters[nameof(EvaluationConfig.MgRookMobilityScale)].Value     = evaluationConfig.MgRookMobilityScale;
            Parameters[nameof(EvaluationConfig.EgRookMobilityScale)].Value     = evaluationConfig.EgRookMobilityScale;
            Parameters[nameof(EvaluationConfig.MgQueenMobilityScale)].Value    = evaluationConfig.MgQueenMobilityScale;
            Parameters[nameof(EvaluationConfig.EgQueenMobilityScale)].Value    = evaluationConfig.EgQueenMobilityScale;
            // King Safety
            Parameters[nameof(EvaluationConfig.KingSafetyPowerPer16)].Value               = evaluationConfig.KingSafetyPowerPer16;
            Parameters[nameof(EvaluationConfig.MgKingSafetySemiOpenFilePer8)].Value       = evaluationConfig.MgKingSafetySemiOpenFilePer8;
            Parameters[nameof(EvaluationConfig.KingSafetyMinorAttackOuterRingPer8)].Value = evaluationConfig.KingSafetyMinorAttackOuterRingPer8;
            Parameters[nameof(EvaluationConfig.KingSafetyMinorAttackInnerRingPer8)].Value = evaluationConfig.KingSafetyMinorAttackInnerRingPer8;
            Parameters[nameof(EvaluationConfig.KingSafetyRookAttackOuterRingPer8)].Value  = evaluationConfig.KingSafetyRookAttackOuterRingPer8;
            Parameters[nameof(EvaluationConfig.KingSafetyRookAttackInnerRingPer8)].Value  = evaluationConfig.KingSafetyRookAttackInnerRingPer8;
            Parameters[nameof(EvaluationConfig.KingSafetyQueenAttackOuterRingPer8)].Value = evaluationConfig.KingSafetyQueenAttackOuterRingPer8;
            Parameters[nameof(EvaluationConfig.KingSafetyQueenAttackInnerRingPer8)].Value = evaluationConfig.KingSafetyQueenAttackInnerRingPer8;
            Parameters[nameof(EvaluationConfig.KingSafetyScalePer128)].Value              = evaluationConfig.KingSafetyScalePer128;
        }
Esempio n. 6
0
        public static Parameters CreateParameters()
        {
            var evaluationConfig = new EvaluationConfig();

            return(new Parameters
            {
                // Endgame Material
                new (nameof(EvaluationConfig.EgPawnMaterial), Evaluation.MgPawnMaterial, Evaluation.MgPawnMaterial + 100),
                new (nameof(EvaluationConfig.EgKnightMaterial), evaluationConfig.MgKnightMaterial, evaluationConfig.MgKnightMaterial + 200),
                new (nameof(EvaluationConfig.EgBishopMaterial), evaluationConfig.MgBishopMaterial, evaluationConfig.MgBishopMaterial + 300),
                new (nameof(EvaluationConfig.EgRookMaterial), evaluationConfig.MgRookMaterial, evaluationConfig.MgRookMaterial + 400),
                new (nameof(EvaluationConfig.EgQueenMaterial), evaluationConfig.MgQueenMaterial, evaluationConfig.MgQueenMaterial + 500),
                // Piece Location
                // Pawns
                new (nameof(EvaluationConfig.MgPawnAdvancement), 0, 25),
                new (nameof(EvaluationConfig.EgPawnAdvancement), 0, 25),
                new (nameof(EvaluationConfig.MgPawnCentrality), 0, 25),
                new (nameof(EvaluationConfig.EgPawnCentrality), -25, 25),
                // Knights
                new (nameof(EvaluationConfig.MgKnightAdvancement), -25, 25),
                new (nameof(EvaluationConfig.EgKnightAdvancement), 0, 50),
                new (nameof(EvaluationConfig.MgKnightCentrality), 0, 25),
                new (nameof(EvaluationConfig.EgKnightCentrality), 0, 50),
                new (nameof(EvaluationConfig.MgKnightCorner), -25, 0),
                new (nameof(EvaluationConfig.EgKnightCorner), -50, 0),
                // Bishops
                new (nameof(EvaluationConfig.MgBishopAdvancement), -25, 25),
                new (nameof(EvaluationConfig.EgBishopAdvancement), 0, 50),
                new (nameof(EvaluationConfig.MgBishopCentrality), 0, 25),
                new (nameof(EvaluationConfig.EgBishopCentrality), 0, 25),
                new (nameof(EvaluationConfig.MgBishopCorner), -25, 0),
                new (nameof(EvaluationConfig.EgBishopCorner), -50, 0),
                // Rooks
                new (nameof(EvaluationConfig.MgRookAdvancement), -25, 25),
                new (nameof(EvaluationConfig.EgRookAdvancement), 0, 50),
                new (nameof(EvaluationConfig.MgRookCentrality), 0, 25),
                new (nameof(EvaluationConfig.EgRookCentrality), -25, 25),
                new (nameof(EvaluationConfig.MgRookCorner), -25, 0),
                new (nameof(EvaluationConfig.EgRookCorner), -25, 25),
                // Queens
                new (nameof(EvaluationConfig.MgQueenAdvancement), -25, 25),
                new (nameof(EvaluationConfig.EgQueenAdvancement), 0, 50),
                new (nameof(EvaluationConfig.MgQueenCentrality), 0, 25),
                new (nameof(EvaluationConfig.EgQueenCentrality), -25, 25),
                new (nameof(EvaluationConfig.MgQueenCorner), -25, 0),
                new (nameof(EvaluationConfig.EgQueenCorner), -25, 25),
                // King
                new (nameof(EvaluationConfig.MgKingAdvancement), -50, 0),
                new (nameof(EvaluationConfig.EgKingAdvancement), 0, 50),
                new (nameof(EvaluationConfig.MgKingCentrality), -50, 0),
                new (nameof(EvaluationConfig.EgKingCentrality), 0, 50),
                new (nameof(EvaluationConfig.MgKingCorner), 0, 50),
                new (nameof(EvaluationConfig.EgKingCorner), -50, 0),
                // Passed Pawns
                new (nameof(EvaluationConfig.PassedPawnPowerPer128), 192, 320),
                new (nameof(EvaluationConfig.MgPassedPawnScalePer128), 0, 256),
                new (nameof(EvaluationConfig.EgPassedPawnScalePer128), 256, 768),
                new (nameof(EvaluationConfig.EgFreePassedPawnScalePer128), 512, 1280),
                new (nameof(EvaluationConfig.EgKingEscortedPassedPawn), 0, 32),
                // Piece Mobility
                new (nameof(EvaluationConfig.PieceMobilityPowerPer128), 32, 96),
                new (nameof(EvaluationConfig.MgKnightMobilityScale), 0, 128),
                new (nameof(EvaluationConfig.EgKnightMobilityScale), 0, 256),
                new (nameof(EvaluationConfig.MgBishopMobilityScale), 0, 128),
                new (nameof(EvaluationConfig.EgBishopMobilityScale), 0, 512),
                new (nameof(EvaluationConfig.MgRookMobilityScale), 0, 256),
                new (nameof(EvaluationConfig.EgRookMobilityScale), 0, 512),
                new (nameof(EvaluationConfig.MgQueenMobilityScale), 0, 256),
                new (nameof(EvaluationConfig.EgQueenMobilityScale), 0, 1024),
                // King Safety
                new (nameof(EvaluationConfig.KingSafetyPowerPer128), 192, 320),
                new (nameof(EvaluationConfig.MgKingSafetySemiOpenFilePer8), 0, 64),
                new (nameof(EvaluationConfig.KingSafetyMinorAttackOuterRingPer8), 0, 64),
                new (nameof(EvaluationConfig.KingSafetyMinorAttackInnerRingPer8), 0, 64),
                new (nameof(EvaluationConfig.KingSafetyRookAttackOuterRingPer8), 0, 64),
                new (nameof(EvaluationConfig.KingSafetyRookAttackInnerRingPer8), 0, 64),
                new (nameof(EvaluationConfig.KingSafetyQueenAttackOuterRingPer8), 0, 64),
                new (nameof(EvaluationConfig.KingSafetyQueenAttackInnerRingPer8), 0, 64),
                new (nameof(EvaluationConfig.KingSafetyScalePer128), 0, 128),
                // Minor Pieces
                new (nameof(EvaluationConfig.MgBishopPair), 0, 50),
                new (nameof(EvaluationConfig.EgBishopPair), 50, 200),
                // Endgame Scaling
                new (nameof(EvaluationConfig.EgBishopAdvantagePer128), 0, 64),
                new (nameof(EvaluationConfig.EgOppBishopsPerPassedPawn), 0, 64),
                new (nameof(EvaluationConfig.EgOppBishopsPer128), 0, 64),
                new (nameof(EvaluationConfig.EgWinningPerPawn), 0, 32)
            });
Esempio n. 7
0
        // ReSharper restore FieldCanBeMadeReadOnly.Global
        // ReSharper restore ConvertToConstant.Global


        public void Set(EvaluationConfig CopyFromConfig)
        {
            // Copy piece location values.
            MgPawnAdvancement   = CopyFromConfig.MgPawnAdvancement;
            EgPawnAdvancement   = CopyFromConfig.EgPawnAdvancement;
            MgPawnCentrality    = CopyFromConfig.MgPawnCentrality;
            EgPawnCentrality    = CopyFromConfig.EgPawnCentrality;
            EgPawnConstant      = CopyFromConfig.EgPawnConstant;
            MgKnightAdvancement = CopyFromConfig.MgKnightAdvancement;
            EgKnightAdvancement = CopyFromConfig.EgKnightAdvancement;
            MgKnightCentrality  = CopyFromConfig.MgKnightCentrality;
            EgKnightCentrality  = CopyFromConfig.EgKnightCentrality;
            MgKnightCorner      = CopyFromConfig.MgKnightCorner;
            EgKnightCorner      = CopyFromConfig.EgKnightCorner;
            EgKnightConstant    = CopyFromConfig.EgKnightConstant;
            MgBishopAdvancement = CopyFromConfig.MgBishopAdvancement;
            EgBishopAdvancement = CopyFromConfig.EgBishopAdvancement;
            MgBishopCentrality  = CopyFromConfig.MgBishopCentrality;
            EgBishopCentrality  = CopyFromConfig.EgBishopCentrality;
            MgBishopCorner      = CopyFromConfig.MgBishopCorner;
            EgBishopCorner      = CopyFromConfig.EgBishopCorner;
            EgBishopConstant    = CopyFromConfig.EgBishopConstant;
            MgRookAdvancement   = CopyFromConfig.MgRookAdvancement;
            EgRookAdvancement   = CopyFromConfig.EgRookAdvancement;
            MgRookCentrality    = CopyFromConfig.MgRookCentrality;
            EgRookCentrality    = CopyFromConfig.EgRookCentrality;
            MgRookCorner        = CopyFromConfig.MgRookCorner;
            EgRookCorner        = CopyFromConfig.EgRookCorner;
            EgRookConstant      = CopyFromConfig.EgRookConstant;
            MgQueenAdvancement  = CopyFromConfig.MgQueenAdvancement;
            EgQueenAdvancement  = CopyFromConfig.EgQueenAdvancement;
            MgQueenCentrality   = CopyFromConfig.MgQueenCentrality;
            EgQueenCentrality   = CopyFromConfig.EgQueenCentrality;
            MgQueenCorner       = CopyFromConfig.MgQueenCorner;
            EgQueenCorner       = CopyFromConfig.EgQueenCorner;
            EgQueenConstant     = CopyFromConfig.EgQueenConstant;
            MgKingAdvancement   = CopyFromConfig.MgKingAdvancement;
            EgKingAdvancement   = CopyFromConfig.EgKingAdvancement;
            MgKingCentrality    = CopyFromConfig.MgKingCentrality;
            EgKingCentrality    = CopyFromConfig.EgKingCentrality;
            MgKingCorner        = CopyFromConfig.MgKingCorner;
            EgKingCorner        = CopyFromConfig.EgKingCorner;
            // Copy passed pawn values.
            PassedPawnPowerPer16        = CopyFromConfig.PassedPawnPowerPer16;
            MgPassedPawnScalePer128     = CopyFromConfig.MgPassedPawnScalePer128;
            EgPassedPawnScalePer128     = CopyFromConfig.EgPassedPawnScalePer128;
            EgFreePassedPawnScalePer128 = CopyFromConfig.EgFreePassedPawnScalePer128;
            EgKingEscortedPassedPawn    = CopyFromConfig.EgKingEscortedPassedPawn;
            // Copy piece mobility values.
            PieceMobilityPowerPer16 = CopyFromConfig.PieceMobilityPowerPer16;
            MgKnightMobilityScale   = CopyFromConfig.MgKnightMobilityScale;
            EgKnightMobilityScale   = CopyFromConfig.EgKnightMobilityScale;
            MgBishopMobilityScale   = CopyFromConfig.MgBishopMobilityScale;
            EgBishopMobilityScale   = CopyFromConfig.EgBishopMobilityScale;
            MgRookMobilityScale     = CopyFromConfig.MgRookMobilityScale;
            EgRookMobilityScale     = CopyFromConfig.EgRookMobilityScale;
            MgQueenMobilityScale    = CopyFromConfig.MgQueenMobilityScale;
            EgQueenMobilityScale    = CopyFromConfig.EgQueenMobilityScale;
            // Copy king safety values.
            KingSafetyPowerPer16               = CopyFromConfig.KingSafetyPowerPer16;
            MgKingSafetySemiOpenFilePer8       = CopyFromConfig.MgKingSafetySemiOpenFilePer8;
            KingSafetyMinorAttackOuterRingPer8 = CopyFromConfig.KingSafetyMinorAttackOuterRingPer8;
            KingSafetyMinorAttackInnerRingPer8 = CopyFromConfig.KingSafetyMinorAttackInnerRingPer8;
            KingSafetyRookAttackOuterRingPer8  = CopyFromConfig.KingSafetyRookAttackOuterRingPer8;
            KingSafetyRookAttackInnerRingPer8  = CopyFromConfig.KingSafetyRookAttackInnerRingPer8;
            KingSafetyQueenAttackOuterRingPer8 = CopyFromConfig.KingSafetyQueenAttackOuterRingPer8;
            KingSafetyQueenAttackInnerRingPer8 = CopyFromConfig.KingSafetyQueenAttackInnerRingPer8;
            KingSafetyScalePer128              = CopyFromConfig.KingSafetyScalePer128;
        }