[ANN] Watchmaker Framework for Evolutionary Algorithms version 0.1 (first public release)

D

Daniel Dyer

Version 0.1 of the Watchmaker Framework for Evolutionary Algorithms is
available for download from the project page
(https://watchmaker.dev.java.net/). The framework requires Java 5.0 and a
familiarity with generics.

I have also uploaded the first draft of the first two parts of a tutorial
on how to use the framework to implement evolutionary algorithms in Java:

Part 1 - https://watchmaker.dev.java.net/tutorial1.html
Part 2 - https://watchmaker.dev.java.net/tutorial2.html

This all still very much work-in-progress, but feel free to download and
play, and to make comments and suggestions for improvements to both the
software and tutorial.

Dan.
 
O

Oliver Wong

Daniel Dyer said:
Version 0.1 of the Watchmaker Framework for Evolutionary Algorithms is
available for download from the project page
(https://watchmaker.dev.java.net/). The framework requires Java 5.0 and a
familiarity with generics.

I have also uploaded the first draft of the first two parts of a tutorial
on how to use the framework to implement evolutionary algorithms in Java:

Part 1 - https://watchmaker.dev.java.net/tutorial1.html
Part 2 - https://watchmaker.dev.java.net/tutorial2.html

This all still very much work-in-progress, but feel free to download and
play, and to make comments and suggestions for improvements to both the
software and tutorial.

How about a candidate factory which generates a random XML document
which complies to a provided XSD? Or a subset might be handy (e.g. include
elements, and perhaps attributes, but no CDATA, processor instructions,
comments, etc.) Basically, something to generate a tree from a well defined
grammar (XML's the simplest implementation of this that came to mind).

- Oliver
 
D

Daniel Dyer

How about a candidate factory which generates a random XML document
which complies to a provided XSD? Or a subset might be handy (e.g.
include elements, and perhaps attributes, but no CDATA, processor
instructions, comments, etc.) Basically, something to generate a tree
from a well defined grammar (XML's the simplest implementation of this
that came to mind).

It's a possibility. What kind of problems do you envisage applying this
to?

There's tree-based stuff in genetic programming, which I haven't really
given much thought to yet, though I'd like to incorporate it at some
point. I guess your suggestion would fit in quite nicely with this.

Dan.
 
O

Oliver Wong

Daniel Dyer said:
It's a possibility. What kind of problems do you envisage applying this
to?

Generating random programs/algorithms to solve a given problem.
Honestly, though, I haven't put much thought into this, so I'm not sure how
feasible it would be. If I had to undertake this task, I'd probably try to
generate code for a functional language with zero side effects (so variable
assignments don't exist, and so variables don't exist, and so I don't have
to worry about checking that a variable is declared before it's used, for
example).

An easy mutation scheme would be to select a random point in the tree,
discard everything below it, and generate a new subtree branch. The problem
with that is that the degree of "mutancy" depends on how high up in the tree
the random point is chosen, and depending on the grammar, there may be zero
randomness involved in selecting the children below a certain point. I'm not
sure how one would implement cross-over with trees, however. Did you
implement cross-over for permutations, and if so, how did you do it?

- Oliver
 
D

Daniel Dyer

Generating random programs/algorithms to solve a given problem.
Honestly, though, I haven't put much thought into this, so I'm not sure
how feasible it would be. If I had to undertake this task, I'd probably
try to generate code for a functional language with zero side effects
(so variable assignments don't exist, and so variables don't exist, and
so I don't have to worry about checking that a variable is declared
before it's used, for example).

The functional idea is one that had occurred to me too, though I haven't
really considered it beyond "hey, maybe I could evolve Haskell
programs...". http://www.genetic-programming.org/ has a lot of detail
about evolving programs.
An easy mutation scheme would be to select a random point in the
tree, discard everything below it, and generate a new subtree branch.
The problem with that is that the degree of "mutancy" depends on how
high up in the tree the random point is chosen, and depending on the
grammar, there may be zero randomness involved in selecting the children
below a certain point. I'm not sure how one would implement cross-over
with trees, however. Did you implement cross-over for permutations, and
if so, how did you do it?

When implementing an EA for the travelling salesman problem, I used only
mutation for the permutations. However, ordered cross-over operations are
possible (see http://www.permutationcity.co.uk/projects/mutants/tsp.html
for an example).

Dan.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top