コード例 #1
0
ファイル: Testbench.cs プロジェクト: voidjvmper/app.kwekerij
    public IMatingPoolSelector GetUsedMatingPoolSelector()
    {
        switch (matingPoolSelector)
        {
        case MatingPoolSelectorLoad.Fittest:
            rtnMatingPoolSelector = new PoolSelectorFittest();
            break;

        case MatingPoolSelectorLoad.Full:
            rtnMatingPoolSelector = new PoolSelectorFull();
            break;

        case MatingPoolSelectorLoad.Random:
            rtnMatingPoolSelector = new PoolSelectorRandom();
            break;

        default:
            rtnMatingPoolSelector = new PoolSelectorFull();
            break;
        }
        return(rtnMatingPoolSelector);
    }
コード例 #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);
        }