http://cs.cug.edu.cn/teacherweb/lichanghe/pages/EAlib.html
Welcome to Changhe Li's EAlib Page
About Me | News | Research | Teaching | Publications | EAlib | Downloads | Funding | Links |
LIBRARY OF EVOLUTIONARY ALGORITHMS
This is an open sources project with the aim of providing the source codes of state-of-the-art algorithms, problems, and algorithms' performance metrics for researchers in the area of evolutionary computation. Based on this framework, you can easily implement your ideas and add the codes into this library. More important, you will be also able to compare with other state-of-the-art algorithms without implementing them under a fair environment. In addition, this library will be updated as time goes on when new algorithms and problems come to this research area. Anyone, who want to contribute to this project, is welcome, and please contact me without hesitation.
This project is totally for research purpose. As a researcher in the area of evolutionary computation, I know how bad it is if there is no source codes available for the algorithm you want to compare with your own method. It may spend weeks to find out why the results you got are not as good as the results provided in the original paper. The worst case is that you just can not figure out the reason even though you spend weeks. There are many reasons: not enough details available of the algorithm, different implementations, using different languages, the stochastic characteristic of EAs ..., etc. Therefore, here comes the motivation to build up a standard platform for you to carry out experiments. I believe that this project would clear the way for your research and save you a lot of time. Well, in a word, I would like to encourage you to take part in this project and let's together make the research life easy, comfortable, and efficient for you and someone else.
This library was implemented in C++ language, it has three basic components: algorithms, problems, and algorithms' performance evaluation. The class structure is as follows:
Algorithms:
This module provides basic templates for variant EAs. The module includes three basic classes: the Chromosome,Individual, and Population classes. Functions and descriptions of them are as follows.
The Chromosome class: The most fundamental class, represents a solution of a problem and is able to take composite encoding scheme,e.g., A b 1.23 ! & true 59. It was designed based on problems' representation.
The Individual class: A simple template individual class, provides some basic operations for a single individual with variant individuals of different algorithms.
The Population class: A template population class, provides some basic operations for a population
Problems:
This module collects some benchmark problems used for the performance evaluation for EAs in different research topics. Currently, it has two types of problems, function optimization problems (FOPs) and dynamic optimization problems(DOPs).
Problem .................................................... the base class for all problems
|
+BenchmarkFunction ........................................ the base class for all function optimization problems
| |
| +FSphere ................................................ the Sphere function f(x)=x*x
+DynamicProblem ........................................... the base class for dynamic optimization problems(DOPs)
|
+DynamicContinuous ...................................... the base class for DOPs in continuous space
|
+RealDB G.............................................. the base class for GDBG benchmark
| |
| +CompositionDBG ..................................... the Composition problems in GDBG
| |
| +RotationDBG ......................................... the Rotation problems in GDBG
|
+MovingPeak ............................................ the Moving Peaks problem
|
+DF1 ................................................... the DF1 problem
Performance metrics:
PerformSingleObj ...............................................the performance measurement for single objective optimization problem
Other major files:
Global.h ........................................................ class for global variables
StructDec.h ..................................................... struct declaration file
newran.h ........................................................ random number generator: From library http://www.robertnz.net/nr02doc.htm
Instruction for new algorithms and new problems
To add a new algorithm:
Take a simple PSO algorithm as an example, you need to develop two classes, which are: PSOIndividual: public Individual and PSOPopulation: public Population<PSOIndividual> , then follow the steps described in the beginning of the main function in main.cpp file to run the new algorithm.
To add a new problem:
If a new problem is to be added into this lib, you need to implement it under a proper position in the Problem class. In addition, encoding and decoding work must be done in the Chromosome.cpp file if a new solution representation is needed to describe the problem.
Each algorithm and problem has a unique ID, please assign an ID to an algorithm or a problem when they are added.
Development:
You can develop your algorithms in both Visual studio 2010 in Windows and CODE::BLOCK in Ubuntu, corresponding project files are EAlib.sln and EAlib.cbp, respectively. A makefile is also available to compile the program. If you have any question about this library, please contact Changhe Li with [email protected].
Algorithms collected so far:
This lib has included some algorithms from different research areas, which are listed below:
Problems collected so far:
Please find the description of the above problems in the corresponding files in the library.
Coming algorithms:
To download the EAlib, please click here(updated 20 July 2012).
Contributors:
Ming Yang