HTW Dresden > GaFrame
 

Anforderungen an ein Framework für Genetische Algorithmen

Natürlich haben wir uns im Vorfeld gründlich Gedanken über die Fähigkeiten eines Frameworks für Genetische Algorithmen (GA) gemacht. Zu diesem Zweck wollen wir hier die von uns aufgestellten Anforderungen an ein solches System angeben und im Weiteren auf die konkrete Lösung eingehen.

Unsere Anforderungen waren:

  1. allgemeine Anwendbarkeit
  2. Grundstock an Verfahren
  3. einfache Bedienung
  4. Anpassbarkeit
  5. performante Abarbeitung
    • Effizienz
    • Skalierbarkeit

Wie in der obenstehenden Listen zu sehen ist, müssen vielschichtige Problemstellungen beachtet werden. Die kurz aufgelisteten Punkte sollen jetzt noch ein wenig untersetzt werden:

allgemeine Anwendbarkeit:
Das System soll nicht auf spezielle Anwendungsfälle zugeschnitten sein, sondern sich auf möglichst viele Problemstellungen (die für natürlich für Genetische Algorithmen geeignet sein müssen) anwenden lassen. Hierzu ist es nötig, eine gute Chromosomen-Mimik zu wählen und Schnittstellen zu definieren, die es gestatten diese Mimik einfach nutzen zu können.
Grundstock an Verfahren:
In der Literatur sind zahlreiche Verfahren und Strategien beschrieben, mit denen man die einzelnen Phasen eines GA ausführen kann. Wir wollten einige nützliche Operatoren und Strategien zu Verfügung stellen, damit man gleich mit der Arbeit am Problem beginnen kann und nicht erst eigene Operatoren definieren muss.
einfache Bedienung:
Es soll einem Entwickler möglichst viel Arbeit erspart werden und kein großer Einarbeitungsaufwand nötig sein. Es handelt sich schließlich um ein kleines Framework und man sollte vermeiden, Sachverhalte zu verkomplizieren (gemäß dem Motto: keep it short and simple). Wenige Zeilen Code sollen genügen, um einen lauffähigen GA zu erzeugen. Weiterhin soll die Chromosomen-Mimik einfach nutzbar sein.
Anpassbarkeit:
Das System soll modular aufgebaut sein, so dass es möglich ist, Komponenten leicht auszutauschen oder anzupassen. Hierzu zählen zahlreiche Paradigmen des objektorientierten Designs (OOD). Es soll also möglich sein, eigene Komponenten (Klassen) unter Einhaltung der Schnittstellen in das System einzubringen, ohne das System an sich ändern zu müssen.
performante Abarbeitung:
Natürlich muss die Implementierung robust und gut entworfen sein. Geschwindigkeit war trotzdem unser oberestes Ziel. Weiterhin soll man auch von Mehrprozessormaschinen oder gar ganzen Rechnerfarmen profitieren und gemäß der Aufgabenstellung Möglichkeiten haben, den GA mit Rechenleistung zu versorgen.