public void IsTechnicallyCompatibleReturnsTrueForSameMinimumDomainSize() { var defaultConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(null); var differentialEvolutionConfiguration = this._defaultDifferentialEvolutionConfigurationBuilder.BuildWithFallback(null); var incompatibleDifferentialEvolutionConfigurationBuilder = this._defaultDifferentialEvolutionConfigurationBuilder .SetInitialMeanMutationFactor(differentialEvolutionConfiguration.InitialMeanMutationFactor + 0.01) .SetInitialMeanCrossoverRate(differentialEvolutionConfiguration.InitialMeanCrossoverRate + 0.02) .SetBestPercentage(differentialEvolutionConfiguration.BestPercentage + 0.03) .SetLearningRate(differentialEvolutionConfiguration.LearningRate + 0.04); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(incompatibleDifferentialEvolutionConfigurationBuilder) .SetMaximumNumberGenerations(defaultConfig.MaximumNumberGenerations - 1) .SetReplacementRate(defaultConfig.ReplacementRate + 0.1) .SetFixInstances(!defaultConfig.FixInstances) .SetFocusOnIncumbent(!defaultConfig.FocusOnIncumbent) .BuildWithFallback(defaultConfig); // Check those two configuration are compatible. Assert.True( defaultConfig.IsTechnicallyCompatible(otherConfig), "Configurations should be technically compatible."); Assert.Equal( defaultConfig.IsTechnicallyCompatible(otherConfig), otherConfig.IsTechnicallyCompatible(defaultConfig)); }
public void IsCompatibleReturnsFalseForDifferentMaximumNumberGenerations() { var defaultConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(null); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .SetMaximumNumberGenerations(defaultConfig.MaximumNumberGenerations - 1) .BuildWithFallback(defaultConfig); ConfigurationBaseTest.CheckIncompatibility(defaultConfig, otherConfig); }
public void IsTechnicallyCompatibleReturnsFalseForDifferentMinimumDomainSize() { var defaultConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(null); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .SetMinimumDomainSize(defaultConfig.MinimumDomainSize + 1) .BuildWithFallback(defaultConfig); ConfigurationBaseTest.CheckTechnicalIncompatibility(defaultConfig, otherConfig); }
public void IsCompatibleReturnsFalseForDifferentFixInstancesFlags() { var defaultConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(null); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .SetFixInstances(!defaultConfig.FixInstances) .BuildWithFallback(defaultConfig); ConfigurationBaseTest.CheckIncompatibility(defaultConfig, otherConfig); }
public void IsCompatibleReturnsFalseForIncumbentFocusWithDifferentReplacementRate() { var localConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .SetFocusOnIncumbent(true) .BuildWithFallback(null); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .SetReplacementRate(localConfig.ReplacementRate + 0.1) .BuildWithFallback(localConfig); ConfigurationBaseTest.CheckIncompatibility(localConfig, otherConfig); }
public void IsCompatibleReturnsFalseForIncompatibleDifferentialEvolutionConfigurationBuilders() { var defaultConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(null); var incompatibleDifferentialEvolutionConfigurationBuilder = this._defaultDifferentialEvolutionConfigurationBuilder .SetBestPercentage(this._defaultDifferentialEvolutionConfigurationBuilder.BuildWithFallback(null).BestPercentage + 0.01); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(incompatibleDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(defaultConfig); ConfigurationBaseTest.CheckIncompatibility(defaultConfig, otherConfig); }
public void IsCompatibleReturnsTrueForIrrelevantParameterChanges() { var globalConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .SetFocusOnIncumbent(false) .BuildWithFallback(null); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetReplacementRate(globalConfig.ReplacementRate + 0.1) .BuildWithFallback(globalConfig); Assert.True( globalConfig.IsCompatible(otherConfig), "Configurations should be compatible."); Assert.Equal( globalConfig.IsCompatible(otherConfig), otherConfig.IsCompatible(globalConfig)); }
/// <summary> /// Creates a <see cref="AlgorithmTunerConfiguration"/> using differential evolution with a local update /// strategy. /// </summary> /// <param name="replacementRate">The replacement rate.</param> /// <returns>The created <see cref="AlgorithmTunerConfiguration"/>.</returns> private static AlgorithmTunerConfiguration CreateConfiguration(double replacementRate) { var deConfigurationBuilder = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetFocusOnIncumbent(true) .SetReplacementRate(replacementRate) .SetDifferentialEvolutionConfigurationBuilder( new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder().SetBestPercentage(0.2)); return(new AlgorithmTunerConfiguration.AlgorithmTunerConfigurationBuilder() .SetEnableRacing(true) .AddDetailedConfigurationBuilder( RegressionForestArgumentParser.Identifier, new GenomePredictionRandomForestConfig.GenomePredictionRandomForestConfigBuilder()) .AddDetailedConfigurationBuilder( DifferentialEvolutionStrategyArgumentParser.Identifier, deConfigurationBuilder) .Build(maximumNumberParallelEvaluations: 1)); }
public void IsCompatibleReturnsTrueForChangesInInitialParameters() { var defaultConfig = this._builder .SetDifferentialEvolutionConfigurationBuilder(this._defaultDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(null); var differentialEvolutionConfiguration = this._defaultDifferentialEvolutionConfigurationBuilder.BuildWithFallback(null); var compatibleDifferentialEvolutionConfigurationBuilder = this._defaultDifferentialEvolutionConfigurationBuilder .SetInitialMeanMutationFactor(differentialEvolutionConfiguration.InitialMeanMutationFactor + 0.01) .SetInitialMeanCrossoverRate(differentialEvolutionConfiguration.InitialMeanCrossoverRate + 0.02); var otherConfig = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(compatibleDifferentialEvolutionConfigurationBuilder) .BuildWithFallback(defaultConfig); // Check those two configuration are compatible. Assert.True( defaultConfig.IsCompatible(otherConfig), "Configurations should be compatible."); Assert.Equal( defaultConfig.IsCompatible(otherConfig), otherConfig.IsCompatible(defaultConfig)); }
public void BuildWithFallbackUsesFallbacksForDetailedConfiguration() { var differentialEvolutionFallback = new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder() .SetInitialMeanMutationFactor(0.87); var fallback = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetDifferentialEvolutionConfigurationBuilder(differentialEvolutionFallback) .BuildWithFallback(null); var differentialEvolution = this._defaultDifferentialEvolutionConfigurationBuilder.SetBestPercentage(0.12); var config = this._builder .SetDifferentialEvolutionConfigurationBuilder(differentialEvolution) .BuildWithFallback(fallback); Assert.Equal( 0.87, config.DifferentialEvolutionConfiguration.InitialMeanMutationFactor); Assert.Equal( 0.12, config.DifferentialEvolutionConfiguration.BestPercentage); }
/// <summary> /// Called before every test. /// </summary> protected override void InitializeDefault() { base.InitializeDefault(); var strategyConfigurationBuilder = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .SetFocusOnIncumbent(false) .SetDifferentialEvolutionConfigurationBuilder( new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder().SetBestPercentage(0.2)); this._completeConfiguration = new AlgorithmTunerConfiguration.AlgorithmTunerConfigurationBuilder() .SetEnableRacing(true) .AddDetailedConfigurationBuilder( RegressionForestArgumentParser.Identifier, new GenomePredictionRandomForestConfig.GenomePredictionRandomForestConfigBuilder()) .AddDetailedConfigurationBuilder( DifferentialEvolutionStrategyArgumentParser.Identifier, strategyConfigurationBuilder) .Build(maximumNumberParallelEvaluations: 1); this._genomeBuilder = new GenomeBuilder(this._parameterTree, this._completeConfiguration); this._deConfiguration = strategyConfigurationBuilder.BuildWithFallback(null); }
public override void BuildWithFallbackUsesFallbacks() { // Set all values in builder and build a configuration. var detailedBuilder = this._defaultDifferentialEvolutionConfigurationBuilder.SetInitialMeanMutationFactor(0.01); var fallback = this._builder .SetDifferentialEvolutionConfigurationBuilder(detailedBuilder) .SetMinimumDomainSize(23) .SetMaximumNumberGenerations(12) .SetReplacementRate(0.49) .SetFixInstances(true) .SetFocusOnIncumbent(true) .BuildWithFallback(null); // Create a new builder based on it and let it build a configuration. var config = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder() .BuildWithFallback(fallback); // Check all values. Assert.Equal( fallback.DifferentialEvolutionConfiguration.InitialMeanMutationFactor, config.DifferentialEvolutionConfiguration.InitialMeanMutationFactor); Assert.Equal( fallback.MinimumDomainSize, config.MinimumDomainSize); Assert.Equal( fallback.MaximumNumberGenerations, config.MaximumNumberGenerations); Assert.Equal( fallback.ReplacementRate, config.ReplacementRate); Assert.True(config.FixInstances, "Fix instances flag was not copied over."); Assert.Equal( fallback.FocusOnIncumbent, config.FocusOnIncumbent); }
/// <summary> /// Initializes a new instance of the <see cref="DifferentialEvolutionStrategyConfigurationTest"/> class. /// </summary> public DifferentialEvolutionStrategyConfigurationTest() { this._builder = new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder(); }