eaLib - a Java Evolutionary Computation Toolkit
About
eaLib is Java class library for implementing evolutionary algorithms. The library is part of my work as a Ph.D. student at Technical University of Ilmenau. To be able to work with the library, knowledge about evolutionary algorithms is necessary, so an overview over the library can not be given with only a few lines of text. A manual for the library is in the works, experts can take a look at the API here.
This work is sponsered by the DFG, the central public funding organization for academic research in Germany and is therefore indirectly sponsered by the german tax payers. For this reason I decided to offer the library to the (at least german ;-) ) public at no cost. The library will be and remain free for any non-commercial use. As of version 0.2 eaLib is dual-licensed. The source is available under GPL, while there is an additional license for potential commercial users. Although a commercial version is not available at the moment, this may change in the future. With the new license it is possible to use the software in commercial applications. Any comments on dual-licensing are welcome.
The library is currently in an experimental state. It is very likely, that there will be bugs, uncaught exceptions, deadlocks and missing or incorrect information in the API documentation. So because there is no user manual at the moment and you have questions regarding the use of library, found a bug or strange behaviour of genetic operators, DON'T HESITATE TO ASK. Send me an EMail and I will try to help you as fast as possible.
News
05-21-2003:
The development on eaLib is now ceased - but not dead; it has been shifted to a successor: Evolvica. A new project with a new name and its own domain... :-). There were several things in eaLib that I was not happy with, basically because they were too complicated to be used by a person != the developer. So I took a long break to think about a new and simpler structure for the framework. The result is Evolvica that is currently under development. It will preserve the flexibility of the operator-based concept introduced in eaLib, but will be easier to program. And beyond that it will get a graphical user interface for visual composition of evolutionary algorithms.
These pages will stay at this location, but will not be updated any longer.
06-10-2002:
I have found some time for eaLib in the last weeks - the result is version 0.3.2. This new version includes some small bugfixes. A major change is the introduction of a single threaded mode. This should speed up things a little bit. The mode can be enabled by setting the configuration key mss.ea.al.AbstractAlgorithm.enableMultiThreading to the value "false". This is also a workaround for the famous bug #2.
03-25-2002:
Version 0.3.1 brings some minor improvements in exception handling. Now it is possible to turn on printing of the stack trace of an exception. This makes it much easier to debug operators. Another change concerns the interface of individual sinks. Two methods for accessing the contents of a sink have been added.
03-12-2002:
Version 0.3 is finally ready. There are not many improvements, instead this release is a major code cleanup. That's why the list of changes (see ChangeLog) is quite long. The most important thing first: 0.3 is incompatible to previous releases. The individual stream structures have been replaced by individual collections. This brings a much tighter integration with the Java Collection Framework. This enables other data structures to be used (for instance matrices). The same is valid for populations. The configuration of the package via XML config-file has been improved and several options have been added. Just look at the file src/mss/ea/conf/ preferences.xml for an overview. Classes supporting the old thread model have been removed. The model introduced in version 0.2 has proved to be quite stable (except for bug #2). Chromosome is not an abstract class any longer, it has turned into an interface. User-defined chromosome classes must extend AbstractChromosome now. The same is valid for chromosome sets. I am glad with the current state of the API and the underlying data structures. I do not plan to make any greater changes in the future. The development will now concentrate on fixing bug and improving documentation.
02-07-2002:
No, the development on eaLib hasn't stopped. There wasn't a new release for a couple of weeks, but this will change. There were two development branches, one for the upcoming 0.3 release and one for replacing the individual streams by generic collections. This was started to achieve a tighter integration with the Java Collection Classes. This branch has been merged now into the 0.3 development branch. The 0.3 release will not bring any new great features - instead it will be a major code cleanup. After merging both branches the cleanup is almost done, so the 0.3 release comes closer. Unfortunately the API has changed in several classes, so new releases will not be compatible to older ones.
01-03-2002:
The new year starts with a new release of eaLib - version 0.2.4 is out. This is mainly another bugfix release before 0.3. Refer to the changelog for more information.
12-11-2001:
Only one day since the last version of eaLib and here's the next. I fixed a serious bug in all tournament selection operators, which caused the wrong individuals appended to the output stream as tournament winners.
12-10-2001:
Another minor release of eaLib : version 0.2.3. There are several small improvements in the evaluation and selection package. Furthermore some bugs have been fixed. See the ChangeLog for more information about them. The algorithm package now supports conduits as algorithm elements. But there are bad and good news about that : unfortunately the support of conduits revealed a heavy bug: conduits cannot be connected to mergers directly. Because of a design mistake a merger is not able to find out the point of time when all outputs of the conduit 'fired' messages. The consequence is an endless loop - the running algorithm will hang. There is no chance to fix this because of missing information on which 'wire' a message passes from one element to the next. For a fix a restructuring of the message system is necessary - and at the moment I do not have enough time to do this. But now for the good news: there is a very simple workaround. Just put connectors between the conduit and the mergers. I added a 'null connector' that does simply nothing - this operator fits well in this task. I am not sure if there will be a 0.2.4 release before 0.3 - maybe if it's necessary. The 0.3 release will not introduce any great features - it will be a major code clean-up. All classes supporting the old thread model will be removed. There is no need to support the model any longer because the new model proved its usefulness and works stable (except for one bug, which is very hard to track down).
11-27-2001:
Put up a bugfix version of eaLib. An incorrect loop caused an Out-Of-Memory error.
11-26-2001:
I released eaLib Version 0.2.2. The promised implementation of a stream merger has been done. Now streams can be split up and merged together. The use of a merger is shown in an example. Major improvements have been done in serialization. A number of classes in the core package is now serializable. Several operators have been added which allow the serialization of individual streams to binary, XML and plain ASCII files. In the package ini some operators can be found which allow the restoration of the streams from these files again. In the examples subdirectory two small examples have been added.
11-20-2001:
This tuesday brings the release of eaLib 0.2.1. This is a minor release which adds the feature of multi casting genetic operators. I also added a rudimentary user manual. There are a lot sections still missing, but some have been written and may be already useful.
11-15-2001:
The eaLib page now contains a link to some questions and answers. This section will grow in the future.
11-13-2001:
eaLib Version 0.2 has been released. This version brings a complete rewrite of the thread communication model. The new model is a simple message passing system. The communication of the threads should be safer now and - it is faster ! It is also the next step in the direction of distributing algorithms. Another thing that has changed is the license model. eaLib is now dual-licensed. The source is available under GPL, while there is an additional license for potential commercial users. Although a commercial version is not available at the moment, this may change in the future. With the new license it is possible to use the software in commercial applications. Any comments on dual-licensing are welcome.
11-07-2001:
The release of eaLib v0.2 comes closer. In the last week I spent quite a lot of my time rewriting the thread communication model. This will probably bring some performance enhancements. And chances are good that the source code will be released along with the library.
09-13-2001:
eaLib Version 0.1.1 has been released. This is mainly a bug fix, although some features have been added. Refer to the ChangeLog for details.
08-28-2001:
eaLib Version 0.1 released .. finally ! Give it a shot {here}.
06-12-2001:
I am back from this year's holidays and spent the last weeks working on eaLib. Things are getting much clearer and eaLib is nearly in a state, in that I can do the initial release. In the last weeks I added thread support, so the kind of algorithm creation changed a little bit. But it works and I am pleased with it. This is a good moment to update the API pages.
02-01-2001:
The API page of eaLib is up-to-date again. The library still grows and contains at the moment 150 classes. But still I am not sure about a release date. Some things do not look very elegant ..
ChangeLog
The changelog is available here.
License
A draft of the commercial license is available here.
Download
If you have read the license agreement, you can download eaLib here on this page. Note that eaLib is currently in an experimental state. So there will be bugs, uncaught exceptions, deadlocks and missing or incorrect information in the documentation. If you can accept these conditions you can click on the download link below. I strongly do not recommend the use of eaLib in a production environment !

DOWNLOAD eaLib Version 0.3.2 Binary Distribution (06-10-2002)
DOWNLOAD eaLib Version 0.3.2 Source Distribution(06-10-2002)

DOWNLOAD eaLib Version 0.2.4 Binary Distribution (01-03-2002)
DOWNLOAD eaLib Version 0.2.4 Source Distribution(01-03-2002)

Valid HTML 4.01
last modified:
Little Cow