Class Ai4r::GeneticAlgorithm::GeneticSearch
In: lib/ai4r/genetic_algorithm/genetic_algorithm.rb
Parent: Object

This class is used to automatically:

  1. Choose initial population
  2. Evaluate the fitness of each individual in the population
  3. Repeat
        1. Select best-ranking individuals to reproduce
        2. Breed new generation through crossover and mutation (genetic operations) and give birth to offspring
        3. Evaluate the individual fitnesses of the offspring
        4. Replace worst ranked part of population with offspring
  4. Until termination

If you want to customize the algorithm, you must modify any of the following classes:

  - Chromosome
  - Population

Methods

Attributes

population  [RW] 

Public Class methods

Public Instance methods

Select the best chromosome in the population

Replace worst ranked part of population with offspring

We combine each pair of selected chromosome using the method Chromosome.reproduce

The reproduction will also call the Chromosome.mutate method with each member of the population. You should implement Chromosome.mutate to only change (mutate) randomly. E.g. You could effectivly change the chromosome only if

    rand < ((1 - chromosome.normalized_fitness) * 0.4)
  1. Choose initial population
  2. Evaluate the fitness of each individual in the population
  3. Repeat
       1. Select best-ranking individuals to reproduce
       2. Breed new generation through crossover and mutation (genetic operations) and give birth to offspring
       3. Evaluate the individual fitnesses of the offspring
       4. Replace worst ranked part of population with offspring
    
  4. Until termination
  5. Return the best chromosome

Select best-ranking individuals to reproduce

Selection is the stage of a genetic algorithm in which individual genomes are chosen from a population for later breeding. There are several generic selection algorithms, such as tournament selection and roulette wheel selection. We implemented the latest.

Steps:

  1. The fitness function is evaluated for each individual, providing fitness values
  2. The population is sorted by descending fitness values.
  3. The fitness values ar then normalized. (Highest fitness gets 1, lowest fitness gets 0). The normalized value is stored in the "normalized_fitness" attribute of the chromosomes.
  4. A random number R is chosen. R is between 0 and the accumulated normalized value (all the normalized fitness values added togheter).
  5. The selected individual is the first one whose accumulated normalized value (its is normalized value plus the normalized values of the chromosomes prior it) greater than R.
  6. We repeat steps 4 and 5, 2/3 times the population size.

[Validate]