------art_20716_4602529.1198145494901
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Excellent, I've been wanting such a library for a while now. Cheers!

On 19/12/2007, hemant <gethemant / gmail.com> wrote:
>
> On Dec 19, 2007 11:22 PM, Sander Land <sander.land / gmail.com> wrote:
> > Hi all,
> >
> > I'm pleased to announce the first public release of charlie, a genetic
> > algorithms library for Ruby.
> >
> > ## 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:  (also at http://pastie.caboo.se/130559 with better
> formatting)
> > This example finds the binary representation of the number 512.
> >
> >  require 'rubygems'
> >  require 'charlie'
> >  class Find512 < BitStringGenotype(10) # choose a genotype, in this
> > case a list of 10 bits represents a solution
> >    # Define a fitness function. This one returns minus the offset to
> > the best solution, so a higher number is better.
> >    # Usually, you won't know the best solution, and will define this
> > as some value that needs to be maximized.
> >    def fitness
> >      # Use the 'genes' function to retrieve the array of bits
> > representing this solution.
> >      -(genes.map(&:to_s).join.to_i(2) - 512).abs
> >    end
> >  end
> >  # Finally, create an instance of a population (with the default size
> > of 20) and let it run for the default number of 100 generations.
> >  Population.new(Find512).evolve_on_console
> >
> > ## RUBYQUIZ #142 SOLUTION:
> > I know, it's a bit late. ;)
> >
> >  require 'rubygems'
> >  require 'charlie'
> >  NP> >  CITIES  0...N).map{|i| (0...N).map{|j| [i,j] } }.inject{|a,b|a+b}
> >  class TSP < PermutationGenotype(CITIES.size)
> >    def fitness
> >      d> >      (genes + [genes[0]]).each_cons(2){|a,b|
> >         a,bIES[a],CITIES[b]
> >         d + ath.sqrt( (a[0]-b[0])**2 + (a[1]-b[1])**2 )
> >       }
> >      -d # lower distance -> higher fitness.
> >    end
> >  end
> >  pop  opulation.new(TSP,20).evolve_on_console(50)
> >
> > 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
> >
>
> Awesome work!
>
> Going to check it out.. Thanks.
>
>
>
> --
> Let them talk of their oriental summer climes of everlasting
> conservatories; give me the privilege of making my own summer with my
> own coals.
>
> http://gnufied.org
>
>

------art_20716_4602529.1198145494901--