public void IsCompatibleReturnsFalseForDifferentLearningRate()
        {
            var defaultConfig = this._builder.BuildWithFallback(null);
            var otherConfig   = new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder()
                                .SetLearningRate(defaultConfig.LearningRate + 0.01)
                                .BuildWithFallback(defaultConfig);

            ConfigurationBaseTest.CheckIncompatibility(defaultConfig, otherConfig);
        }
        public void IsCompatibleReturnsTrueForChangesInInitialParameters()
        {
            var defaultConfig = this._builder.BuildWithFallback(null);
            var otherConfig   = new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder()
                                .SetInitialMeanMutationFactor(defaultConfig.InitialMeanMutationFactor + 0.01)
                                .SetInitialMeanCrossoverRate(defaultConfig.InitialMeanCrossoverRate + 0.02)
                                .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 IsTechnicallyCompatibleReturnsTrueForDifferentParameters()
        {
            var defaultConfig = this._builder.BuildWithFallback(null);
            var otherConfig   = new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder()
                                .SetBestPercentage(defaultConfig.BestPercentage + 0.01)
                                .SetInitialMeanMutationFactor(defaultConfig.InitialMeanMutationFactor + 0.02)
                                .SetInitialMeanCrossoverRate(defaultConfig.InitialMeanCrossoverRate + 0.03)
                                .SetLearningRate(defaultConfig.LearningRate + 0.04)
                                .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));
        }
예제 #4
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);
        }
        public override void BuildWithFallbackUsesFallbacks()
        {
            // Set all values in builder and build a configuration.
            var fallback = this._builder
                           .SetBestPercentage(0.11)
                           .SetInitialMeanMutationFactor(0.69)
                           .SetInitialMeanCrossoverRate(0.37)
                           .SetLearningRate(0.81)
                           .BuildWithFallback(null);

            // Create a new builder based on it and let it build a configuration.
            var config = new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder()
                         .BuildWithFallback(fallback);

            // Check all values.
            Assert.Equal(fallback.BestPercentage, config.BestPercentage);
            Assert.Equal(
                fallback.InitialMeanMutationFactor,
                config.InitialMeanMutationFactor);
            Assert.Equal(
                fallback.InitialMeanCrossoverRate,
                config.InitialMeanCrossoverRate);
            Assert.Equal(fallback.LearningRate, config.LearningRate);
        }
예제 #6
0
 /// <summary>
 /// Sets relevant parameters for the differential evolution algorithm.
 /// </summary>
 /// <param name="builder">
 /// A <see cref="DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder"/>.
 /// </param>
 /// <returns>The <see cref="DifferentialEvolutionStrategyConfigurationBuilder" /> in its new state.</returns>
 public DifferentialEvolutionStrategyConfigurationBuilder SetDifferentialEvolutionConfigurationBuilder(
     DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder builder)
 {
     this._differentialEvolutionConfigurationBuilder = builder ?? throw new ArgumentNullException(nameof(builder));
     return(this);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DifferentialEvolutionConfigurationTest"/> class.
 /// </summary>
 public DifferentialEvolutionConfigurationTest()
 {
     this._builder =
         new DifferentialEvolutionConfiguration.DifferentialEvolutionConfigurationBuilder();
 }