Frequently asked questions

Q: Evolutionary computation usually needs lots of CPU cycles, ¿would not Perl make evolutionary algorithm programs slower?
Q: What other kind of cool stuff can you do with evolutionary computation and Perl?

Q: Evolutionary computation usually needs lots of CPU cycles, ¿would not Perl make evolutionary algorithm programs slower?

A: This question has two answers: the first one is no, and the second one is yes, so what?. Let is go to the first answer: it is always complicated to compare two different languages, even on a single algorithm, because it is virtually impossible to translate, sentence by sentence, from one language to the next one; besides, even if you do, you have to take into account the quirks of the language, and what kind of things it does better: what kind of data structures, for instance. So, if we take all that into account, and we look at a particular language, well, we would have to run some tests to see which one runs faster. It is quite likely that a C program is faster than the equivalent Perl program (if translation time is significant with respect to total time), but I would say that, second for second, Perl is no slower than Java or C++ or Ruby. But, of course, I would be happy to hear the results of any benchmarks. The second answer is that performance is not, after all, so important: if your preferred tool is Perl, and you can code stuff blindfolded and single-handedly, you'd better do evolutionary algorithms with Perl than with, say, Fortran 9X, even if this language is able to extract the last drop of performance from your old processor. If you have to learn a new language, plus write an evolutionary algorithm in it, performance does not matter so much.

Q: What other kind of cool stuff can you do with evolutionary computation and Perl?

A: Besides the aforementioned GlotBot, there's something very similar, written using Algorithm::Evolutionary and HTML::Mason, available from http://geneura.ugr.es/Mason/EvolveWordsPPSN.html. The evolutionary algorithm was also combined with SOAP::Lite to carry out evolutionary algorithms with distributed population (code is available along with the first versions of OPEAL). As a degree project, some students of mine used OPEAL to optimize fantasy soccer teams, by optimizing step-by-step the team, or by optimizing the rules used to substitute players from one set of matches to the next. And, finally, using the same library, we optimized the assignment of papers to reviewers for the PPSN 2002 conference.