public SimpleGeneticAlgorithm(
            ISelectionAlgorithm selection,
            ICrossoverAlgorithm crossover,
            IMutationAlgorithm mutation,
            IFitnessFunction fitnessFunction)
        {
            Selection       = selection;
            Crossover       = crossover;
            Mutation        = mutation;
            FitnessFunction = fitnessFunction;

            _crossover = new Crossover(crossover);
            _mutation  = new Mutation(mutation);
        }
Ejemplo n.º 2
0
        public GA(
            int genomLength, 
            int populationSize, 
            int crossoverPointNum, 
            PointMutationPars mutationPars,
            ISelectionAlgorithm selectionAlgorithm,
            IComparer<Genom> fitnessComparer) :
            base(genomLength, populationSize, mutationPars, fitnessComparer)
        {
            Contract.Requires(genomLength > 0);
            Contract.Requires(populationSize > 1);
            Contract.Requires(crossoverPointNum > 0);
            Contract.Requires(fitnessComparer != null);
            Contract.Requires(selectionAlgorithm != null);

            CrossoverPointNum = crossoverPointNum;
            this.selectionAlgorithm = selectionAlgorithm;
        }
Ejemplo n.º 3
0
        public CrossEntropy(
            int genomLength, 
            int populationSize,
            double survivalPercent,
            PointMutationPars mutationPars,
            ISelectionAlgorithm selectionAlgorithm,
            IComparer<Genom> fitnessComparer) :
            base(genomLength, populationSize, mutationPars, fitnessComparer)
        {
            Contract.Requires(genomLength > 0);
            Contract.Requires(populationSize > 1);
            Contract.Requires(survivalPercent > 0.0 && survivalPercent < 100.0);
            Contract.Requires(fitnessComparer != null);
            Contract.Requires(selectionAlgorithm != null);

            SurvivalPercent = survivalPercent;
            this.selectionAlgorithm = selectionAlgorithm;
            survivalCount = (int)Math.Round((double)PopulationSize * (SurvivalPercent / 100.0), MidpointRounding.AwayFromZero);
        }
Ejemplo n.º 4
0
        public Generation <TSol, TGene, TFitness> SelectNextGeneration(
            ISelectionAlgorithm <TSol, TFitness> selectionAlgorithm,
            double mutationRate = 0.05)
        {
            var parents = selectionAlgorithm.SelectParents(SortedPopulation).GetEnumerator();
            //Breed from the survivors.
            var newChromosomes = new List <TSol>(SortedPopulation.Count);

            while (newChromosomes.Count < SortedPopulation.Count)
            {
                parents.MoveNext();
                var parentOne = parents.Current;
                parents.MoveNext();
                var parentTwo = parents.Current;
                newChromosomes.Add(parentOne.CrossWith(parentTwo, mutationRate));

                newChromosomes.Add(parentOne);
                newChromosomes.Add(parentTwo);
            }
            return(new Generation <TSol, TGene, TFitness>(newChromosomes));
        }
Ejemplo n.º 5
0
 public TextFormatter(ISelectionAlgorithm selection, ITextResource textResource)
 {
     _selection    = selection;
     _textResource = textResource;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Use the given base selection algorithm for selecting parents from the truncated list
 /// </summary>
 /// <param name="selectionIntensity">Pick the top fraction. Eg. 0.05 => top 5% </param>
 /// <param name="baseSelectionAlgorithm">For selecting from the truncated list</param>
 public TruncationSelection(double selectionIntensity, ISelectionAlgorithm <TSol, TFitness> baseSelectionAlgorithm)
 {
     this.selectionIntensity     = selectionIntensity;
     this.baseSelectionAlgorithm = baseSelectionAlgorithm;
 }