Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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));
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        /// <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);
        }
Exemple #12
0
        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);
        }
Exemple #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DifferentialEvolutionStrategyConfigurationTest"/> class.
 /// </summary>
 public DifferentialEvolutionStrategyConfigurationTest()
 {
     this._builder =
         new DifferentialEvolutionStrategyConfiguration.DifferentialEvolutionStrategyConfigurationBuilder();
 }