Пример #1
0
        public void RookRankTest()
        {
            int[] rookRankScores = evConfigPO.GetField("rookRank") as int[];

            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("1rbqkbn1/p1p1ppp1/3p3r/Pp5p/Rn1PP2P/3B1N2/1PP2PPR/1NBQK3 b - - 1 9");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(0, stats.RookRankScore[0]);
            Assert.AreEqual(0, stats.RookRankScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("2bqkbn1/p3ppp1/2pp3r/P6p/p2PP2P/1r1P1N2/1PQ2PPR/1NB1K3 w - - 0 13");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual(0, stats.RookRankScore[0]);
            Assert.AreEqual(rookRankScores[5], stats.RookRankScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("2bqkbn1/p3ppp1/2pp4/P2P3p/p3P2P/1r1P1N2/1PQB1PrR/1N2K3 w - - 0 15");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(0, stats.RookRankScore[0]);
            Assert.AreEqual(rookRankScores[5] + rookRankScores[6], stats.RookRankScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("2bqkbR1/p3pp2/3p3n/P2p3p/p3P2P/1r1P1N2/1PQB1P2/1N2K3 b - - 2 17");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual(rookRankScores[7], stats.RookRankScore[0]);
            Assert.AreEqual(rookRankScores[5], stats.RookRankScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("2bqkbR1/p3pp2/3p3n/P2p3p/p3P2P/1r1P1N2/1PQB1P2/1N2K3 b - - 2 17");
            evaluator.Evaluate(0, GameStage.Opening, 0, out stats);
            Assert.AreEqual(0, stats.RookRankScore[0]);
            Assert.AreEqual(0, stats.RookRankScore[1]);
        }
Пример #2
0
        public void SpaceTest_InitialPosition()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(0, stats.SpaceScore[0]);
            Assert.AreEqual(0, stats.SpaceScore[1]);
        }
Пример #3
0
        public void DefendedKnightOutpostTest()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("r1b1kb1r/4p3/2q3p1/pNpp1p1p/2PPnP1P/4P3/PP4P1/R1B1KB1R w KQkq - 0 15");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual((int)(knightSquare[33] * knightPawnProtectorModifier * knightOutpostModifier), stats.KnightSquareScore[0]);
            Assert.AreEqual((int)(knightSquare[36] * knightPawnProtectorModifier * knightPawnProtectorModifier * knightOutpostModifier), stats.KnightSquareScore[1]);
        }
Пример #4
0
        public void UndefendedKnightOutpostTest()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("r1bq1b1r/pp3k2/4pNp1/P1pp1pp1/3P4/2PB2P1/P2nKP1P/R1BQ3R b - - 0 16");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual((int)(knightSquare[45] * knightOutpostModifier), stats.KnightSquareScore[0]);
            Assert.AreEqual((int)(knightSquare[51] * knightOutpostModifier), stats.KnightSquareScore[1]);
        }
Пример #5
0
        public void UndefendedKnightTest()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("r1bqkb1r/pp1n1pp1/4p2p/n1ppP1N1/3P4/2PB4/PP2NPPP/R1BQK2R b KQkq - 1 9");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(knightSquare[12] + knightSquare[38], stats.KnightSquareScore[0]);
            Assert.AreEqual(knightSquare[24] + knightSquare[11], stats.KnightSquareScore[1]);
        }
Пример #6
0
        public void NoKnight()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("r1bq1b1r/pp6/4pkp1/P1pp1pp1/3P4/2PB2P1/P2QKP1P/R1B4R b - - 0 17");
            evaluator.Evaluate(0, GameStage.Opening, 0, out stats);
            Assert.AreEqual(0, stats.KnightSquareScore[0]);
            Assert.AreEqual(0, stats.KnightSquareScore[1]);
        }
Пример #7
0
        public void EvaluationTest()
        {
            EvaluationStats stats1 = new EvaluationStats();

            gameState.LoadPosition("2kr1b1r/ppp2p1p/5p2/n4p2/3P4/2P2N2/PP2KPPP/R1B4R w - - 0 13");
            int eval1 = evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats1);

            Console.WriteLine(stats1);
        }
Пример #8
0
        public void PassedPawnTest_EdgePawns()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("r2q1bnr/Qb1nk3/6B1/4N2P/Pp2p1p1/8/2PP1P2/RNB1K2R b KQ - 0 15");
            evaluator.Evaluate(0, GameStage.Opening, 0, out stats);
            Assert.AreEqual(passedPawnRank[3] + passedPawnRank[4], stats.PassedPawnScore[0]);
            Assert.AreEqual(0, stats.PassedPawnScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("rnbqkbnr/p4pp1/8/4N2p/1pB1p1PP/p2P4/2P2P2/RNBQK2R w KQkq - 0 10");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual(0, stats.PassedPawnScore[0]);
            Assert.AreEqual((int)(passedPawnRank[5] * passedPawnDefenderModifier), stats.PassedPawnScore[1]);
        }
Пример #9
0
        public void NoPassedPawnTest()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(0, stats.PassedPawnScore[0]);
            Assert.AreEqual(0, stats.PassedPawnScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("rnbq1bnr/p3kBp1/8/1p2N3/Pp2p1pP/8/2PP1P2/RNBQK2R w KQ - 1 10");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual(0, stats.PassedPawnScore[0]);
            Assert.AreEqual(0, stats.PassedPawnScore[1]);
        }
