Watchmaker is an object-oriented framework for implementing platform-independent evolutionary algorithms (EAs) in Java.
Version: 0.4.3Watchmaker 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.
License: The Apache License 2.0
Operating System: Linux
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.
What's New in This Release:
· Introduced Utilities module.
· Extracted Uncommons Maths module into separate project (see https://uncommons-maths.dev.java.net).
· Added new constructor to BitString to simplify the creation of random bit strings.
· Improved algorithm for countSetBits() in BitString. New version is significantly faster (10-15 times faster).
· Moved BitString class from Framework module into Uncommons Maths.
· Added new termination condition to detect when the evolution has stagnated (i.e. the fitness has not improved for a certain number of generations).
· Moved the the Swing-specific classes from the framework module into what was the Uncommons GUI module, which is now the Watchmaker Swing module.
· Introduced experimental Evolution Monitor swing component.