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
|