Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of a GeneticAlgorithm.
 /// </summary>
 /// <param name="mutationFunction">Mutation function to apply during evolution.</param>
 /// <param name="crossoverFunction">Crossover Function used during evolution.</param>
 /// <param name="selectionFunction">Selection Function used in chromosome selection.</param>
 /// <param name="pairingFunction">Pairing function used to select pairs of chromosomes during crossover.</param>
 public GeneticAlgorithm(IMutationFunction mutationFunction, ICrossoverFunction crossoverFunction,
                         ISelectionFunction selectionFunction, IPairingFunction pairingFunction)
 {
     this.Mutation  = mutationFunction;
     this.Crossover = crossoverFunction;
     this.Selection = selectionFunction;
     this.Pairing   = pairingFunction;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Adds a mutation function to the chain.
        /// <para>The mutator is required to handle sequence ranges.</para>
        /// </summary>
        /// <param name="mutator">Mutation function.</param>
        /// <returns></returns>
        public MutationChain Add(IMutationFunction mutator)
        {
            var mutations = new List <IMutationFunction>(this.Mutations)
            {
                mutator
            };

            return(new MutationChain(mutations, this.SequenceLength));
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes the genetic pool using the specified seed and mutation functions.
 /// </summary>
 /// <param name="poolSize">Size of the pool to create.</param>
 /// <param name="seed">Starting seed value.</param>
 /// <param name="seedMutator">Mutator used during initialization of the pool.</param>
 /// <param name="fitnessMetric">Fitness function for evaluating chromosomes.</param>
 /// <param name="fitnessMode">Fitness mode.</param>
 public Population(int poolSize, IChromosome seed, IMutationFunction seedMutator, IFitnessMetric fitnessMetric, FitnessMode fitnessMode)
     : this(poolSize, () => seedMutator.Mutate(seed), fitnessMetric, fitnessMode)
 {
 }