public static void Eval(ChessBoard cb, ThreadData threadData) { var mobilityScore = EvalUtil.CalculateMobilityScoresAndSetAttacks(cb); Console.WriteLine(" Material imbalance: " + EvalUtil.GetImbalances(cb, threadData.MaterialCache)); Console.WriteLine(" Position : " + GetMgEgString(cb.PsqtScore)); Console.WriteLine(" Mobility : " + GetMgEgString(mobilityScore)); Console.WriteLine(" Pawn : " + EvalUtil.GetPawnScores(cb, threadData.PawnCache)); Console.WriteLine(" Pawn-passed : " + GetMgEgString(PassedPawnEval.CalculateScores(cb))); Console.WriteLine(" Pawn shield : " + GetMgEgString(EvalUtil.CalculatePawnShieldBonus(cb))); Console.WriteLine(" King-safety : " + KingSafetyEval.CalculateScores(cb)); Console.WriteLine(" Threats : " + GetMgEgString(EvalUtil.CalculateThreats(cb))); Console.WriteLine(" Other : " + EvalUtil.CalculateOthers(cb)); Console.WriteLine(" Space : " + EvalUtil.CalculateSpace(cb)); Console.WriteLine("-----------------------------"); Console.WriteLine(" Total : " + ChessConstants.ColorFactor[cb.ColorToMove] * EvalUtil.GetScore(cb, threadData)); }
private static void CompareScores(ChessBoard cb1, ChessBoard cb2, int factor) { EvalUtil.CalculateMobilityScoresAndSetAttacks(cb1); EvalUtil.CalculateMobilityScoresAndSetAttacks(cb2); if (KingSafetyEval.CalculateScores(cb2) != KingSafetyEval.CalculateScores(cb1) * factor) { Console.WriteLine("Unequal king-safety: " + KingSafetyEval.CalculateScores(cb1) + " " + KingSafetyEval.CalculateScores(cb2) * factor); } if (EvalUtil.CalculatePositionScores(cb1) != EvalUtil.CalculatePositionScores(cb2) * factor) { Console.WriteLine("Unequal position score: " + EvalUtil.CalculatePositionScores(cb1) + " " + EvalUtil.CalculatePositionScores(cb2) * factor); } // if (EvalUtil.getPawnScores(cb1) != EvalUtil.getPawnScores(cb2) * factor) { // System.out.println("Unequal pawns: " + EvalUtil.getPawnScores(cb1) + " " + EvalUtil.getPawnScores(cb2) * // factor); // } // if (EvalUtil.getImbalances(cb1) != EvalUtil.getImbalances(cb2) * factor) { // System.out.println("Unequal imbalances: " + EvalUtil.getImbalances(cb1) + " " + EvalUtil.getImbalances(cb2) * // factor); // } if (EvalUtil.CalculateOthers(cb2) != EvalUtil.CalculateOthers(cb1) * factor) { Console.WriteLine("Unequal others: " + EvalUtil.CalculateOthers(cb1) + " " + EvalUtil.CalculateOthers(cb2) * factor); } if (EvalUtil.CalculateThreats(cb2) != EvalUtil.CalculateThreats(cb1) * factor) { Console.WriteLine("Unequal threats: " + EvalUtil.CalculateThreats(cb1) + " " + EvalUtil.CalculateThreats(cb2) * factor); } if (PassedPawnEval.CalculateScores(cb1) != PassedPawnEval.CalculateScores(cb2) * factor) { Console.WriteLine("Unequal passed-pawns: " + PassedPawnEval.CalculateScores(cb1) + " " + PassedPawnEval.CalculateScores(cb2) * factor); } }