public Neat() { Neural = new NeuralParameters(); Mutation = new MutationParameters(); Speciation = new SpeciationParameters(); Reproduction = new ReproductionParameters(); Structure = new StructureParameters(); }
public XorNetworkSearch( PopulationParameters populationParameters, NetworkParameters networkParameters, ReproductionParameters reproductionParameters) { _populationParameters = populationParameters; _neatPopulation = new Population(networkParameters, reproductionParameters); _genomes = Enumerable.Range(0, _populationParameters.PopulationSize) .AsParallel() .Select(_ => _neatPopulation.CreateInitialGenome()). ToList(_populationParameters.PopulationSize); _archiveSize = _populationParameters.PopulationSize / 30; _archive = new List <ParetoFrontPoint>(_archiveSize); _isRecurrent = networkParameters.IsRecurrent; }
public void NetworkReset() { var initialParameters = new NetworkParameters(10, 5, NetworkType.FeedForward) { InitialConnectionDensity = 1f }; var reproductionParameters = new ReproductionParameters() { WeightMutations = new WeightMutations { OverallRouletteWheelShare = 0 }, AddConnectionRouletteWheelShare = 2f, RemoveConnectionRouletteWheelShare = 1f, SplitConnectionRouletteWheelShare = 1f }; var neatPopulation = new Population(initialParameters, reproductionParameters); var genomes = Enumerable.Range(0, 100).Select(_ => neatPopulation.CreateInitialGenome()).ToArray(); for (var i = 0; i < 500; i++) { var sensorValues = Enumerable.Range(0, initialParameters.SensorCount) .Select(_ => (float)new Random().NextDouble()).ToArray(); foreach (var genome in genomes) { var network = genome.Network; for (var j = 0; j < initialParameters.SensorCount; j++) { network.Sensors[j] = sensorValues[j]; } network.Activate(); var effectors = network.Effectors.ToArray(); network.Activate(); Assert.Equal(effectors, network.Effectors); } genomes = genomes.Select(g => neatPopulation.Replicator.Reproduce(g)).ToArray(); } }
public void AsexualReproduction() { var initialParameters = new NetworkParameters(2, 3, NetworkType.FeedForward) { InitialConnectionDensity = 0.5f }; var reproductionParameters = new ReproductionParameters() { WeightMutations = new WeightMutations { OverallRouletteWheelShare = 50 }, AddConnectionRouletteWheelShare = 5f, RemoveConnectionRouletteWheelShare = 5f, SplitConnectionRouletteWheelShare = 5f }; var neatPopulation = new Population(initialParameters, reproductionParameters); var sensorValues = Enumerable.Range(0, initialParameters.SensorCount) .Select(_ => (float)new Random().NextDouble()).ToArray(); var genome = neatPopulation.CreateInitialGenome(); var network = genome.Network; for (var i = 0; i < initialParameters.SensorCount; i++) { network.Sensors[i] = sensorValues[i]; } network.Activate(); for (var i = 0; i < 50000; i++) { genome = neatPopulation.Replicator.Reproduce(genome); var newNetwork = genome.Network; for (var s = 0; s < initialParameters.SensorCount; s++) { newNetwork.Sensors[s] = sensorValues[s]; } newNetwork.Activate(); } }
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(); }