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
- 0.8.1 February 11, 2009This gem version was imported to RubyGems.org on July 25, 2009. The date displayed was specified by the author in the gemspec. (219 KB)
- 0.8.0 February 11, 2008This gem version was imported to RubyGems.org on July 25, 2009. The date displayed was specified by the author in the gemspec. (204 KB)
- 0.7.1 January 11, 2008This gem version was imported to RubyGems.org on July 25, 2009. The date displayed was specified by the author in the gemspec. (199 KB)
- 0.7.0 January 10, 2008This gem version was imported to RubyGems.org on July 25, 2009. The date displayed was specified by the author in the gemspec. (199 KB)
- 0.6.0 December 25, 2007This gem version was imported to RubyGems.org on July 25, 2009. The date displayed was specified by the author in the gemspec. (85.5 KB)