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(); }
protected void Init() { GARandomManager.Random = new RandomClassic(TimeSinceEpochSeconds()); if (drawNetwork) { neuralNetDrawer = new NeuralNetDrawer(false); } agents = InitAgents().ToArray(); InitGeneticManager(); AssignBrains(); }
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(); }
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(); }
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(); }