private static GeneticDistributionFilter PrepareGeneticDistributionFilter(GeneticDistributionFilterConfiguration configuration, ILogger logger) { var handler = FunctionBuilder <double> .CreateFunction(configuration.TrunkThreshold); var geneticDistributionFilterParams = new GeneticDistributionFilterParams { DistributionResolution = configuration.DistributionResolution, GetTrunkThreshold = height => handler(new object[] { height }) }; var geneticDistributionFilter = new GeneticDistributionFilter(geneticDistributionFilterParams); var compareCriteria = new SimpleComparison <GeneticDistributionFitness>(EOptimizationMode.Minimize); var factory = new CollectivePhenotypeFactory <ParabolicParameters>(); var individualFactory = new IndividualFactory <CollectiveGenotype <ParabolicParameters>, CollectivePhenotype <ParabolicParameters>, GeneticDistributionFitness> (factory); if (!File.Exists(configuration.GeneticAlgorithmConfigurationFile)) { logger.Fatal("Genetic configuration file does not exist!"); Environment.Exit(0); } var geneticAlgorithmConfigurationContent = File.ReadAllText(configuration.GeneticAlgorithmConfigurationFile); var geneticAlgorithmInfo = JsonConvert.DeserializeObject <DynamicObjectInfo>(geneticAlgorithmConfigurationContent); var geneticAlgorithm = DynamicObjectFactory <GeneticAlgorithm> .Build(geneticAlgorithmInfo); geneticAlgorithm.Population.CompareCriteria = compareCriteria; geneticAlgorithm.Population.IndividualFactory = individualFactory; geneticDistributionFilter.GeneticAlgorithm = geneticAlgorithm; return(geneticDistributionFilter); }
private static GeneticEllipseMatch PrepareGeneticEllipseMatchAlgorithm(EllipsisMatchFilterConfiguration configuration, ILogger logger) { var geneticEllipseMatch = new GeneticEllipseMatch { BufferWidth = configuration.BufferWidth, EccentricityThreshold = configuration.InvalidEccentricityThreshold, }; var factory = new CollectivePhenotypeFactory <EllipticParameters>(); var individualFactory = new IndividualFactory <CollectiveGenotype <EllipticParameters>, CollectivePhenotype <EllipticParameters>, EllipsisMatchFitness>( factory); var compareCriteria = new SimpleComparison <EllipsisMatchFitness>(EOptimizationMode.Minimize); if (!File.Exists(configuration.GeneticAlgorithmConfigurationFile)) { logger.Fatal("Genetic configuration file does not exist!"); Environment.Exit(0); } var geneticAlgorithmConfigurationContent = File.ReadAllText(configuration.GeneticAlgorithmConfigurationFile); var geneticAlgorithmInfo = JsonConvert.DeserializeObject <DynamicObjectInfo>(geneticAlgorithmConfigurationContent); var geneticAlgorithm = DynamicObjectFactory <GeneticAlgorithm> .Build(geneticAlgorithmInfo); geneticAlgorithm.Population.CompareCriteria = compareCriteria; geneticAlgorithm.Population.IndividualFactory = individualFactory; geneticEllipseMatch.GeneticAlgorithm = geneticAlgorithm; return(geneticEllipseMatch); }