/// <summary> /// Starts Optimization for the selected strategy /// </summary> private void StartOptimization() { try { if (Logger.IsInfoEnabled) { Logger.Info("Starting strategy optimization.", _type.FullName, "StartOptimization"); } // Get parameters to be used for optimization var parameters = GetOptimizationParameters(); if (parameters != null) { if (parameters.Count > 0) { // Create a new object to be used with Event Aggregator OptimizeStrategyBruteForce optimizationParameters = new OptimizeStrategyBruteForce(_ctorArguments, _strategyType, parameters.ToArray(), _parmatersDetails); // Raise Event to notify listeners EventSystem.Publish <OptimizeStrategyBruteForce>(optimizationParameters); } } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "StartOptimization"); } }
/// <summary> /// Start Strategy Optimization /// </summary> /// <param name="optimizationParameters">Contains info for the parameters to be used for optimization</param> private void StartOptimization(OptimizeStrategyBruteForce optimizationParameters) { try { if (_asyncClassLogger.IsInfoEnabled) { _asyncClassLogger.Info("Getting argument combinations", _type.FullName, "StartOptimization"); } // Clear all previous information _strategiesCollection.Clear(); // Save Parameter Details _parmatersDetails = optimizationParameters.ParmatersDetails; // Get all ctor arguments to be used for optimization CreateCtorCombinations(optimizationParameters.CtorArgs, optimizationParameters.ConditionalParameters); // Initialize Stratgey for each set of arguments foreach (object[] ctorArgument in _ctorArguments) { // Get new Key. string key = ApplicationIdGenerator.NextId(); // Save Strategy details in new Strategy Executor object StrategyExecutor strategyExecutor = new StrategyExecutor(key, optimizationParameters.StrategyType, ctorArgument); // Register Event strategyExecutor.StatusChanged += OnStrategyExecutorStatusChanged; // Add to local map _strategiesCollection.AddOrUpdate(key, strategyExecutor, (ky, value) => strategyExecutor); } // Start executing each instance StartStrategyExecution(); } catch (Exception exception) { _asyncClassLogger.Error(exception, _type.FullName, "StartOptimization"); } }