Ich habe gerade angefangen mit Genetische Programmierung und ich habe Probleme, meine Bevölkerung zu initialisieren.
Ich brauche einen Baum, um jede mögliche Lösung darzustellen - Das Problem ist, dass ich mit Bäumen nicht vertraut bin.
Es gibt zwei Arten der Initialisierung, die ich brauche, nämlich Grow (Baum variabler Größe) und Voll (ausgewogener Baum mit gleicher Form und Größe).
%Vor%Ich habe meine Tree-Klasse initialisiert, aber ich weiß nicht, wie ich von hier fortfahren soll, um den Baum zu füllen (entweder Full oder Grow).
%Vor%Könnte mir jemand freundlicherweise sagen, wie das gemacht werden kann, oder auch nur ein Anstoß in die richtige Richtung.
Ich versuche zufällig die Bäume bis zu einer vordefinierten Tiefe zu bevölkern.
Danke.
Es ist nicht sehr klar, was Sie wollen. Fragen Sie, wie Sie die von Ihnen gegebenen Beispiele darstellen oder Methoden implementieren, um zufällige Bäume nach einer der beiden Strategien zu generieren?
Ihre Beispiele können auf diese Weise mit Ihrer Tree-Klasse dargestellt werden:
%Vor%[EDIT]
Sie können Bäume mit den Methoden der folgenden Klasse nach dem Zufallsprinzip generieren:
%Vor%Dann können Sie einfach tun:
%Vor%Sie müssen zwei Funktionen erstellen, die Elemente zu einem Baum hinzufügen. Für die GROW-Funktion könnten Sie etwas tun wie unten ...
Grundsätzlich müssen Sie die Blattknoten basierend auf den von Ihnen festgelegten Kriterien einstellen. Dies ist kein perfektes Beispiel, kann Ihnen aber helfen, in die richtige Richtung zu gehen.
Ich habe das nicht ausgeführt, aber das sollte zeigen, wie man einen Baum anbaut. Möglicherweise müssen Sie Funktionen hinzufügen, damit es funktioniert, wie Sie möchten.
%Vor%Baum:
%Vor%Wert:
öffentliche Klasse Value { Zeichenfolge oper; Ganzzahl val
%Vor%Sie können sich die Implementierung von Tiny GP ansehen Ссылка (erstellt von Ricardo Poli) . Diese Implementierung erfordert jedoch tiefgehende Kenntnisse der C-Programmiersprache.
Alternativ können Sie GP-Varianten mit linearer Darstellung von Chromosomen verwenden (z. B. Linear GP, Kartesisches GP, Genexpressionsprogrammierung, Multi-Expressionsprogrammierung usw.). Diese haben eine einfachere und leichter verständliche Implementierung. Schauen Sie sich zum Beispiel den Quellcode von Multi Expression Programming an: СсылкаTags und Links java genetic-algorithm tree genetic-programming binary-tree