OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert?

Skrodde

Aktives Mitglied
Hallo zusammen,
ich beschäftige mich nach einiger Zeit mit dem Framework Genetics aus dem Apache Commons Math Paket. Zunächst möchte ich einen einfachen Evolutionären Algorithmus damit realisieren, der einfach dazu kommt, aus einer binär codierten Zahl mit fester Länge n eine Zahl macht, die genau n Einsen hat. Die Bewertungsfunktion ist also, wie viele Einsen eine Zahlenrepräsentation beinhaltet. Meine Frage ist an dieser Stelle:
Wo bringe ich die Bewertungsfunktion ein und wie kann ich speichern, welches Chromosom welche Zahl repräsentiert. Wären die Chromosomen im Paket abstrakte Klassen oder Interfaces wäre mir das wohl klar, aber die Chromosomen sind bereits als Klassen realisiert. :bahnhof:
Hier findet sich das "Genetics" Framework, kann mich jemand aufklären, wie es funktionieren soll?
Danke sehr, Gruß, Skrodde
 
Hallo ThreadPool,
danke für die schnelle Antwort. Heißt das, ich muss die Methode "getFitness" überschreiben? Und wie stelle ich sicher, dass wenn ich Daten in dem Chromosom speichere, diese auch von der Klasse Evolutionärer Algorithmus korrekt mutiert werden?
Danke, Skrodde
 
Keine Ahnung, du meintest nur "Wären die Chromosomen im Paket abstrakte Klassen oder Interfaces wäre mir das wohl klar". Ich habe in der Doku nachgesehen und gefunden das Chromosomen abstrakte Klassen sind.
Da ich das API aber noch nie verwendet habe musst du wohl selbst in den Beispielen der API nachsehen. Aber ich vermute stark das man die interne Darstellung in einer Unterklasse von Chromsome unterbringt, so wie die Bewertungsfunktion und dann gibt es sicher noch die Mutationsoperatoren die man passend irgendwo überschreiben muss.
 
Hallo ThreadPool,
meine Aussage "wäre mir das wohl klar" kann wohl erst jetzt gelten und war in meinem ersten Post etwas voreilig. Du hast völlig recht damit, dass man wie folgt vorgehen muss:
  1. Eigene Chromosomen-Klasse implementieren
  2. Eigene Population-Klasse implementieren
  3. Angepasste Mutation- und Selection Klassen implementieren
Dann kann man die vom Framework bereit gestellten Dienste nutzen und hat einen EA :toll:
Vielen Dank für die Denkanstöße!
 

Zurück
Oben