/// <summary> /// Handles incoming strategy optimization requests /// </summary> /// <param name="strategyInfo">Information to optimized specified strategy</param> private void OptimizeStrategy(OptimizeStrategyGeneticAlgo strategyInfo) { // Save constructor arguments _ctorArguments = strategyInfo.CtorArgs; // Save user strategy type _strategyType = strategyInfo.StrategyType; // Save optimization parameters info _optimizationParameters = strategyInfo.OptimzationParameters; //save iterations _iterations = strategyInfo.Iterations; //save population size _populationSize = strategyInfo.PopulationSize; //initialize range if (_ranges == null) { InitializeRangeArray(); } //ExecuteSingleRun(); //Initialize Required parameters if (InitializeOptimizationParameters()) { int index; // Start Optimization if ((index = StartOptimizationProcess()) >= 0) { // Get Optimized parameters info Dictionary <int, double> optimizedParameters = ProvideOptimizedParameterInfo(index); // Create result to be displayed on UI var result = new OptimizationResultGeneticAlgo(_populationArray[index].FitnessMax, optimizedParameters); // Publish event to UI EventSystem.Publish <OptimizationResultGeneticAlgo>(result); //Dispose(); } } }
/// <summary> /// Executes genetic algorithm to optimize the strategy /// </summary> private void ExectueGeneticAlgorithm() { //_stopwatch = new Stopwatch(); try { // Verfiy parameters before initiating optimization if (VerfiyOptimizationParameters()) { // Create new sorted dictionary var optimzationParameters = new SortedDictionary <int, GeneticAlgoParameters>(); // Add available values to sorted dictionary foreach (var parameter in _parameters) { optimzationParameters.Add(parameter.Index, parameter); if (Logger.IsInfoEnabled) { Logger.Info( "Input param, Discription=" + parameter.Description + ", StartValue=" + parameter.StartValue + ",EndValue=" + parameter.EndValue, _type.FullName, "ExectueGeneticAlgorithm"); } } //_stopwatch.Start(); // Create new value object to be published OptimizeStrategyGeneticAlgo optimizeStrategy = new OptimizeStrategyGeneticAlgo(_strategyType, _ctorArguments, optimzationParameters, Iterations, PopulationSize); // Notify Listener to start execution //Task.Factory.StartNew(()=>EventSystem.Publish<OptimizeStrategyGeneticAlgo>(optimizeStrategy)); EventSystem.Publish <OptimizeStrategyGeneticAlgo>(optimizeStrategy); } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "ExecuteGeneticAlgorithm"); } }