예제 #1
0
        private void CheckInit()
        {
            var clearFunc = _factory.Create <DbEntityInit>();

            Func <int> func = clearFunc.Init;

            var spid = DBExtensions.InvokeWithRetriesThrows(func, 10, 500);
        }
예제 #2
0
        private void HandleMessageEvent(
            Message msmqMessage,
            TRequestType message,
            string messageId,
            string correlationId)
        {
            var logic = logicFactory.Create();

            logic.DoWork(message, messageId, correlationId);
            logicFactory.Release(logic);
        }
        public override Solution[] GeneratePopulation(EvolutionParameters evolutionParameters)
        {
            var basePopulationSize = evolutionParameters.BasePopulationSize;
            var population         = new Solution[basePopulationSize];

            for (var i = 0; i < basePopulationSize; i++)
            {
                var solution = _solutionsFactory.Create(evolutionParameters);
                population[i] = GenerateCoefficients(solution);
            }

            return(population);
        }
예제 #4
0
        public IEngine Create(EvolutionParameters evolutionParameters, IGenericFactory <Solution> solutionsFactory, IGenericFactory <PopulationGeneratorBase> populationGeneratorsFactory, IGenericFactory <MutatorBase> objectMutatorsFactory, IGenericFactory <MutatorBase> stdDevsMutatorsFactory, IGenericFactory <MutationRuleSupervisorBase> mutationRuleSupervisorsFactory, IGenericFactory <ParentsSelectorBase> parentsSelectorsFactory, IGenericFactory <SurvivorsSelectorBase> survivorsSelectorsFactory,
                              IGenericFactory <MutatorBase> rotationsMutatorsFactory     = null, IGenericFactory <RecombinerBase> objectRecombinersFactory    = null,
                              IGenericFactory <RecombinerBase> stdDevsRecombinersFactory = null, IGenericFactory <RecombinerBase> rotationsRecombinersFactory = null)
        {
            IEngine engine;

            var populationGenerator    = populationGeneratorsFactory.Create(evolutionParameters);
            var objectMutator          = objectMutatorsFactory.Create(evolutionParameters);
            var stdDevsMutator         = stdDevsMutatorsFactory.Create(evolutionParameters);
            var mutationRuleSupervisor = mutationRuleSupervisorsFactory.Create(evolutionParameters);
            var rotationsMutator       = rotationsMutatorsFactory?.Create(evolutionParameters);
            var parentsSelector        = parentsSelectorsFactory.Create(evolutionParameters);
            var survivorsSelector      = survivorsSelectorsFactory.Create(evolutionParameters);
            var objectRecombiner       = objectRecombinersFactory?.Create(evolutionParameters);
            var stdDevsRecombiner      = stdDevsRecombinersFactory?.Create(evolutionParameters);
            var rotationsRecombiner    = rotationsRecombinersFactory?.Create(evolutionParameters);
            var statistics             = new Statistics();
            var stoper = new Stopwatch();

            var typeOfMutation = (MutationType)evolutionParameters.TypeOfMutation;

            if (typeOfMutation == MutationType.Correlated)
            {
                if (evolutionParameters.UseRecombination)
                {
                    engine = new CmEngineWithRecombination(evolutionParameters, solutionsFactory, populationGenerator, objectMutator, stdDevsMutator, mutationRuleSupervisor, parentsSelector, survivorsSelector, statistics, stoper, objectRecombiner, stdDevsRecombiner, rotationsMutator, rotationsRecombiner);
                }
                else
                {
                    engine = new CmEngineWithoutRecombination(evolutionParameters, solutionsFactory, populationGenerator, objectMutator, stdDevsMutator, mutationRuleSupervisor, parentsSelector, survivorsSelector, statistics, stoper, rotationsMutator);
                }
            }
            else
            {
                if (evolutionParameters.UseRecombination)
                {
                    engine = new UmEngineWithRecombination(evolutionParameters, solutionsFactory, populationGenerator, objectMutator, stdDevsMutator, mutationRuleSupervisor, parentsSelector, survivorsSelector, statistics, stoper, objectRecombiner, stdDevsRecombiner);
                }
                else
                {
                    engine = new UmEngineWithoutRecombination(evolutionParameters, solutionsFactory, populationGenerator, objectMutator, stdDevsMutator, mutationRuleSupervisor, parentsSelector, survivorsSelector, statistics, stoper);
                }
            }

            return(engine);
        }
예제 #5
0
        protected Solution[] InitializePopulations(EvaluatorBase evaluator, ISeedingProcessor seedingProcessor = null)
        {
            var population = PopulationGenerator.GeneratePopulation(Parameters);

            if (seedingProcessor != null)
            {
                Stoper.Restart();
                population = seedingProcessor.Seed(population);
                Stoper.Stop();
                Statistics.SeedingTime = Stoper.Elapsed;
            }

            foreach (var solution in population)
            {
                solution.FitnessScore = evaluator.Evaluate(solution);
            }

            for (var i = 0; i < OffspringPopulation.Length; i++)
            {
                OffspringPopulation[i] = SolutionsFactory.Create(Parameters);
            }

            return(population);
        }