void TestCompilation() { var bs = new BrainStructure() { InputCount = 100, MemoryBitCount = 16, LevelSizes = new int[] { 50, 24 } }; Genome genome = new Genome(bs); genome.SetRandomValues(); var brain = new DigitalBrain(); brain.Load(genome); var output = new BitStorage(bs.OutputCount); var input = new BitStorage(bs.InputCount); input.SetRandomValues(); Console.WriteLine(input.GetView()); int count = 10000; var start = DateTime.Now; Parallel.For(0, count, i => { brain.Process(input, output); }); Console.WriteLine(output.GetView() + " " + count / (DateTime.Now - start).TotalSeconds); brain.Compile(); start = DateTime.Now; Parallel.For(0, count, i => { brain.Process(input, output); }); Console.WriteLine(output.GetView() + " " + count / (DateTime.Now - start).TotalSeconds); }
void Start() { int memorySize = 2; BrainStructure brainStructure = new BrainStructure() { InputCount = 16, LevelSizes = new int[] { 3 + memorySize }, MemoryBitCount = memorySize }; Genome genome = new Genome(brainStructure); genome.SetRandomValues(); Console.WriteLine("Genome: " + genome.GetView()); DigitalBrain brain = new DigitalBrain(); brain.Load(genome); BitStorage input = new BitStorage(brainStructure.InputCount); BitStorage output = new BitStorage(brainStructure.OutputCount); for (int i = 0; i < 5; i++) { input.SetRandomValues(); Console.WriteLine("\r\nInput: " + input.GetView()); for (int j = 0; j < 1; j++) { //int bitToChange = Common.Random.Next(genome.Length); //genome[bitToChange] ^= true; //Console.WriteLine("Genome: " + genome.GetView()); //brain.Load(genome); for (int k = 0; k < 3; k++) { brain.Process(input, output); Console.WriteLine("Output: " + output.GetView() + " Memory: " + brain.Memory.GetView()); } } } }