Ejemplo n.º 1
0
    public IBreedingPairSelector GetUsedBreedingPairSelector()
    {
        switch (breedingPairSelector)
        {
        case BreedingPairSelectorLoad.AlphaA:
            rtnBreedingPairSelector = new PairSelectorAlphaA();
            break;

        case BreedingPairSelectorLoad.EqualPrince:
            rtnBreedingPairSelector = new PairSelectorEqualPrince();
            break;

        case BreedingPairSelectorLoad.UnequalPrince:
            rtnBreedingPairSelector = new PairSelectorUnequalPrince();
            break;

        case BreedingPairSelectorLoad.Equity:
            rtnBreedingPairSelector = new PairSelectorEquity();
            break;

        case BreedingPairSelectorLoad.Fittest:
            rtnBreedingPairSelector = new PairSelectorFittest();
            break;

        case BreedingPairSelectorLoad.NarrowRandom:
            rtnBreedingPairSelector = new PairSelectorNarrowRandom();
            break;

        case BreedingPairSelectorLoad.Sequential:
            rtnBreedingPairSelector = new PairSelectorSequential();
            break;

        default:
            rtnBreedingPairSelector = new PairSelectorSequential();
            break;
        }
        return(rtnBreedingPairSelector);
    }
Ejemplo n.º 2
0
        //Chromosome (string): Solution
        //Gene (bits): Part of solution
        //Locus: Poisition of gene
        //Alleles: Value of gene
        //Phenotype: Decoded solution
        //Genotype: Encoded solution

        public static List <T> Evolve <T>(List <T> pPopulation, int pEvolvedPopulationSize, IMatingPoolSelector pPoolSelector, IBreedingPairSelector pPairSelector, ICrossoverOperator pOperator, IMutator pMutator) where T : GeneticEntity
        {
            List <T> pooledPop  = new List <T>();
            List <T> pairedPop  = new List <T>();
            List <T> crossedPop = new List <T>();
            List <T> mutatedPop = new List <T>();

            int stepCount = 1;

            //Select Pool
            pooledPop = pPoolSelector.SelectPool(pPopulation, pEvolvedPopulationSize);
            OutputStep(pooledPop, stepCount, "pooling");
            stepCount++;

            //Select Pairs
            pairedPop = pPairSelector.SelectPairs(pooledPop);
            OutputStep(pairedPop, stepCount, "pairing");
            stepCount++;

            //Crossover
            crossedPop = pOperator.Crossover(pairedPop);
            OutputStep(crossedPop, stepCount, "crossing");
            stepCount++;

            //Mutate
            mutatedPop = pMutator.Mutate(crossedPop);
            OutputStep(pooledPop, stepCount, "mutating");
            stepCount++;

            return(mutatedPop);
        }