Charlie 0.7.0 Released - A genetic algorithms library

Hi all,

I’m pleased to announce another release of charlie, a genetic
algorithms library for Ruby.

This release extends the options for TreeGenotype, making the library
more useful for genetic programming.
It also includes full Ruby 1.9 compatibility, as well of a variety of
smaller changes.

There has been no feedback at all on the previous releases. If you
find anything is not working, important features are missing, or have
any other comments, please let me know.


  • Quickly develop GAs by combining several parts (genotype, selection,
    crossover, mutation) provided by the library.
  • Sensible defaults are provided with any genotype, so often you only
    need to define a fitness function.
  • Easily replace any of the parts by your own code.
  • Test different strategies in GA, and generate reports comparing them.


This example finds a polynomial which approximates cos(x)

class Cos < TreeGenotype([proc{rand},:x], [:-@], [:+,:*,:-])
def fitness
-[0,0.33,0.66,1].map{|x| (eval_genes(:x=>x) - Math.cos(x)).abs }.max
use TournamentSelection(4)

Several other examples are included in the gem/tarball.


  • sudo gem install charlie



MIT license.

Version 0.7.1 was just released. It fixes a bug with RouletteSelection
and ScaledRouletteSelection.
This bug was present in all previous versions, and significantly
decreased the convergence speed of these selection algorithms.