public void InvalidGenomeIsHandledCorrectly() { var positiveGenomeBuilder = new ConfigurableGenomeBuilder( this._parameterTree, g => (int)g.GetGeneValue("discrete").GetValue() != 0, mutationRate: 1); var genome = this._genomeBuilder.CreateRandomGenome(0); genome.SetGene("discrete", new Allele <int>(0)); var genomeValues = new[] { 1.4, 0.3, 0, 1.5 }; var standardizedValues = BoundedSearchPoint.StandardizeValues(genomeValues, this._lowerBounds, this._upperBounds); var searchPoint = new PartialGenomeSearchPoint( underlyingGenome: new ImmutableGenome(genome), values: standardizedValues, genomeSearchPointConverter: this._genomeSearchPointConverter, genomeBuilder: positiveGenomeBuilder, lowerBounds: this._lowerBounds, upperBounds: this._upperBounds); var associatedGenome = searchPoint.Genome.CreateMutableGenome(); Assert.True( 0 != (int)associatedGenome.GetGeneValue("discrete").GetValue(), "Genome should have been repaired."); Assert.True(searchPoint.IsRepaired, "Repair flag should have been set."); }
public void InvalidGenomeIsHandledCorrectly() { var positiveGenomeBuilder = new ConfigurableGenomeBuilder( this._parameterTree, g => (int)g.GetGeneValue("discrete").GetValue() != -4, mutationRate: 1); var genomeValues = new[] { 0, 1.4, -4, 0 }; var standardizedValues = BoundedSearchPoint.StandardizeValues(genomeValues, this._lowerBounds, this._upperBounds); var searchPoint = new ContinuizedGenomeSearchPoint( values: standardizedValues, parameterTree: this._parameterTree, genomeBuilder: positiveGenomeBuilder, lowerBounds: this._lowerBounds, upperBounds: this._upperBounds); var genome = searchPoint.Genome.CreateMutableGenome(); Assert.True( -4 != (int)genome.GetGeneValue("discrete").GetValue(), "Genome should have been repaired."); Assert.Equal(standardizedValues, searchPoint.Values); Assert.True(searchPoint.IsRepaired, "Repair flag should have been set."); }