Halihallo Henryk
eine Endlosschlaufe, welche irgendwelchen Code erstellt (oder eben einige Stellen von PI ausschneidet und diese dann in einen ASCII Text abbildet) und auswertet ob der Sinn mancht... Irgendwann wird erwohl eine funktionierende Webapplikation ausspucken... Oder gar eine Software, welche die Welt revolutioniert, z. B. eine richtige KI oder so...
Das ist extrem ineffektiv.
Ich hab den Algorithmus bereits verbessert ;)
Mit genetischer Programmierung kannst du mit nur wenig mehr Aufwand für dein Steuerprogramm in wesentlich kürzerer Zeit wesentlich bessere Programme entwickeln. Ich habe hier leider nur ein kleines Beispiel aus [1] parat, aber das zeigt die Tendenz:
Manuell (also von einem Programmierer in rund 1h Handarbeit) erstelltes Programm: 26 Treffer (von 46); automatisch vom genetischen Algorithmus erstelltes Programm: 43 Treffer; automatisch aus Zufallszahlen erstelltes Programm (das beste von 50.000 Versuchen): 15 Treffer. Wobei die Anzahl der zufällig erstellten Programme so gewählt wurde, das sie in etwa der Anzahl der Programme entspricht, die der Genetische Algorithmus bearbeitet hat.
Da die Zahlen in Pi bekanntermaßen keiner Regelmäßigkeit folgen, sind sie genausogut wie Zufallszahlen und das Ergebnis damit dürfte im Erwartungswert nicht besser sein als das mit den Pseudozufallszahlen aus o.g. Experiment.
Also:
Die zu verwendende Sprache wird über EBMF definiert und eingelesen. EBMF beitet eine syntaktische Beschreibung der Sprache. Darauf basierend wird nun ein _in jedem Fall_ syntaktisch korrektes Programm generiert aufgrund zufälligen Werten aus PI. Natürlich muss der Algorithmus dahingehend verbessert werden, dass generierte Funktionsnamen auch irgendwo mit sub definiert werden müssen (o. ä.). Somit generieren wir mit _jedem_ Schritt ein vollkommen syntaktisch korrektes Programm (mit einigen algo. Verbesserungen, bringen wir's sogar lauffähig)...
Aber die genetic programming brachte mich gleich auf eine Idee: Der output des Programmes oder andere Eigenschaften ist/sind vorgegeben. Durch die genetic programming wird nun immer eine neue "Evolution" geschaffen. Überlebt die Evolution, d. h. ist der Output des Programmes besser, als die Parentalgeneration, wird diese Evolution zur Parentalgeneration der nächsten Kinder... Somit wird das ganze "Projekt" sogar Problemorientiert (ist ja auch der Zweck von genetic programming)...
Für mehr Infos frage einfach mal Google nach: genetic algorithms, genetic programming oder evolutionary programming.
sehr interessant!
Viele Grüsse vom Bodensee
Philipp
PS: Danke für die spannende Lektüre und Input