Auswahl der Softwarebibliothek

Es gibt mittlerweile viele Softwarebibliotheken, die Softwareentwickler bei der Erstellung von Programmen unterstützen. So auch aus dem Bereich der evolutionären Algorithmen. Bei der Auswahl wurde auf verschiedene Kriterien geachtet.

Eine Übersicht über frei verfügbare Software gibt das im Anhang auf Seite 53 zu findende How-to.

Als wichtigstes Auswahlkriterium wurde Wert auf freie Software gelegt. Die Gründe liegen zum einen in den geringen Kosten der Software an sich und auch in der Offenheit des Quellcodes. Beschäftigt man sich tiefer gehend mit den Methoden der evolutionären Algorithmen, ist es möglich, die vorhandene Software im Quellcode zu verändern. Beim Einsatz von properitärer Software ist dieses nur selten möglich.

Ein weiteres Kriterium war die zugrunde liegende Programmiersprache. Softwarebibliotheken aus diesem Bereich gibt es für viele verschiedene Sprachen. Da die vielen Schleifendurchläufe und Rechenoperationen (sogenanntes numbercrunching) den Prozessor während des Programmablaufes stark auslasten, scheiden Interpretersprachen von vornherein aus. Einmaliges Compilieren vor der Programmausführung spart hier viel Zeit. Auch eine vorkompilierte Sprachen wie Java wurde nicht eingesetzt, da diese auf einer eigenen virtuellen Maschine aufsetzt und sich so nicht für numbercrunching eignet.

Gewählt wurde hier C / C++ als eine schnelle, Plattform übergreifende Sprache, aus der sich beim Kompilieren optimierter und schneller, maschinennaher Code erzeugen lässt.

Folgende freie Softwarebibliotheken erfüllten alle bisher genannten Kriterien und wurden näher betrachtet:

EO, GAlib, GALOPPS, GAUL, GPdata, Lithos, Pipe

Ein erster Blick auf die Homepages der Projekte, ein Vergleich der Fähigkeiten und der vorhanden Dokumentation schränkte die Auswahl weiter ein. EO und GAlib haben sich besonders durch die umfangreiche Dokumentation hervorgetan. Ohne diese ist ein Einsatz der Softwarebibliotheken immer mit überdurchschnittlich viel Einarbeitungszeit verbunden.

Die Installation von EO ist z.Z. auf einem speziell für diese Zwecke angeschafften Rechner mit 64bit Prozessor und 1Gb Arbeitsspeicher nicht möglich ist, da die 64bit Unterstützung noch nicht implementiert wurde.

Auch GAlib machte Schwierigkeiten bei der Installation aufgrund des 64bit Prozessors. Ein kleiner Eingriff in den Quellcode machte eine Installation dann aber doch möglich.

GAlib

1995 wurde die erste Version von GAlib von Matthew Wall im Rahmen seiner Dissertation am MIT veröffentlicht und wird seid dem ständig weiterentwickelt. Dieser Arbeit liegt die Version 2.4.6 vom Januar 2005 zugrunde.

Neben einer guten Dokumentation die auf der Homepage des Projektes angeboten wird, hat sich im Internet eine lebhafte Community gebildet, die eigene Seiten präsentiert.

Klassenhierarchie

Die Abbildung zeigt eine Übersicht aller 49 Klassen, die einen Umfang von mehreren Hundert Funktionen haben. Der gesamte Quellcode besteht aus über 22.000 Zeilen und ist unter der GPL verfügbar.

Für die Programmierung sind besonders die beiden Klassen GAGeneticAlgorithm und GAGenome zu betrachten, da diese die wichtigsten Funktionen beinhalten.