Beispiel #1
0
        //private static Random random;
        public static void Main(string[] args)
        {
            Util.Initialize(args[0]);
            var idgen = new IdGenerator();
            IExperiment experiment = new LimitExperiment();

            XmlSerializer ser = new XmlSerializer(typeof(Settings));
            //Settings settings = new Settings()
            //{
            //    SmallBlind = 1,
            //    BigBlind = 2,
            //    GamesPerIndividual = 100,
            //    LogFile = "mutlithreaded_log.txt",
            //    MaxHandsPerTourney = 200,
            //    PlayersPerGame = 6,
            //    StackSize = 124,
            //    Threads = 4
            //};
            //ser.Serialize(new StreamWriter("settings.xml"), settings);
            Settings settings = (Settings)ser.Deserialize(new StreamReader("settings.xml"));
            var eval = new PokerPopulationEvaluator<SimpleLimitNeuralNetPlayer2, RingGamePlayerEvaluator>(settings);

            var ea = new EvolutionAlgorithm(
                new Population(idgen,
                               GenomeFactory.CreateGenomeList(experiment.DefaultNeatParameters,
                                              idgen, experiment.InputNeuronCount,
                                              experiment.OutputNeuronCount,
                                              experiment.DefaultNeatParameters.pInitialPopulationInterconnections,
                                              experiment.DefaultNeatParameters.populationSize)),
                                              eval,
                experiment.DefaultNeatParameters);

            Console.WriteLine("Starting real evolution");
            for (int i = 0; true; i++)
            {
                Console.WriteLine("Generation {0}", i + 1);
                ea.PerformOneGeneration();
                Console.WriteLine("Champion Fitness={0}", ea.BestGenome.Fitness);
                var doc = new XmlDocument();
                XmlGenomeWriterStatic.Write(doc, (NeatGenome)ea.BestGenome);
                FileInfo oFileInfo = new FileInfo("genomes_simple\\" + "bestGenome" + i.ToString() + ".xml");
                doc.Save(oFileInfo.FullName);
            }
        }
Beispiel #2
0
        public NoveltyThread(JSPopulationEvaluator jsPop, AssessGenotypeFunction assess, int popSize)
        {
            //save our objects for executing later!
            popEval = jsPop;
            populationSize = popSize;

            autoEvent = new AutoResetEvent(false);

            waitNextTime = true;

            novelThread = new Thread(delegate()
                {
                    autoEvent.WaitOne();

                    //we'll start by testing with 0 parents, and popsize of 15 yay!
                    noveltyRun = EvolutionManager.SharedEvolutionManager.initializeEvolutionAlgorithm(popEval, populationSize, assess);

                    //let our algoirhtm know we want to do novelty gosh darnit
                    if(noveltyRun.multiobjective != null)
                         noveltyRun.multiobjective.doNovelty = true;

                    //we make sure we don't wait in this loop, since we just got started!
                    waitNextTime = false;

                    while (true)
                    {
                        //this will cause us to pause!
                        if (waitNextTime)
                        {
                            waitNextTime = false;
                            autoEvent.WaitOne();
                        }
                        // Start the stopwatch we'll use to measure eval performance
                        Stopwatch sw = Stopwatch.StartNew();

                        //run the generation
                        noveltyRun.PerformOneGeneration();

                        // Stop the stopwatch
                        sw.Stop();

                        // Report the results
                        Console.WriteLine("Time used per gen (float): {0} ms", sw.Elapsed.TotalMilliseconds);
                        Console.WriteLine("Time used per gen (rounded): {0} ms", sw.ElapsedMilliseconds);

                    }
                });

            novelThread.Start();
        }