private static void OutputGenerationResults(OptimizeWindowViewModel viewModel, GeneticAlgorithm ga, FormInputData inputData) { var bestChromosome = (ChromosomeGlass)ga.Population.BestChromosome; var bestThickness = GetBestThicknessMm(bestChromosome); FitnessGlassUnit.UpdateInputDataFromChromosome(bestChromosome, inputData); LogLine(viewModel, $"Generation: {ga.Population.GenerationsNumber} | Total thickness: {bestThickness}"); LogLine(viewModel, $"Time: {ga.TimeEvolving:mm\\:ss\\.f} | Buildup: {FormInputData.GetBuildupDescriptionString(inputData)}"); }
private static FormInputData RunOptimization(FormInputData inputData, OptimizeWindowViewModel viewModel, GeneticAlgorithm ga) { try { LogLine(viewModel, "Optimization Started!"); ga.Start(); LogLine(viewModel, "Optimization stopped!"); FitnessGlassUnit.UpdateInputDataFromChromosome((ChromosomeGlass)ga.BestChromosome, inputData); return(inputData); } catch (Exception ex) { LogLine(viewModel, $"Error: {ex.Message}"); return(inputData); } }
public static FormInputData Run(FormInputData inputData, SettingsOpt settings, OptimizeWindowViewModel viewModel, CancellationToken token) { var optController = GetOptimizationController(inputData, settings); var geneticAlgorithm = SetGeneticAlgorithmSettings(settings, optController); geneticAlgorithm.GenerationRan += delegate { OutputGenerationResults(viewModel, geneticAlgorithm, inputData); if (token.IsCancellationRequested) { geneticAlgorithm.Stop(); LogLine(viewModel, "Optimization stopped by user!"); } }; var optimizedInputData = RunOptimization(inputData, viewModel, geneticAlgorithm); return(optimizedInputData); }
private static void LogLine(OptimizeWindowViewModel viewModel, string text) { viewModel.LogLines.AddOnUI(text); }