General genetic algorithms for Ruby
Ruby CSS
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
test
web
.gitignore
Gemfile
Gemfile.lock
Manifest.txt
README.md
Rakefile
gga4r.gemspec

README.md

gga4r - General Genetic Algorithm for Ruby

##Introduction

General Genetic Algorithm for Ruby is a Ruby Genetic Algorithm that is very simple to use:

  1. Take a class to evolve it and define fitness, recombine and mutate methods.
class StringPopulation < Array
  def fitness
    self.select { |pos| pos == 1 }.size.to_f / self.size.to_f
  end

  def recombine(c2)
    cross_point = (rand * c2.size).to_i
    c1_a, c1_b = self.separate(cross_point)
    c2_a, c2_b = c2.separate(cross_point)
    StringPopulation.new(c1_a + c2_b)
  end

  def mutate
    mutate_point = (rand * self.size).to_i
    self[mutate_point] = 1
  end
end
  1. Create a GeneticAlgorithm object with the population.
def create_population_with_fit_all_1s(s_long = 10, num = 10)
    population = []
    num.times  do
      chromosome = StringPopulation.new(Array.new(s_long).collect { (rand > 0.2) ? 0:1 })
      population << chromosome
    end
    population
end

ga = GeneticAlgorithm.new(create_population_with_fit_all_1s)
  1. Call the evolve method as many times as you want and see the best evolution.
100.times { |i|  ga.evolve }
p ga.best_fit[0]

##Install

  1. Execute:
gem install gga4r
  1. Add require in your code headers:
require "rubygems"
require "gga4r"

##Documentation

Documentation can be generated using rdoc tool under the source code with:

rdoc README lib

##Contributors

##Copying

This work is developed by Sergio Espeja ( www.upf.edu/pdi/iula/sergio.espeja, sergio.espeja at gmail.com ) mainly in Institut Universitari de Lingüística Aplicada of Universitat Pompeu Fabra ( www.iula.upf.es ), and also in bee.com.es ( bee.com.es ).

It is free software, and may be redistributed under GPL license.