Beispiel #1
0
        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");
        }
Beispiel #2
0
        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");
        }