private ShuffledComplexEvolution <MpiSysConfig> CreateShuffledComplexEvolution( IClonableObjectiveEvaluator <MpiSysConfig> objectiveEvaluator, IDictionary <string, string> dict, ICandidateFactory <MpiSysConfig> populationInitializer, ILoggerMh logger) { Log.Debug("Root: creating SCE optimiser"); ShuffledComplexEvolution <MpiSysConfig> optimEngine = new ShuffledComplexEvolution <MpiSysConfig>( objectiveEvaluator, populationInitializer, CreateTerminationCriterion(), SceParameterDefinition.Parameters.P, SceParameterDefinition.Parameters.M, SceParameterDefinition.Parameters.Q, SceParameterDefinition.Parameters.Alpha, SceParameterDefinition.Parameters.Beta, SceParameterDefinition.Parameters.NumShuffle, new BasicRngFactory(SceParameterDefinition.RandomizationSeed + 1000), new DefaultFitnessAssignment(), dict, trapezoidalPdfParam: SceParameterDefinition.Parameters.TrapezoidalDensityParameter, options: sceOptions, pmin: SceParameterDefinition.Parameters.Pmin) { Logger = logger }; return(optimEngine); }
public static void Write(string infoMsg, IDictionary <string, string> tags, ILoggerMh logger) { if (logger != null) { logger.Write(infoMsg, tags); } }
/// <summary> /// Executes the shuffled complex evolution for nesting within the rosenbrock optimiser. /// </summary> /// <param name="objectiveEvaluator"> The compound obj calculator. </param> /// <param name="dict"> The dict. </param> /// <param name="populationInitializer"> The population initializer. </param> /// <param name="logger"> The logger. </param> /// <returns> </returns> private MpiSysConfig ExecuteShuffledComplexForRosen( IClonableObjectiveEvaluator <MpiSysConfig> objectiveEvaluator, IDictionary <string, string> dict, ICandidateFactory <MpiSysConfig> populationInitializer, ILoggerMh logger) { Log.Debug("Root: Executing SCE optimiser"); var optimEngine = CreateShuffledComplexEvolution(objectiveEvaluator, dict, populationInitializer, logger); return(BestParameterSet(optimEngine.Evolve(), new DefaultFitnessAssignment())); }
private IEvolutionEngine <MpiSysConfig> CreateSceRosenEngine( IClonableObjectiveEvaluator <MpiSysConfig> objectiveEvaluator, IDictionary <string, string> dict, ICandidateFactory <MpiSysConfig> populationInitializer, ILoggerMh logger) { Log.Debug("Root: Creating Rosenbrock + SCE optimiser"); Func <IOptimizationResults <MpiSysConfig> > rosenFunc = () => ExecuteRosenbrock(objectiveEvaluator, dict, populationInitializer, logger); return(new ChainOptimizations <MpiSysConfig>("Sce+Rosen", rosenFunc)); }
private IEvolutionEngine <MpiSysConfig> CreateEngine( IClonableObjectiveEvaluator <MpiSysConfig> objectiveEvaluator, MpiSysConfig templateParameterSet, MpiSysConfig[] seedsPopulation, ILoggerMh logger, string calibName, string initialisationOption) { Log.Debug("Root: creating optimisation engine"); var dict = string.IsNullOrEmpty(calibName) ? CreateTimeStampCalibName() : CreateTag(calibName); var populationInitializer = CreatePopulationInitialiser(objectiveEvaluator, templateParameterSet, seedsPopulation, initialisationOption); return(CreateEngine(objectiveEvaluator, dict, populationInitializer, logger)); }
private IEvolutionEngine <MpiSysConfig> CreateEngine( IClonableObjectiveEvaluator <MpiSysConfig> objectiveEvaluator, IDictionary <string, string> dict, ICandidateFactory <MpiSysConfig> populationInitializer, ILoggerMh logger) { switch (OptimisationMethod) { default: case OptimisationMethods.Sce: return(CreateShuffledComplexEvolution(objectiveEvaluator, dict, populationInitializer, logger)); case OptimisationMethods.RosenSce: return(CreateSceRosenEngine(objectiveEvaluator, dict, populationInitializer, logger)); } }
private IOptimizationResults <MpiSysConfig> ExecuteRosenbrock( IClonableObjectiveEvaluator <MpiSysConfig> objectiveEvaluator, IDictionary <string, string> dict, ICandidateFactory <MpiSysConfig> populationInitializer, ILoggerMh logger) { Log.Debug("Root: Executing Rosenbrock optimiser"); var engine = new RosenbrockOptimizer <MpiSysConfig, double>( objectiveEvaluator, ExecuteShuffledComplexForRosen(objectiveEvaluator, dict, populationInitializer, logger), new RosenbrockOptimizer <MpiSysConfig, double> .RosenbrockOptimizerIterationTermination(RosenbrockIterations), logTags: dict) { Logger = logger, AlgebraProvider = new TimeAlgebraProvider() }; return(engine.Evolve()); }
public static void Write(IObjectiveScores[] scores, IDictionary <string, string> tags, ILoggerMh logger) { if (logger != null) { logger.Write(scores, tags); } }
public static void Write(FitnessAssignedScores <double> scores, IDictionary <string, string> tags, ILoggerMh logger) { if (logger != null) { logger.Write(scores, tags); } }