private static float[][] SampleBestFitter(ParetoFrontPoint best, int sampleCount) { var sensorCount = best.Genome.Network.Sensors.Count; var effectorCount = best.Genome.Network.Effectors.Count; var sampleLen = sensorCount + effectorCount; var samples = new float[sampleCount][]; for (var i = 0; i < sampleCount; i++) { samples[i] = new float[sampleLen]; var network = best.Genome.Network; for (var s = 0; s < sensorCount; ++s) { network.Sensors[s] = RandomSource.Range(-1, 1); samples[i][s] = network.Sensors[s]; } network.Activate(); for (var e = 0; e < effectorCount; ++e) { samples[i][sensorCount + e] = network.Effectors[e]; } } return(samples); }
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(); }
public static float GetRandomUniform() => RandomSource.Range(-ConnectionGene.MaxAbsWeightValue, ConnectionGene.MaxAbsWeightValue);