示例#1
0
        public override void Execute(PopulationBase population, out IndividualBase chosenIndividual1, out IndividualBase chosenIndividual2)
        {
            IndividualBase[] selectedParents = new IndividualBase[2];

            for (int individualIdx = 0; individualIdx < 2; ++individualIdx)
            {
                selectedParents[individualIdx] = population.GetRandomIndividual();
                for (int selectionIdx = 1; selectionIdx < tourSize; ++selectionIdx)
                {
                    IndividualBase randomIndividual = population.GetRandomIndividual();
                    if (randomIndividual.GetFitnessForObjective(Problem.MonoObjectiveGoal) > selectedParents[individualIdx].GetFitnessForObjective(Problem.MonoObjectiveGoal))
                    {
                        selectedParents[individualIdx] = randomIndividual;
                    }
                }
            }
            chosenIndividual1 = selectedParents[0];
            chosenIndividual2 = selectedParents[1];
        }
示例#2
0
        public GAEvolveSum(
            Random rand,
            double partToReinsert,
            int targetSum,
            int poplLen,
            int genomeNumbers,
            int nbInterval,
            double geneMutChance,
            int geneMutRange)
        {
            ES_RandGenomeGenerator        randGenomeGenerator;
            GenerationGeneratorBase <int> generationGenerator;
            IReinsertion <int>            reinsertion;
            IBreeding <int> breeding;

            RandomInst  = rand;
            TargetSum   = targetSum;
            FitnessEval = new ES_FitnessEval(targetSum);

            randGenomeGenerator = new ES_RandGenomeGenerator(genomeNumbers,
                                                             nbInterval,
                                                             rand);
            reinsertion = new ReinsertBest <int>(
                (int)(poplLen * partToReinsert));

            breeding = NewBreeding(
                poplLen,
                partToReinsert,
                geneMutChance,
                geneMutRange);

            generationGenerator = new GenerationGeneratorBase <int>(
                poplLen,
                reinsertion,
                breeding);

            Population = new PopulationBase <int>(
                poplLen,
                randGenomeGenerator,
                generationGenerator);
        }
示例#3
0
        public ShakespeareSolver(
            string targetStr,
            Random rand,
            double partToReinsert,
            int popLen,
            double geneMutChance,
            int geneMutRange)
        {
            TargetStr   = targetStr;
            FitnessEval = new Sh_FitnessEval(TargetStr, chars);

            var randGenomeGenerator = new Sh_RandGenomeGenerator(
                rand,
                targetStr.Length,
                geneMutRange,
                chars);

            var reinsertion = new ReinsertBest <char>(
                (int)(popLen * partToReinsert));

            var breeding = NewBreeding(
                rand,
                popLen,
                partToReinsert,
                geneMutChance,
                geneMutRange);

            var generationGenerator = new GenerationGeneratorBase <char>(
                popLen,
                reinsertion,
                breeding);

            Population = new PopulationBase <char>(
                popLen,
                randGenomeGenerator,
                generationGenerator);
        }
 public abstract void Execute(PopulationBase population, out IndividualBase chosenIndividual1, out IndividualBase chosenIndividual2);
 public override void Execute(PopulationBase population, out IndividualBase chosenIndividual1, out IndividualBase chosenIndividual2)
 {
     throw new NotImplementedException();
 }