Пример #10
0
        public void SpaceTest_PawnsAdvanced()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("r1bqkbnr/1pp2p2/2n1pP1p/p2p3p/8/1P1P1N2/P1P1P1P1/RNBQKB1R b KQkq - 0 8");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(6 * spaceScore, stats.SpaceScore[0]);
            Assert.AreEqual(7 * spaceScore, stats.SpaceScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("r1b2knr/1p2bP2/2pPp2P/p7/1n6/3P3p/P3P3/RNBQKB1R w KQ - 0 19");
            evaluator.Evaluate(0, GameStage.Opening, 0, out stats);
            Assert.AreEqual(14 * spaceScore, stats.SpaceScore[0]);
            Assert.AreEqual(8 * spaceScore, stats.SpaceScore[1]);
        }
Пример #11
0
        public void PassedPawnTest_Regular()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("rnb1kbnr/p4p1p/2P5/3PN1p1/Pp6/6P1/4p2P/RNBQK2R b KQkq - 0 15");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual((int)(passedPawnRank[5] * passedPawnDefenderModifier) + passedPawnRank[4], stats.PassedPawnScore[0]);
            Assert.AreEqual(passedPawnRank[6] + passedPawnRank[4], stats.PassedPawnScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("rn2k1nr/p3b1pp/2P2p2/1P1PN3/8/1Q4P1/7P/RNB1K2R b KQkq - 0 19");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual((int)(passedPawnRank[5] * passedPawnDefenderModifier * passedPawnDefenderModifier) + passedPawnRank[4],
                            stats.PassedPawnScore[0]);
            Assert.AreEqual(0, stats.PassedPawnScore[1]);
        }
Пример #12
0
        public void DefendedKnightTest()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("r1bqkb1r/2p1pppp/8/pNpp4/2PPn3/5N2/PP2PPPP/R1B1KB1R w KQkq - 0 8");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual((int)(knightSquare[21] * knightPawnProtectorModifier * knightPawnProtectorModifier +
                                  knightSquare[33] * knightPawnProtectorModifier), stats.KnightSquareScore[0]);
            Assert.AreEqual((int)(knightSquare[36] * knightPawnProtectorModifier), stats.KnightSquareScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("1rbqkb1r/4p1pp/3p1p2/p1ppN3/2PP4/7P/PP1KPPP1/R4B1R b k - 0 12");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual((int)(knightSquare[36] * knightPawnProtectorModifier), stats.KnightSquareScore[0]);
            Assert.AreEqual(0, stats.KnightSquareScore[1]);
        }
Пример #13
0
        public void EvaluateKPKEndgame()
        {
            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("8/8/8/5kp1/8/6K1/8/8 w - - 0 4");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual(0, stats.EndgameKPK[1]);

            gameState.LoadPosition("8/8/8/6p1/7k/8/6K1/8 w - - 0 4");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual(0, stats.EndgameKPK[1]);

            gameState.LoadPosition("8/6p1/8/8/6k1/8/6K1/8 w - - 6 4");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreNotEqual(0, stats.EndgameKPK[1]);
        }
Пример #14
0
        public void RookOpenFileTest()
        {
            int rookOpenFileScore = (int)evConfigPO.GetField("rookOpenFile");

            EvaluationStats stats = new EvaluationStats();

            gameState.LoadPosition("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1");
            evaluator.Evaluate(0, GameStage.Opening, 0, out stats);
            Assert.AreEqual(0, stats.RookOpenFileScore[0]);
            Assert.AreEqual(0, stats.RookOpenFileScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("1nbqkbn1/3pppp1/1p4r1/p1P3r1/2P3pP/P3PN2/2RP1P2/1NBQKB1R w K - 5 14");
            evaluator.Evaluate(0, GameStage.Endgame, 0, out stats);
            Assert.AreEqual(0, stats.RookOpenFileScore[0]);
            Assert.AreEqual(0, stats.RookOpenFileScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("1nbqkbn1/2pppppr/1p1r4/p7/2P3pP/PP3N2/2RPPP2/1NBQKB1R b K - 1 8");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(0, stats.RookOpenFileScore[0]);
            Assert.AreEqual(rookOpenFileScore * 2, stats.RookOpenFileScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("2bqkbR1/p3pp2/3p3n/P2p3p/p3P2P/1r1P1N2/1PQB1P2/1N2K3 b - - 2 17");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(rookOpenFileScore, stats.RookOpenFileScore[0]);
            Assert.AreEqual(rookOpenFileScore, stats.RookOpenFileScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("2bqkb2/p4p2/3pp3/P2p1R1p/p3P2P/3P1N2/1Q1B1P2/1N2K3 b - - 0 20");
            evaluator.Evaluate(0, GameStage.Middlegame, 0, out stats);
            Assert.AreEqual(rookOpenFileScore, stats.RookOpenFileScore[0]);
            Assert.AreEqual(0, stats.RookOpenFileScore[1]);

            stats = new EvaluationStats();
            gameState.LoadPosition("2bqkb1r/p1r1p3/2n2n1R/1p1p2pR/P6P/2QP1N2/1PP1BPP1/1NB1K3 w k - 1 18");
            evaluator.Evaluate(0, GameStage.Opening, 0, out stats);
            Assert.AreEqual(rookOpenFileScore * 2, stats.RookOpenFileScore[0]);
            Assert.AreEqual(rookOpenFileScore * 2, stats.RookOpenFileScore[1]);
        }