From: Sander Land Date: 2007-12-27T01:42:08+09:00 Subject: [ANN] charlie 0.6.0 Released - A genetic algorithms library. Hi all, I'm pleased to announce the second public release of charlie, a genetic algorithms library for Ruby. This release includes a TreeGenotype, making the library useful for genetic programming. This is still an early version with very limited mutation options, and I would really appreciate suggestions on how to extend these. It also includes several performance improvements, changes for ruby 1.9, convergence checks and improved mutator/crossover operators for permutations. ## Ruby 1.9 Compatibility This release is mostly compatible with Ruby 1.9. However, there is a bug in Ruby (#16493) that makes a lot of tests, and some benchmark examples fail. To avoid this bug, don't have two or more results of a function that returns a module in the same array (e.g. don't have something like "crossover PCross(0.5,SinglePointCrossover), PCross(0.5,UniformCrossover)" in your benchmarks). ## 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 ## EXAMPLE 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) Several other simple examples are included in the gem/tarball. ## INSTALLATION: * sudo gem install charlie ## Links * http://rubyforge.org/projects/charlie/ * http://charlie.rubyforge.org ## LICENSE: MIT license.