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: 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]).each_cons(2){|a,b| a,b=CITIES,CITIES d += Math.sqrt( (a-b)**2 + (a-b)**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)

Required Ruby Version

None

Authors

Sander Land

Versions

  1. 0.8.1 February 11, 2009 (219 KB)
  2. 0.8.0 February 11, 2008 (204 KB)
  3. 0.7.1 January 11, 2008 (199 KB)
  4. 0.7.0 January 10, 2008 (199 KB)
  5. 0.6.0 December 25, 2007 (85.5 KB)
Show all versions (6 total)

SHA 256 checksum