private void PlayMCTSGames(int numGame, Playfield playfield, float c1, float c2, int d1, int d2) { int firstWon = 0; int secondWon = 0; int P1Won = 0; int P2Won = 0; string p1Setting = "MCTS[c1=" + c1 + ", d1=" + d1 + "]"; string p2Setting = "MCTS[c2=" + c2 + ", d2=" + d2 + "]"; Helpfunctions.Instance.logg("P1: " + p1Setting); Helpfunctions.Instance.logg("P2: " + p2Setting); for (int i = 0; i < numGame;) { if (!isInit) { Init(false, i); } MCTSPlayer pa1, pa2; if (i % 2 == 0) { pa1 = new MCTSPlayer(true, GameManager.Instance.mPlayfield, false, 0.5); pa2 = new MCTSPlayer(false, GameManager.Instance.mPlayfield, false, 0.5); pa1.constC = c1; pa1.rolloutDepth = d1; pa2.constC = c2; pa2.rolloutDepth = d2; GameManager.Instance.setPlayer(0, pa1); GameManager.Instance.setPlayer(1, pa2); } else { pa1 = new MCTSPlayer(false, GameManager.Instance.mPlayfield, false, 0.5); pa2 = new MCTSPlayer(true, GameManager.Instance.mPlayfield, false, 0.5); pa1.constC = c1; pa1.rolloutDepth = d1; pa2.constC = c2; pa2.rolloutDepth = d2; GameManager.Instance.setPlayer(1, pa1); GameManager.Instance.setPlayer(0, pa2); } try { int matchResult = PlayMCTSGame(); if (matchResult == 0) { firstWon++; if (i % 2 == 0) { P1Won++; } else { P2Won++; } Helpfunctions.Instance.logg("i = " + i + "result = " + matchResult); } else { secondWon++; if (i % 2 == 0) { P2Won++; } else { P1Won++; } Helpfunctions.Instance.logg("i = " + i + "result = " + matchResult); } Helpfunctions.Instance.logg(p1Setting + " WON " + P1Won + " GAMES"); Helpfunctions.Instance.logg(p2Setting + " WON " + P2Won + " GAMES"); i++; } catch (NullReferenceException ex) { Console.WriteLine(ex.Message); continue; } finally { isInit = false; GC.Collect(); GameManager.resetSeed(); } } Helpfunctions.Instance.logg(p1Setting + " WON " + P1Won + " GAMES"); Helpfunctions.Instance.logg(p2Setting + " WON " + P2Won + " GAMES"); }
private void PlayMultipleGames(int numGame, Playfield playfield) { int moveNum = 0; int firstWon = 0; int secondWon = 0; int P1Won = 0; int P2Won = 0; bool printLog = true; for (int i = 0; i < numGame; i++) { if (!isInit) { Init(false, i); } //Set players MCTSPlayer pa1; Silverfish pa2; if (i % 2 == 0) { pa1 = new MCTSPlayer(true, GameManager.Instance.mPlayfield, false, 0.5); pa2 = new Silverfish(); pa1.constC = 0.7f; pa1.rolloutDepth = 3; GameManager.Instance.setPlayer(0, pa1); GameManager.Instance.setPlayer(1, pa2); } else { pa1 = new MCTSPlayer(false, GameManager.Instance.mPlayfield, false, 0.5); pa2 = new Silverfish(); pa1.constC = 0.7f; pa1.rolloutDepth = 3; GameManager.Instance.setPlayer(1, pa1); GameManager.Instance.setPlayer(0, pa2); } moveNum++; //Helpfunctions.Instance.logg("movenum = " + moveNum); GameManager.Instance.turnStartEntity = GameManager.Instance.mPlayfield.nextEntity; int result = GameManager.Instance.playMove(printLog); while (result == -1) { moveNum++; //Helpfunctions.Instance.logg("movenum = " + moveNum); result = GameManager.Instance.playMove(printLog); } if (result == 0) { firstWon++; if (i % 2 == 0) { P1Won++; } else { P2Won++; } Helpfunctions.Instance.logg("i = " + i + "result = " + result); } else { secondWon++; if (i % 2 == 0) { P2Won++; } else { P1Won++; } Helpfunctions.Instance.logg("i = " + i + "result = " + result); } isInit = false; Helpfunctions.Instance.logg("SF 1 WON " + P1Won + " GAMES"); Helpfunctions.Instance.logg("MCTS 2 WON " + P2Won + " GAMES"); GC.Collect(); GameManager.resetSeed(); } Helpfunctions.Instance.logg("SF 1 WON " + P1Won + " GAMES"); Helpfunctions.Instance.logg("MCTS 2 WON " + P2Won + " GAMES"); }