public void DefineCompetitivePopulationReturnsCurrentSearchPoints() { var originalCompetitives = new List <Genome>(); for (int i = 0; i < 5; i++) { originalCompetitives.Add(this._genomeBuilder.CreateRandomGenome(age: i % 3)); } var searchPoints = new List <GenomeSearchPoint>(); for (int i = 0; i < 8; i++) { searchPoints.Add( GenomeSearchPoint.CreateFromGenome( this._genomeBuilder.CreateRandomGenome(age: 0), this._parameterTree, 0, this._genomeBuilder)); } var informationFlowStrategy = new GlobalDifferentialEvolutionInformationFlow( this._deConfiguration, this._parameterTree, this._genomeBuilder); var competitiveIndividuals = informationFlowStrategy.DefineCompetitivePopulation(originalCompetitives, null, searchPoints); Assert.Equal( searchPoints.Select(point => point.Genome.ToString()).OrderBy(x => x).ToArray(), competitiveIndividuals.Select(genome => genome.ToString()).OrderBy(x => x).ToArray()); }
public void DetermineInitialPointsDoesNotThrowForJadePopulationEqualToThree() { // Generate a population with 3 competitive genomes. var population = new Population(this._completeConfiguration); for (int i = 0; i < 3; i++) { population.AddGenome(this._genomeBuilder.CreateRandomGenome(age: i % 3), isCompetitive: true); } var incumbent = this._genomeBuilder.CreateRandomGenome(age: 2); // Try to call the method. --> Should work. var informationFlow = new GlobalDifferentialEvolutionInformationFlow( this._deConfiguration, this._parameterTree, this._genomeBuilder); informationFlow.DetermineInitialPoints(population, incumbent); }
public void DetermineInitialPointsThrowsForJadePopulationSmallerThree() { // Generate a population with only 2 competitive genomes. var population = new Population(this._completeConfiguration); for (int i = 0; i < 2; i++) { population.AddGenome(this._genomeBuilder.CreateRandomGenome(age: i % 3), isCompetitive: true); } var incumbent = this._genomeBuilder.CreateRandomGenome(age: 2); // Try to call the method. var informationFlow = new GlobalDifferentialEvolutionInformationFlow( this._deConfiguration, this._parameterTree, this._genomeBuilder); Assert.Throws <ArgumentException>(() => informationFlow.DetermineInitialPoints(population, incumbent)); }
public void DetermineInitialPointsTransformsAllCompetitives() { var population = new Population(this._completeConfiguration); for (int i = 0; i < 5; i++) { population.AddGenome(this._genomeBuilder.CreateRandomGenome(age: i % 3), isCompetitive: true); } for (int i = 0; i < 2; i++) { population.AddGenome(this._genomeBuilder.CreateRandomGenome(age: i % 3), isCompetitive: false); } var informationFlowStrategy = new GlobalDifferentialEvolutionInformationFlow( this._deConfiguration, this._parameterTree, this._genomeBuilder); var points = informationFlowStrategy.DetermineInitialPoints(population, null); Assert.Equal( population.GetCompetitiveIndividuals().Select(genome => genome.ToString()).OrderBy(x => x).ToArray(), points.Select(point => point.Genome.ToString()).OrderBy(x => x).ToArray()); }