Esempio n. 1
0
        /// <summary>
        /// Simulates the environment
        /// </summary>
        /// <param name="environment">The environment</param>
        /// <param name="numEpisodes">The number of episodes</param>
        private static void Simulate(CatAndMouseEnvironment environment, int numEpisodes)
        {
            for (int episode = 0; episode < numEpisodes; episode++)
            {
                environment.Reset(episode);

                while (true)
                {
                    if (environment.Update(episode))
                    {
                        break;
                    }
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Runs the example
        /// </summary>
        public static void Run()
        {
            //var tiles = new CatAndMouseTile[10, 10];
            //tiles[2, 4] = CatAndMouseTile.Wall;
            //tiles[3, 4] = CatAndMouseTile.Wall;
            //tiles[4, 4] = CatAndMouseTile.Wall;
            //tiles[5, 4] = CatAndMouseTile.Wall;
            //tiles[5, 5] = CatAndMouseTile.Wall;
            //tiles[5, 6] = CatAndMouseTile.Wall;
            //tiles[5, 7] = CatAndMouseTile.Wall;
            //tiles[6, 7] = CatAndMouseTile.Wall;
            //tiles[7, 7] = CatAndMouseTile.Wall;
            //tiles[8, 7] = CatAndMouseTile.Wall;

            var tiles = new CatAndMouseTile[5, 5];

            tiles[2, 2] = CatAndMouseTile.Wall;
            tiles[3, 2] = CatAndMouseTile.Wall;
            tiles[1, 2] = CatAndMouseTile.Wall;
            tiles[2, 3] = CatAndMouseTile.Wall;
            tiles[2, 1] = CatAndMouseTile.Wall;

            var environment = new CatAndMouseEnvironment(new Configuration(500000), tiles);
            var agent       = new MouseAgent();

            environment.AddAgent(agent);
            environment.Initialize();

            DrawWorld(environment);

            //Train
            Simulate(environment, environment.Config.MaxEpisodes);

            //Now for real
            environment.ResetScores();
            agent.Learner.FollowPolicy = true;
            Simulate(environment, 10000);

            Console.WriteLine(string.Format("Cat: {0} - Mouse: {1}.", environment.CatScore, environment.MouseScore));
            Console.WriteLine("Win ratio: " + ((environment.MouseScore) / (double)(environment.MouseScore + environment.CatScore)) * 100 + "%");

            Console.ReadLine();
        }
Esempio n. 3
0
        /// <summary>
        /// Draws the world
        /// </summary>
        /// <param name="environment">The environment</param>
        private static void DrawWorld(CatAndMouseEnvironment environment)
        {
            for (int y = 0; y < environment.Length; y++)
            {
                for (int x = 0; x < environment.Width; x++)
                {
                    switch (environment.Tiles[x, y])
                    {
                    case CatAndMouseTile.Floor:
                        Console.Write(" ");
                        break;

                    case CatAndMouseTile.Wall:
                        Console.Write("W");
                        break;
                    }
                }

                Console.WriteLine();
            }
        }