Watchmaker 0.7.0

An object-oriented framework

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!

What's new in Watchmaker 0.6.2:

  • Fix for thread leak in ConcurrentEvolutionEngine (ISSUE#16). Added a finalizer to shutdown the thread pool in FitnessEvaluationWorker so that the active threads do not inhibit garbage collection.
  • Made the FitnessEvaluationWorker in ConcurrentEvolutionEngine static so that it can be shared by all instances avoiding the unnecessary creation of new thread pools (ISSUE#16).
  • Made fitness evaluation threads daemons again (as in 0.6.0). Only standalone (i.e. Terracotta) FitnessEvaluationWorkers now use non-daemon threads. This fixes the problem of the JVM not exiting when the program is finished (ISSUE#17).
  • Better thread naming for fitness evaluation worker threads.
Read full changelog
send us
an update
The Apache License 2.0 
3.3/5 15
Daniel W. Dyer
ROOT \ Science and Engineering \ Artificial Intelligence
Watchmaker is an extensible, high-performance, object-oriented framework for implementing platform-independent evolutionary algorithms (EAs) in Java. The framework provides type-safe, non-invasive evolution for arbitrary representations.

Here are some key features of "Watchmaker":

- Multi-Threaded Evolution Engine - Takes advantage of parallelism to improve performance on multi-core and multi-processor machines.
- Ultra-Fast Random Number Generators - The Uncommons Maths library provides the high-quality, high-performance random number generators (RNGs) used by the Watchmaker Framework. Other third-party RNGs can also be used if required.
- Non-Invasive - Objects of any type can be evolved without the evolvable class having to implement a particular interface or extend from a common base class. This means that there are no restrictions on the implementation of the evolvable type and no dependencies on any framework classes. The evolvable type is completely decoupled.
- Pluggable Selection Strategies - Roulette Wheel Selection, Tournament Selection, Rank Selection, Truncation Selection and Stochastic Universal Sampling are all provided. Alternatively, you can implement your own selection strategy quickly and easily.
- Flexible Evolution Schemes - The evolution process can be as simple or as complicated as you like. A single step or several operators combined in sequence and/or with branching. Use the provided operators, implement your own, or use a combination of both.
- Re-usable Operators for Common Types - Cross-over and mutation implementations for several data types including strings, arrays and lists.
- Interactive Evolutionary Algorithms - Support for user-guided selection makes the framework suitable for applictions in which defining an adequate fitness function is difficult, such as evolutionary art and evolutionary music.

A working knowledge of Java 5 or later is assumed (including a basic understanding of generics). Using the framework, simple evolutionary algorithms can be developed by implementing just a few methods.

Please feel free to suggest new features and enhancements.

Last updated on December 15th, 2009

#Evolution Engine #evolutionary algorithms #development framework #Evolution #Java #algorithms #framework

Add your review!