示例#1
0
        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)}");
        }
示例#2
0
 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);
     }
 }
示例#3
0
        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);
        }
示例#4
0
 private static void LogLine(OptimizeWindowViewModel viewModel, string text)
 {
     viewModel.LogLines.AddOnUI(text);
 }