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);
        }
        public void Factory_Serializes_Timespan()
        {
            var timespan   = TimeSpan.FromSeconds(10);
            var serialized = DynamicObjectFactory <TimeSpan> .Serialize(timespan, "timespan");

            var deserialized = DynamicObjectFactory <TimeSpan> .Build(serialized);

            Assert.AreEqual(timespan.Ticks, deserialized.Ticks);
        }
        public void Factory_Instantiates_Primitive_And_String(string typeName, object value, Type type)
        {
            var objectInfo = new DynamicObjectInfo()
            {
                Type              = typeName,
                Parameters        = new List <DynamicObjectInfo>(),
                Value             = value,
                GenericParameters = new List <string>()
            };
            var result = DynamicObjectFactory <object> .Build(objectInfo);

            Assert.AreEqual(value, result);
        }
Ejemplo n.º 5
0
        private Ice.ObjectFactory loadObjectFactory(string id)
        {
            Ice.ObjectFactory factory = null;

            try
            {
                Type c = AssemblyUtil.findType(instance_, typeToClass(id));
                if(c == null)
                {
                    return null;
                }
                //
                // Ensure the class is instantiable.
                //
                if(!c.IsAbstract && !c.IsInterface)
                {
                    Ice.ObjectFactory dynamicFactory = new DynamicObjectFactory(c);
                    //
                    // We will try to install the dynamic factory, but
                    // another thread may install a factory first.
                    //
                    while(factory == null)
                    {
                        try
                        {
                            instance_.servantFactoryManager().add(dynamicFactory, id);
                            factory = dynamicFactory;
                        }
                        catch(Ice.AlreadyRegisteredException)
                        {
                            //
                            // Another thread already installed the
                            // factory, so try to obtain it. It's
                            // possible (but unlikely) that the
                            // factory will have already been removed,
                            // in which case the return value will be
                            // null and the while loop will attempt to
                            // install the dynamic factory again.
                            //
                            factory = instance_.servantFactoryManager().find(id);
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                Ice.NoObjectFactoryException e = new Ice.NoObjectFactoryException(ex);
                e.type = id;
                throw e;
            }

            return factory;
        }