Files | Admin

Notes:

Release Name: 0.8.1

Notes:
== DESCRIPTION:
Charlie is a library for genetic algorithms (GA) and genetic programming (GP).

== FEATURES:
- 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.  Example report: http://charlie.rubyforge.org/example_report.html

== INSTALL:
* sudo gem install charlie

== EXAMPLES:
This example solves a TSP problem (also quiz #142):
 N=5
 CITIES = (0...N).map{|i| (0...N).map{|j| [i,j] } }.inject{|a,b|a+b}
 class TSP < PermutationGenotype(CITIES.size)
   def fitness
     d=0
     (genes + [genes[0]]).each_cons(2){|a,b| 
        a,b=CITIES[a],CITIES[b]
        d += Math.sqrt( (a[0]-b[0])**2 + (a[1]-b[1])**2 ) 
      }
     -d # lower distance -> higher fitness.
   end
   use EdgeRecombinationCrossover, InversionMutator
 end
 Population.new(TSP,20).evolve_on_console(50)

This example finds a polynomial which approximates cos(x)
 class Cos < TreeGenotype([proc{3*rand-1.5},:x], [:-@], [:+,:*,:-])
   def fitness
    -[0,0.33,0.66,1].map{|x| (eval_genes(:x=>x) - Math.cos(x)).abs }.max
   end
   use TournamentSelection(4)
 end
 Population.new(Cos).evolve_on_console(500)


Changes: == 0.8.1 * Added PartiallyMappedCrossover for permutations, thanks to Nikos Dimitrakopoulos * Fixed small incompatibility with activesupport, also thanks to Nikos. * Fixed typo in ThreePointCrossover [bug:19743] * Small fix for compatibility with Ruby 1.9.1 == 0.8.0 / 2008-02-12 * Added BlendingCrossover * Benchmark setup/teardown blocks * Made population inherit array * Support for GP-style evolution (never apply both crossover and mutation) * Co-evolution with small tournaments, iterated prisoner's dilemma example. * Added evolve_multiple* methods * Added support for matrix genotypes, 2-d arrays of floats or bits. * Added a genotype for neural networks