Here's an framework for evolutionary algorithms (EA not GA)
> http://dishevelled.org/evolve
Generic in the sense that individuals don't need be "chromosomes";
mutation, recombination, and selection are provided through functors.
LGPL version 3, but I am the only contributor.
michael
On Sun, 30 Mar 2008, Brent Worden wrote:
> Here's a little code I've had laying around for a few years.
>
> http://people.apache.org/~brentworden/genetics.zip
>
> Feel free to use, modify, or throw away as you see fit.
>
> Brent
>
> -----Original Message-----
> From: Phil Steitz [mailto:phil.steitz@gmail.com]
> Sent: Sunday, March 30, 2008 12:31 AM
> To: Jakarta Commons Developers List
> Subject: Re: [math] Genetic Algorithms
>
> On Sat, Mar 29, 2008 at 6:15 PM, Al Chou <hotfusionman@yahoo.com> wrote:
> > ----- Original Message ----
> > > From: Phil Steitz <phil.steitz@gmail.com>
> > > To: Jakarta Commons Developers List <dev@commons.apache.org>
> > > Sent: Saturday, March 29, 2008 5:53:47 PM
> > > Subject: [math] Genetic Algorithms
> > >
> > > I would like to start work on a GA framework. This has been on the
> > > WishList for some time and I now have a TLS type problem that I am
> > > working on that is enough motivation for me personally to get
> things
> > > rolling. Here are some rough ideas on what I have in mind. As
> > > always, feedback / suggestions / patches appreciated.
> >
> > Resurfacing for a moment, I wonder if it would make sense to approach
> an existing project that is open source but not GPL'ed to see if if
> could be folded into Commons-Math. I've found two candidates that meet
> these two criteria (and another that was under LGPL I believe, which I
> haven't copied here):
> >
> > http://jgap.sourceforge.net/
>
> This looks like GPL with BSD as an option in exchange for $. Would
> have to be relicensed.
> >
> > http://cs.gmu.edu/~eclab/projects/ecj/ (university project, no
> license explicitly mentioned)
>
> Academic Free License ("AFL") v. 3.0 - don't know if this is
> ASL-compatible or not. Looks like the PRNG impls include some NR
> code, so all would have to be carefully vetted. Also would have to
> get clearance from what looks like a large list of contributors.
>
> Of course we are open to any and all contributions and contributors.
> I would personally rather spend my time developing a small, clean-room
> implementation than chasing down code grants, CLAs and commitment to
> support; but by all means if you or anyone else are interested in
> enlisting more volunteers, I am +1 for that. We just need to make
> sure that we do not end up taking on code without volunteers to join
> our community and support it or encumbered code.
>
> In the mean time, I will keep playing with the ideas above and welcome
> input or patches. I do not see this as a large amount of code and
> would for my personal uses like very much to have a small ASL-licensed
> framework with no dependencies outside of [math] (but all the
> capabilities of [math] available for use by the framework and client
> code).
>
> Phil
>
> >
> >
> > Al
> >
> >
> >
> >
> > > 0) Scope - a framework for implementing genetic algorithms, as
> > > described in e.g. [1], [2].
> > > 1) Usage / what the framework provides - user classes should
> implement
> > > minimally encoding and objective functions. Stock mutation,
> crossover
> > > and selection functions operating on binary encodings should be
> > > provided by the framework, as well as execution of the algorithm,
> but
> > > user classes should be able to plug in custom encoding, mutation,
> > > crossover, and selection. Objective and other functions should
> also
> > > be allowed to have parameters, which the framework will somehow
> gather
> > > and pass in to them.
> > > 2) Other - the framework should not require that populations be
> stored
> > > in memory and it should support parallelization of population
> > > processing functions
> > > 3) Package - o.a.c.math.genetic (I am open to putting this inside
> > > optimization, but think flatter might be better here).
> > > 4) Structure straw man:
> > > Chromosomes - Chromosome interface includes mutate(),
> > > crossover(Chromosome) and fitness(). AbstractBinaryChromosome
> > > includes stock implementations of mutate and crossover for binary
> > > encodings.
> > > Populations - Population interface provides a Chromosome Iterator,
> > > select(long), add(Chromosome), delete(Chromosome). Abstract
> classes
> > > provide Roulette, Tournament, other select implementations for
> > > Populations backed / not backed by in memory collections and I/O /
> > > storage management.
> > > GeneticAlgorithm - implements GA (following "canonical algorithm"
> as
> > > described in [2]) given initial Population and configured sampling
> > > rate and stopping criteria (maximum iterations, convergence
> criteria).
> > > Population and Chromosome classes determine the heuristics.
> Should
> > > (eventually at least) support parallel execution by worker threads
> of
> > > breeding operations.
> > >
> > > This may be naive and I may find that out as I start playing with
> real
> > > code. As I said, feedback / patches welcome. One thing I don't
> have a
> > > clean idea for is how to make optional parameters available to all
> > > methods mentioned above.
> > >
> > > Phil
> > >
> > > [1] http://en.wikipedia.org/wiki/Genetic_algorithm
> > > [2] http://samizdat.mines.edu/ga_tutorial/ga_tutorial.ps
> >
> >
> >
> >
> >
> >
> >
> ________________________________________________________________________
> ____________
> > You rock. That's why Blockbuster's offering you one month of
> Blockbuster Total Access, No Cost.
> > http://tc.deals.yahoo.com/tc/blockbuster/text5.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
|