public void geneticNeural()
        {
            FeedforwardNetwork network = createNetwork();
            // train the neural network
            Console.WriteLine("Determining initial scores");
            TicTacToeGenetic train = new TicTacToeGenetic(network, true,
                   NeuralTicTacToe.POPULATION_SIZE,
                   NeuralTicTacToe.MUTATION_PERCENT, NeuralTicTacToe.MATE_PERCENT,
                   this.player2.GetType());
            train.UseThreadPool = true;
            ThreadPool.SetMaxThreads(NeuralTicTacToe.THREAD_POOL_SIZE, NeuralTicTacToe.THREAD_POOL_SIZE);
            int epoch = 1;

            DateTime started = DateTime.Now;

            int minutes = 0;
            do
            {
                train.Iteration();

                TimeSpan span = (DateTime.Now - started);
                minutes = span.Minutes;

                Console.WriteLine("Epoch #" + epoch + " Error:" + train.getScore()
                        + ",minutes left="
                        + (NeuralTicTacToe.TRAIN_MINUTES - minutes));
                epoch++;

            } while (minutes < NeuralTicTacToe.TRAIN_MINUTES);

            SerializeObject.Save("tictactoe.net", train.Network);
        }
Esempio n. 2
0
        public void geneticNeural()
        {
            Stopwatch sw = new Stopwatch();
            FeedforwardNetwork network = createNetwork();
            // train the neural network
            Console.WriteLine("Determining initial scores");
            TicTacToeGenetic train = new TicTacToeGenetic(network, true,
                   NeuralTicTacToe.POPULATION_SIZE,
                   NeuralTicTacToe.MUTATION_PERCENT, NeuralTicTacToe.MATE_PERCENT,
                   this.player2.GetType());
            train.UseThreadPool = true;
            sw.Stop();

            string duration = String.Format("Training_time: {0}", sw.Elapsed.Minutes);
            Console.WriteLine(duration);

            ThreadPool.SetMaxThreads(NeuralTicTacToe.THREAD_POOL_SIZE, NeuralTicTacToe.THREAD_POOL_SIZE);
            int epoch = 1;

            DateTime started = DateTime.Now;

            int minutes = 0;
            double error = train.getScore();

            do
            {
                sw.Start();
                error = train.getScore();
                if (error > 0)
                    train.Iteration();
                sw.Stop();

                minutes = sw.Elapsed.Minutes;

                string observation = String.Format("Epoch: {0}, Error:{1}, minutes_left : {2}", epoch, error, (NeuralTicTacToe.TRAIN_MINUTES - minutes));
                Console.WriteLine(observation);
                epoch++;

            } while (minutes < NeuralTicTacToe.TRAIN_MINUTES && error > 0.00001d);

            SerializeObject.Save("tictactoe.net", train.Network);
        }