Beispiel #1
0
        internal override PopulationParameters ApplyAction(PopulationParameters populationParameters)
        {
            populationParameters.NaturalImmunity *= 1.5;
            populationParameters.NaturalImmunity  = Math.Max(0.90, populationParameters.NaturalImmunity);

            return(populationParameters);
        }
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
            public SplitConnectionWeightsSearch(
                PopulationParameters populationParameters,
                NetworkParameters networkParameters,
                ReproductionParameters reproductionParameters)
            {
                _populationParameters = populationParameters;
                _neatPopulation       = new Population(networkParameters, reproductionParameters, false);
                _genomes = Range(0, _populationParameters.PopulationSize)
                           .Select(_ => _neatPopulation.CreateInitialGenome());

                _archiveSize = _populationParameters.PopulationSize / 2;
                _archive     = new List <ParetoFrontPoint>(_archiveSize);

                WeightSamples = Range(0, 300)
                                .Select(_ => RandomSource.Range(0, MaxAbsWeightValue))
                                .ToArray();

                InputSamples = Range(0, 60)
                               .Select(_ => RandomSource.Range(0, 1))
                               .ToArray();
            }
Beispiel #6
0
        internal override PopulationParameters ApplyAction(PopulationParameters populationParameters)
        {
            populationParameters.ChanceOfTwoCitizensMeeting *= 0.6;

            return(populationParameters);
        }
Beispiel #7
0
 internal override PopulationParameters ApplyAction(PopulationParameters populationParameters)
 {
     return(populationParameters);
 }
 internal abstract PopulationParameters ApplyAction(PopulationParameters populationParameters);