/// <summary> /// Displays optimization results /// </summary> private void DisplayOptimizationResults(OptimizationResultGeneticAlgo result) { try { if (Logger.IsInfoEnabled) { Logger.Info("Parameter Results, PnL=" + result.FitnessValue, _type.FullName, "DisplayOptimizationResults"); } // Update Fitness Pnl = Math.Round(result.FitnessValue, 5); // Update UI Element _currentDispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => { foreach (var info in result.OptimizedParameters) { _parametersInfo.Add(new ParameterStats(info.Key.ToString(), info.Value)); if (Logger.IsInfoEnabled) { Logger.Info("Param=" + info.Key + " , Value=" + info.Value, _type.FullName, "DisplayOptimizationResults"); } } _parametersInfo.Add(new ParameterStats("Risk", Pnl)); })); Task.Factory.StartNew(() => { EventSystem.Publish <ExecuteNext>(new ExecuteNext()); }); } catch (Exception exception) { Logger.Error(exception, _type.FullName, "DisplayOptimizationResults"); } }
private void PublishParameters(int index) { // 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); }
/// <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(); } } }