public virtual void TestInit() { gameState = GameStateBuilder.Build(); evConfig = new EvaluationConfig(); evConfigPO = new PrivateObject(evConfig); evaluator = new PositionEvaluatorWithStats(gameState, evConfig); }
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); }
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; }
// 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; }
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; }
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) });
// 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; }