コード例 #1
0
        static void Main(string[] args)
        {
            GARandomManager.Random = new RandomClassic((int)DateTime.Now.Ticks);

            NeuralGenomeToJSONExtension.distBetweenNodes *= 5;
            NeuralGenomeToJSONExtension.randomPosTries    = 10;
            NeuralGenomeToJSONExtension.xPadding          = 0.03f;
            NeuralGenomeToJSONExtension.yPadding          = 0.03f;

            NeuralNetDrawer.pyGraphDrawerPath = pyNeuralNetGraphDrawerPath;
            PyDrawGraph.pyGraphDrawerFilePath = pyFitnessGraphPath;

            var neuralNetDrawer = new NeuralNetDrawer(false);

            //var fitnessCollector = new GraphDataCollector();

            NeuralGenomeToJSONExtension.distBetweenNodes *= 5;
            NeuralGenomeToJSONExtension.randomPosTries    = 10;

            var program = new Program();

            for (var i = 0; i < maxIterations; i++)
            {
                program.Evaluate();
                var best = program.BestGenome() as NeuralGenome;
                //fitnessCollector.Tick(i, best.Fitness);
                Console.WriteLine(String.Format(
                                      "{0}) Best:{1:0.00}",
                                      i,
                                      best.Fitness));

                if (targetReached)
                {
                    foreach (var pair in program.samplePairs)
                    {
                        Console.WriteLine("{0} ^ {1} = {2} | {3:0.00}",
                                          pair[0], pair[1],
                                          pair[0] ^ pair[1],
                                          program.FeedRNNPair(best, pair));
                    }
                    break;
                }

                program.Evolve();
            }

            neuralNetDrawer.QueueNeuralNetJson((program.BestGenome() as NeuralGenome).ToJson(
                                                   neuronRadius: 0.02f,
                                                   maxWeight: 7,
                                                   edgeWidth: 1f));
            //fitnessCollector.Draw();
        }
コード例 #2
0
    protected void Init()
    {
        GARandomManager.Random = new RandomClassic(TimeSinceEpochSeconds());

        if (drawNetwork)
        {
            neuralNetDrawer = new NeuralNetDrawer(false);
        }

        agents = InitAgents().ToArray();
        InitGeneticManager();
        AssignBrains();
    }
コード例 #3
0
        static void Main(string[] args)
        {
            GARandomManager.Random = new RandomClassic((int)DateTime.Now.Ticks);

            NeuralGenomeToJSONExtension.distBetweenNodes *= 5;
            NeuralGenomeToJSONExtension.randomPosTries    = 10;
            NeuralGenomeToJSONExtension.xPadding          = 0.03f;
            NeuralGenomeToJSONExtension.yPadding          = 0.03f;

            NeuralNetDrawer.pyGraphDrawerPath = pyNeuralNetGraphDrawerPath;
            PyDrawGraph.pyGraphDrawerFilePath = pyFitnessGraphPath;

            var neuralNetDrawer = new NeuralNetDrawer(false);

            //var fitnessCollector = new GraphDataCollector();

            NeuralGenomeToJSONExtension.distBetweenNodes *= 5;
            NeuralGenomeToJSONExtension.randomPosTries    = 10;

            var program = new Program();

            for (var i = 0; i < maxIterations; i++)
            {
                if (targetReached)
                {
                    break;
                }

                program.Evaluate();
                var fintessSum = program.geneticManager
                                 .GenerationManager
                                 .CurrentGeneration
                                 .Genomes.Sum(x => x.Fitness);
                var best = program.BestGenome() as NeuralGenome;
                //fitnessCollector.Tick(i, best.Fitness);
                Console.WriteLine(String.Format(
                                      "{0}) Best:{1:0.00} Sum:{2:0.00}",
                                      i,
                                      best.Fitness,
                                      fintessSum));

                program.Evolve();
            }

            neuralNetDrawer.QueueNeuralNetJson((program.BestGenome() as NeuralGenome).ToJson(
                                                   neuronRadius: 0.02f,
                                                   maxWeight: 7,
                                                   edgeWidth: 1f));
            //fitnessCollector.Draw();
        }
コード例 #4
0
    private void Start()
    {
        GARandomManager.Random = new RandomClassic(
            (int)DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds);

        NeuralNetDrawer.pyGraphDrawerPath = pyNeuralNetGraphDrawerPath;
        NeuralNetDrawer.pyAssemblyCmd     = "/usr/local/bin/python3";
        PyDrawGraph.pyGraphDrawerFilePath = pyFitnessGraphPath;
        neuralNetDrawer = new NeuralNetDrawer(false);

        InitAgents();
        InitGenetics();
        AssignBrains();
        DrawBestGenome();
    }
コード例 #5
0
        static void Main(string[] args)
        {
            NeuralNetDrawer.pyGraphDrawerPath = pyNeuralNetGraphDrawerPath;
            PyDrawGraph.pyGraphDrawerFilePath = pyFitnessGraphPath;

            GARandomManager.Random = new RandomClassic((int)DateTime.Now.Ticks);
            var neuralNetDrawer  = new NeuralNetDrawer(false);
            var fitnessCollector = new GraphDataCollector();

            NeuralGenomeToJSONExtension.distBetweenNodes *= 5;
            NeuralGenomeToJSONExtension.randomPosTries    = 10;
            NeuralGenomeToJSONExtension.xPadding          = 0.03f;
            NeuralGenomeToJSONExtension.yPadding          = 0.03f;

            var program = new Program();
            var watch   = new Stopwatch();

            watch.Start();

            for (var i = 0; i < maxIterations; i++)
            {
                //program.EvaluateAsync(25).Wait();
                program.Evaluate();
                //program.EvaluateAsyncEach().Wait();

                if (i % 10 == 0)
                {
                    watch.Stop();
                    Console.WriteLine(watch.Elapsed);
                    watch.Restart();


                    var fintessSum = program.geneticManager
                                     .GenerationManager
                                     .CurrentGeneration
                                     .Genomes.Sum(x => x.Fitness);
                    var best = program.geneticManager
                               .GenerationManager
                               .CurrentGeneration
                               .BestGenome as NeuralGenome;

                    //fitnessCollector.Tick(i, best.Fitness);
                    Console.WriteLine(String.Format(
                                          "{0}) Best:{1:0.00} Sum:{2:0.00}",
                                          i,
                                          best.Fitness,
                                          fintessSum));

                    //neuralNetDrawer.QueueNeuralNetJson(program.GetBestJson());

                    if (best.Fitness > -0.01f)
                    {
                        generationsWithTargetReachedCount++;
                        if (generationsWithTargetReachedCount >= generationsWithTargetReached)
                        {
                            targetReached = true;

                            for (var j = 0; j < Math.Pow(2, inputs) - 1; j++)
                            {
                                best.FeedNeuralNetwork(GetBits(j).Select(x => (float)x).ToArray());
                                var expectedOutput = GetBits(j + 1);

                                var output = BitsToInt(best.Outputs.Select(x => x.Value).ToArray());
                                Console.WriteLine(String.Format("{0:0.00} | {1}", output, j));
                            }
                            break;
                        }
                    }
                    else
                    {
                        generationsWithTargetReachedCount = 0;
                    }

                    //neuralNetDrawer.QueueNeuralNetJson(program.GetBestJson());
                }

                program.Evolve();
            }

            neuralNetDrawer.QueueNeuralNetJson(program.GetBestJson());
            //fitnessCollector.Draw();
        }