| 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.
|
|
|