Пример #1
0
        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);
        }
Пример #2
0
 public static void Write(string infoMsg, IDictionary <string, string> tags, ILoggerMh logger)
 {
     if (logger != null)
     {
         logger.Write(infoMsg, tags);
     }
 }
Пример #3
0
        /// <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()));
        }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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));
            }
        }
Пример #7
0
        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());
        }
Пример #8
0
 public static void Write(IObjectiveScores[] scores, IDictionary <string, string> tags, ILoggerMh logger)
 {
     if (logger != null)
     {
         logger.Write(scores, tags);
     }
 }
Пример #9
0
 public static void Write(FitnessAssignedScores <double> scores, IDictionary <string, string> tags, ILoggerMh logger)
 {
     if (logger != null)
     {
         logger.Write(scores, tags);
     }
 }