Beispiel #1
0
 public Neat()
 {
     Neural       = new NeuralParameters();
     Mutation     = new MutationParameters();
     Speciation   = new SpeciationParameters();
     Reproduction = new ReproductionParameters();
     Structure    = new StructureParameters();
 }
Beispiel #2
0
        public XorModel(PopulationParameters populationParameters, MutationParameters mutationParameters, double[][] truthTable)
        {
            _populationParameters = populationParameters;
            _mutationParameters   = mutationParameters;

            _truthTable = truthTable;

            _population = Enumerable.Range(0, _populationParameters.PopulationSize)
                          .AsParallel()
                          .Select(i =>
            {
                var genome = new NeatGenome(NetworkParameters, _mutationParameters);
                genome.CreateInitialGenome();

                return(new XorIndividual(genome));
            })
                          .ToList();
        }
Beispiel #3
0
        static void XorTest()
        {
            Console.WriteLine("XOR challenge accepted!");
            Console.WriteLine();

            NetworkParameters    networkParameters    = new NetworkParameters(2, 1);
            PopulationParameters populationParameters = new PopulationParameters(20, 10000, 5, 10);
            MutationParameters   mutationParameters   = new MutationParameters();

            double[][] XorTruthTable =
            {
                new double[] { 0.0f, 0.0f, 0.0f },
                new double[] { 0.0f, 1.0f, 1.0f },
                new double[] { 1.0f, 0.0f, 1.0f },
                new double[] { 1.0f, 1.0f, 0.0f }
            };

            XorModel xorModel  = new XorModel(populationParameters, mutationParameters, XorTruthTable);
            var      iteration = xorModel.Search(100, 0.00001f);

            Console.WriteLine();
            Console.WriteLine($"BEST. Iteration = {iteration} Error = {xorModel.BestIndividual.Error}");
            var net = xorModel.BestIndividual.Genome.Network;

            foreach (var xorData in XorTruthTable)
            {
                net.Inputs[0] = xorData[0];
                net.Inputs[1] = xorData[1];

                net.Activate();

                Console.WriteLine($"[{xorData[0]} {xorData[1]}] = {net.Outputs[0]}");
            }
            Console.WriteLine();

            xorModel.BestIndividual.Genome.PrintGenomeStructure();

            Console.WriteLine("Dump to File");
            File.WriteAllText("xor_net_genome.json", xorModel.BestIndividual.Genome.DumpToJson());

            Console.WriteLine();
        }
Beispiel #4
0
        static void MnistTest()
        {
            Console.WriteLine("Mnist challenge accepted!");
            Console.WriteLine();

            var trainSet = new TrainingSet();

            PopulationParameters populationParameters = new PopulationParameters(5, 100, 1, 2);
            MutationParameters   mutationParameters   = new MutationParameters();
            NetworkParameters    networkParameters    = new NetworkParameters(MnistDataset.ImageSize, MnistDataset.ClassCount);
            MnistModel           mnistModel           = new MnistModel(populationParameters, mutationParameters, networkParameters, trainSet);

            mnistModel.Search(2, 0.1, 100);

            Console.WriteLine();
            Console.WriteLine("Best individual");
            Console.WriteLine(mnistModel.BestIndividual);

            Console.WriteLine();
        }
Beispiel #5
0
 /// <summary>
 /// Mutates a feed forward network. Does not create a copy!
 /// </summary>
 public static void Mutate(this INetwork network, MutationParameters mutationParams)
 {
     //no structural mutations allowed for fully connected feed forward neural networks
     MutateBias(network, mutationParams.BiasChance, mutationParams.BiasDeviation);
     MutateWeights(network, mutationParams.WeightChance, mutationParams.WeightDeviation);
 }