Example #1
0
        private List <double[]> Evaluate(List <double[]> pop)
        {
            foreach (var item in pop)
            {
                item[item.Length - 1] = 0;
            }

            foreach (var player1 in pop)
            {
                AbstractAgent agent1 = new GreedyAgent();
                AbstractAgent agent2 = new KISSBot();

                Random rnd = new Random(Guid.NewGuid().GetHashCode());



                var gameHandler1 = new POGameHandler(gameConfig1, agent1, agent2, repeatDraws: false);
                var gameHandler2 = new POGameHandler(gameConfig2, agent1, agent2, repeatDraws: false);
                var gameHandler3 = new POGameHandler(gameConfig3, agent1, agent2, repeatDraws: false);
                //gameHandler.PlayGame(debug: true);
                gameHandler1.PlayGames(nr_of_games: _numGames, addResultToGameStats: true, debug: false);
                gameHandler2.PlayGames(nr_of_games: _numGames, addResultToGameStats: true, debug: false);
                gameHandler3.PlayGames(nr_of_games: _numGames, addResultToGameStats: true, debug: false);

                player1[player1.Length - 1] += gameHandler1.getGameStats().PlayerB_Wins;
                player1[player1.Length - 1] += gameHandler2.getGameStats().PlayerB_Wins;
                player1[player1.Length - 1] += gameHandler3.getGameStats().PlayerB_Wins;
            }

            return(pop.OrderByDescending(x => x[x.Length - 1]).ToList());
        }
Example #2
0
        private static void Main()
        {
            Console.WriteLine("Setup gameConfig");
            double[] values =
                new double[] { 41.9584023938321, 20.9314780959075, 42.5709950325876, 29.2160915509873, 3.02713018633757,
                               39.1902154319408, 16.5569344163206, 41.7280641359873, 25.5307942824582, 44.74108665634, 26.4395090874469,
                               34.6203779911717 };

            //var gameConfig = new GameConfig()
            //{
            //	StartPlayer = 1,
            //	Player1HeroClass = CardClass.SHAMAN,
            //	Player2HeroClass = CardClass.SHAMAN,
            //	Player1Deck = Decks.MidrangeJadeShaman,
            //	Player2Deck = Decks.MidrangeJadeShaman,
            //	FillDecks = true,
            //	Shuffle = true,
            //	Logging = false,
            //	History = true
            //};

            //EA ea = new EA(100, 0.1f, 6, 10, 4, 12);
            //var result = ea.StartEA();

            //Console.WriteLine("Values");
            //foreach (var item in result)
            //{
            //	Console.WriteLine(String.Join(',', item));
            //}

            Console.WriteLine("Setup POGameHandler");
            AbstractAgent player1 = new GreedyAgent();
            AbstractAgent player2 = new KISSBot();

            Random rnd = new Random(Guid.NewGuid().GetHashCode());

            GameConfig gameConfig1 = new GameConfig()
            {
                StartPlayer      = 1,
                Player1HeroClass = CardClass.SHAMAN,
                Player2HeroClass = CardClass.SHAMAN,
                Player1Deck      = Decks.MidrangeJadeShaman,
                Player2Deck      = Decks.MidrangeJadeShaman,
                FillDecks        = true,
                Shuffle          = true,
                Logging          = false,
                History          = true
            };
            GameConfig gameConfig2 = new GameConfig()
            {
                StartPlayer      = 1,
                Player1HeroClass = CardClass.MAGE,
                Player2HeroClass = CardClass.MAGE,
                Player1Deck      = Decks.RenoKazakusMage,
                Player2Deck      = Decks.RenoKazakusMage,
                FillDecks        = true,
                Shuffle          = true,
                Logging          = false,
                History          = true
            };
            GameConfig gameConfig3 = new GameConfig()
            {
                StartPlayer      = 1,
                Player1HeroClass = CardClass.WARRIOR,
                Player2HeroClass = CardClass.WARRIOR,
                Player1Deck      = Decks.AggroPirateWarrior,
                Player2Deck      = Decks.AggroPirateWarrior,
                FillDecks        = true,
                Shuffle          = true,
                Logging          = false,
                History          = true
            };

            Console.WriteLine("Simulate Games");
            var gameHandler1  = new POGameHandler(gameConfig1, player2, player1, repeatDraws: false);
            var gameHandler11 = new POGameHandler(gameConfig1, player1, player2, repeatDraws: false);
            var gameHandler2  = new POGameHandler(gameConfig2, player2, player1, repeatDraws: false);
            var gameHandler21 = new POGameHandler(gameConfig2, player1, player2, repeatDraws: false);
            var gameHandler3  = new POGameHandler(gameConfig3, player2, player1, repeatDraws: false);
            var gameHandler31 = new POGameHandler(gameConfig3, player1, player2, repeatDraws: false);

            //gameHandler11.PlayGame(debug: true);
            //gameHandler11.getGameStats().printResults();
            gameHandler1.PlayGames(nr_of_games: 100, addResultToGameStats: true, debug: false);
            gameHandler1.getGameStats().printResults();

            gameHandler11.PlayGames(nr_of_games: 100, addResultToGameStats: true, debug: false);
            gameHandler11.getGameStats().printResults();

            gameHandler2.PlayGames(nr_of_games: 100, addResultToGameStats: true, debug: false);
            gameHandler2.getGameStats().printResults();

            gameHandler21.PlayGames(nr_of_games: 100, addResultToGameStats: true, debug: false);
            gameHandler21.getGameStats().printResults();

            gameHandler3.PlayGames(nr_of_games: 100, addResultToGameStats: true, debug: false);
            gameHandler3.getGameStats().printResults();

            gameHandler31.PlayGames(nr_of_games: 100, addResultToGameStats: true, debug: false);
            gameHandler31.getGameStats().printResults();

            Console.ReadLine();
        }