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()); }
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(); }