/// <summary> /// Request <seealso cref="OptimizationManagerGeneticAlgorithm"/> to start the Optimization Process /// </summary> private void StartGeneticOptimization() { // Reset Value RoundsCompleted = 0; // Array of object to be used as parameters for given strategy var parameterValues = GetParameterValues(SelectedStrategy.ParameterDetails).ToArray(); var optimizationParametersDetail = new SortedDictionary <int, OptimizationParameterDetail>(); foreach (var optimizationParameterDetail in OptimizationParameters) { optimizationParametersDetail.Add(optimizationParameterDetail.Index, optimizationParameterDetail); } var strategyDetails = new GeneticAlgorithmParameters(SelectedStrategy.StrategyType, parameterValues, optimizationParametersDetail, _iterations, _populationSize, _rounds); // Change Status Status = OptimizationStatus.Working; // Clear existing data OptimizedParameters.Clear(); // Raise Event to notify listeners to start Optimization Process Task.Factory.StartNew(() => { EventSystem.Publish <GeneticAlgorithmParameters>(strategyDetails); }); }
/// <summary> /// Displays GA Optimization Result on UI /// </summary> /// <param name="optimizationResult">Contains optimized parameters information</param> private void DisplayResult(GeneticAlgorithmResult optimizationResult) { _currentDispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => { RoundsCompleted++; foreach (OptimizationParameterDetail optimizationParameterDetail in optimizationResult.ParameterList) { OptimizedParameters.Add(optimizationParameterDetail); } if (RoundsCompleted == Rounds) { Status = OptimizationStatus.Completed; } })); }
public void AddOptimizedParameter(OptimizedParameterDTO optimizedParameterDTO) { OptimizedParameters.Add(optimizedParameterDTO); }