internal override PopulationParameters ApplyAction(PopulationParameters populationParameters) { populationParameters.NaturalImmunity *= 1.5; populationParameters.NaturalImmunity = Math.Max(0.90, populationParameters.NaturalImmunity); return(populationParameters); }
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(); }
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(); }
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(); }
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(); }
internal override PopulationParameters ApplyAction(PopulationParameters populationParameters) { populationParameters.ChanceOfTwoCitizensMeeting *= 0.6; return(populationParameters); }
internal override PopulationParameters ApplyAction(PopulationParameters populationParameters) { return(populationParameters); }
internal abstract PopulationParameters ApplyAction(PopulationParameters populationParameters);