コード例 #1
0
        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);
        }
コード例 #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);
        }