Algorithm::Evolutionary - Perl module for performing paradigm-free evolutionary algorithms.
#Short way of loading a lot of modules, POE-style use Algorithm::Evolutionary qw( Op::This_Operator Individual::That_Individual Fitness::Some_Fitness); # other modules with explicit importation use Algorihtm::Evolutionary::Utils (this_util that_util);
Algorithm::Evolutionary is a set of classes for doing object-oriented evolutionary computation in Perl. Why would anyone want to do that escapes my knowledge, but, in fact, we have found it quite useful for our own purposes. Same as Perl itself.
Algorithm::Evolutionary
The main design principle of Algorithm::Evolutionary is flexibility: it should be very easy to create your own evolutionary algorithms using this library, and it should be also quite easy to program what's already there in the evolutionary computation community. Besides, the library classes should have persistence provided by YAML.
The module allows to create simple evolutionary algorithms, as well as more complex ones, that interface with databases or with the web.
The project has been, from version 0.79, moved to GitHub. Latest aditions, and nightly updates, can be downloaded from there before they are uploaded to CPAN. That page also hosts the mailing list, as well as bug reports, news, updates, work in progress, lots of stuff.
In case the examples are hidden somewhere in the .cpan directory, you can also download them from the git repository. You can also get help from the project issues.
.cpan
It might be also helpful for you to check out Still doing evolutionary algorithms with Perl, a gentle introduction to evolutionary algorithms in general and working with them using this module in particular.
I have used this library continously for my research all these year, and any search will return a number of papers; a journal article is already submitted, but meanwhile if you use it for any of your research, I would be very grateful if you quoted papers such as these (which are, of course, available under request or from your friendly university librarian):
@article {springerlink:10.1007/s00500-009-0504-3, author = {Merelo Guervós, Juan-Julián and Castillo, Pedro and Alba, Enrique}, affiliation = {Universidad de Granada Depto. Arquitectura y Tecnología de Computadores, ETS Ingenierías Informática y Telecomunicaciones Granada Spain}, title = {Algorithm::Evolutionary, a flexible Perl module for evolutionary computation}, journal = {Soft Computing - A Fusion of Foundations, Methodologies and Applications}, publisher = {Springer Berlin / Heidelberg}, issn = {1432-7643}, keyword = {Computer Science}, pages = {1091-1109}, volume = {14}, issue = {10}, url = {http://dx.doi.org/10.1007/s00500-009-0504-3}, note = {10.1007/s00500-009-0504-3}, year = {2010} }
or
@InProceedings{jj:2008:PPSN, author = "Juan J. Merelo and Antonio M. Mora and Pedro A. Castillo and Juan L. J. Laredo and Lourdes Araujo and Ken C. Sharman and Anna I. Esparcia-Alcázar and Eva Alfaro-Cid and Carlos Cotta", title = "Testing the Intermediate Disturbance Hypothesis: Effect of Asynchronous Population Incorporation on Multi-Deme Evolutionary Algorithms", booktitle = "Parallel Problem Solving from Nature - PPSN X", year = "2008", editor = "Gunter Rudolph and Thomas Jansen and Simon Lucas and Carlo Poloni and Nicola Beume", volume = "5199", series = "LNCS", pages = "266-275", address = "Dortmund", month = "13-17 " # sep, publisher = "Springer", keywords = "genetic algorithms, genetic programming, p2p computing", ISBN = "3-540-87699-5", doi = "10.1007/978-3-540-87700-4_27", size = "pages", notes = "PPSN X", }
or the ArXiV paper linked above.
Some information on this paper and instructions for downloading the code used in it can be found in our group blog.
There are a few examples in the examples subdirectory, which should have been included with your CPAN bundle. For instance, check out tide_float.pl, an example of floating point vector optimization, or cd examples; run_easy_ga.pl p_peaks.yaml, which should run an example of a simple GA on the P_Peaks deceptive function.
examples
tide_float.pl
cd examples; run_easy_ga.pl p_peaks.yaml
Some other examples are installed: check out tide_bitstring.pl, tide_float.pl and canonical-genetic-algorithm.pl, which you can run and play with to get a taste of what EA programming is like, and then ammend, add and modify at leisure to create your own evolutionary algorithms. For a GUI example, check rectangle-coverage.pl, which uses Tk to show the population and its evolution. You will need to install the required modules, however, since it needs additional ones to those required by this module.
Head to the CPAN forum for this module: http://www.cpanforum.com/dist/Algorithm-Evolutionary
Have you found any bugs? Use the CPAN tracker to inform about them (http://rt.cpan.org/Public/Dist/Display.html?Name=Algorithm-Evolutionary) or email the author (below) or bug-algorithm-evolutionary@rt.cpan.org.
bug-algorithm-evolutionary@rt.cpan.org
If you are just looking for a plain vanilla genetic algorithm for didactic purposes, check also Algorithm::Evolutionary::Simple, which does the job in a straight fashion and can be used easily for demos or adapting it to external fitness functions.
You might also be interested in one of the other perl GA and evolutionary computation modules out there, such as AI::Genetic::Pro.
This file is released under the GPL. See the LICENSE file included in this distribution, or go to http://www.fsf.org/licenses/gpl.txt
To install Algorithm::Evolutionary, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Algorithm::Evolutionary
CPAN shell
perl -MCPAN -e shell install Algorithm::Evolutionary
For more information on module installation, please visit the detailed CPAN module installation guide.