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:[EMAIL PROTECTED] > 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 <[EMAIL PROTECTED]> wrote: > > ----- Original Message ---- > > > From: Phil Steitz <[EMAIL PROTECTED]> > > > 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: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]