Exemple #1
0
        /// <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");
            }
        }