public void CreateCovarianceMatrixAdaptationStrategyReturnsCorrectStrategyType() { var localConfiguration = CovarianceMatrixAdaptationInformationFlowSwitchTest.CreateConfiguration(focusOnIncumbent: true); var strategy = CovarianceMatrixAdaptationInformationFlowSwitch.CreateCovarianceMatrixAdaptationStrategy <TestInstance, TestResult>( localConfiguration, this.GetDefaultParameterTree(), this.GenomeBuilder, this.GenomeSorter, this.ResultStorageActor); Assert.Equal( typeof(LocalCovarianceMatrixAdaptationStrategy <TestInstance, TestResult>), strategy.GetType()); var globalConfiguration = CovarianceMatrixAdaptationInformationFlowSwitchTest.CreateConfiguration(focusOnIncumbent: false); strategy = CovarianceMatrixAdaptationInformationFlowSwitch.CreateCovarianceMatrixAdaptationStrategy <TestInstance, TestResult>( globalConfiguration, this.GetDefaultParameterTree(), this.GenomeBuilder, this.GenomeSorter, this.ResultStorageActor); Assert.Equal( typeof(GlobalCovarianceMatrixAdaptationStrategy <TestInstance, TestResult>), strategy.GetType()); }
/// <summary> /// Chooses the next population update strategy after this one finished. /// </summary> /// <param name="populationUpdateStrategies">Possible strategies.</param> /// <returns>Index of the chosen strategy.</returns> public int NextStrategy(List <IPopulationUpdateStrategy <TInstance, TResult> > populationUpdateStrategies) { Type nextStrategyType; switch (this._configuration.ContinuousOptimizationMethod) { case ContinuousOptimizationMethod.None: nextStrategyType = typeof(GgaStrategy <TInstance, TResult>); break; case ContinuousOptimizationMethod.Jade: nextStrategyType = typeof(DifferentialEvolutionStrategy <TInstance, TResult>); break; case ContinuousOptimizationMethod.CmaEs: nextStrategyType = CovarianceMatrixAdaptationInformationFlowSwitch.DetermineCovarianceMatrixAdaptationStrategyType <TInstance, TResult>( this._configuration); break; default: throw new NotImplementedException( $"{this._configuration.ContinuousOptimizationMethod} is not mapped to a type in GGA strategy."); } return(populationUpdateStrategies.FindIndex(strategy => strategy.GetType() == nextStrategyType)); }
public void DetermineCovarianceMatrixAdaptationStrategyTypeReturnsCorrectType() { var localConfiguration = CovarianceMatrixAdaptationInformationFlowSwitchTest.CreateConfiguration(focusOnIncumbent: true); Assert.Equal( typeof(LocalCovarianceMatrixAdaptationStrategy <TestInstance, TestResult>), CovarianceMatrixAdaptationInformationFlowSwitch.DetermineCovarianceMatrixAdaptationStrategyType <TestInstance, TestResult>( localConfiguration)); var globalConfiguration = CovarianceMatrixAdaptationInformationFlowSwitchTest.CreateConfiguration(focusOnIncumbent: false); Assert.Equal( typeof(GlobalCovarianceMatrixAdaptationStrategy <TestInstance, TestResult>), CovarianceMatrixAdaptationInformationFlowSwitch.DetermineCovarianceMatrixAdaptationStrategyType <TestInstance, TestResult>( globalConfiguration)); }
/// <summary> /// Creates the different <see cref="IPopulationUpdateStrategy{TInstance,TResult}"/>s that may be used to /// update the population. /// </summary> /// <param name="targetAlgorithmFactory"> /// Produces configured instances of the target algorithm to tune. /// </param> /// <param name="runEvaluator"> /// Object for evaluating target algorithm runs. /// </param> /// <returns>The created <see cref="IPopulationUpdateStrategy{TInstance,TResult}"/>s.</returns> private IEnumerable <IPopulationUpdateStrategy <TInstance, TResult> > CreatePopulationUpdateStrategies( ITargetAlgorithmFactory <TTargetAlgorithm, TInstance, TResult> targetAlgorithmFactory, IRunEvaluator <TResult> runEvaluator) { var tournamentSelector = this._targetAlgorithmRunActors.ActorOf( Props.Create( () => new TournamentSelector <TTargetAlgorithm, TInstance, TResult>( targetAlgorithmFactory, runEvaluator, this._configuration, this._targetRunResultStorage, this._parameterTree)), AkkaNames.TournamentSelector); yield return(new GgaStrategy <TInstance, TResult>( this._configuration, this._parameterTree, this._genomeBuilder, tournamentSelector, this.GeneticEngineering)); if (this._configuration.ContinuousOptimizationMethod == ContinuousOptimizationMethod.Jade) { yield return(new DifferentialEvolutionStrategy <TInstance, TResult>( this._configuration, this._parameterTree, this._genomeBuilder, this._genomeSorter, this._targetRunResultStorage)); } if (this._configuration.ContinuousOptimizationMethod == ContinuousOptimizationMethod.CmaEs) { yield return(CovarianceMatrixAdaptationInformationFlowSwitch.CreateCovarianceMatrixAdaptationStrategy <TInstance, TResult>( this._configuration, this._parameterTree, this._genomeBuilder, this._genomeSorter, this._targetRunResultStorage)); } }