static void comRunQ() { Console.WriteLine("Q is player..?"); byte temp3 = byte.Parse(Console.ReadLine()); Console.WriteLine("How many games?"); int temp1 = int.Parse(Console.ReadLine()); Console.WriteLine("Board size?"); int temp4 = int.Parse(Console.ReadLine()); Console.WriteLine("Which opponent?"); string command = Console.ReadLine(); StreamReader reader = new StreamReader("qdatafiles.txt"); List <String> files = new List <string>(); while (reader.Peek() != -1) { files.Add(reader.ReadLine()); } reader.Close(); foreach (String s in files) { Console.WriteLine("Using file " + s); QAgent qagentm = new QAgent(temp3); qagentm.Load(s); qagentm.TurnOffExploration(); qagentm.TurnOffLearning(); RunQ(temp3, qagentm, command, temp1, temp4); } }
static void TrainQ(int size, byte qnumber, QAgent agent, String opponent, String logname, String savename, int iterations, int saveinterval = 360) { Virus virus = new Virus(2, size); int wins = 0, wins2 = 0; byte oppnumber = qnumber == 1 ? (byte)2 : (byte)1; Agent opp = new BruteForceAgent(oppnumber); StreamWriter writer = new StreamWriter(logname); for (int i = 1; i <= iterations; i++) { switch (opponent) { case "brute": break; case "minimax4": opp = new MinimaxAgent(4, oppnumber); break; case "minimax3": opp = new MinimaxAgent(3, oppnumber); break; case "minimax2": opp = new MinimaxAgent(2, oppnumber); break; default: opp = new BruteForceAgent(oppnumber); break; } int winner = RunGame(virus, qnumber == 1 ? (Agent)agent : opp, qnumber == 2 ? (Agent)agent : opp); wins += winner == 1 ? 1 : 0; wins2 += winner == 1 ? 1 : 0; if (i % 100 == 0) { if (agent.RandomRate == 0) { writer.WriteLine(wins2); } wins2 = 0; } if (i % saveinterval == 0) { agent.Save(savename); Console.WriteLine("Iteration: " + i); Console.WriteLine("Wins: " + wins); wins = 0; if (agent.RandomRate > 0) { agent.TurnOffExploration(); agent.TurnOffLearning(); for (int j = 1; j <= 1000; j++) { virus = new Virus(2, size); winner = RunGame(virus, qnumber == 1 ? (Agent)agent : opp, qnumber == 2 ? (Agent)agent : opp); wins += winner == 1 ? 1 : 0; } writer.WriteLine(wins); wins = 0; agent.TurnOnExploration(); agent.TurnOnLearning(); } } virus = new Virus(2, size); } writer.Close(); }