Es wäre nicht meine Absicht, einen Link auf meinem Blog zu setzen, aber ich habe keine andere Methode, um zu klären, was ich wirklich meine. Der Artikel ist ziemlich lang, und es ist in drei Teile (1, 2, 3), aber wenn Sie neugierig sind, ist es das Lesen wert.Codebakterien: sich entwickelndes mathematisches Verhalten
Vor langer Zeit (mindestens 5 Jahre) programmierte ich ein Python-Programm, das "mathematische Bakterien" erzeugte. Diese Bakterien sind Python-Objekte mit einem einfachen Opcode-basierten genetischen Code. Sie können sie mit einer Nummer versehen und sie geben eine Nummer zurück, je nach Ausführung ihres Codes. Ich erzeuge ihre genetischen Codes zufällig und lege eine Umgebungsauswahl auf diese Objekte an, die ein Ergebnis erzeugt, das einem vordefinierten Erwartungswert ähnlich ist. Dann lasse ich sie duplizieren, führe Mutationen ein und entwickle sie. Das Ergebnis ist ziemlich interessant, denn ihr genetischer Code lernt im Grunde, einfache Gleichungen zu lösen, selbst für Werte, die für den Trainingsdatensatz unterschiedlich sind.
Jetzt ist dieses Ding nur ein Spielzeug. Ich hatte Zeit zu verlieren und ich wollte meine Neugier befriedigen. Ich nehme jedoch an, dass etwas in Bezug auf die Forschung gemacht wurde ... Ich erfinde das Rad hier neu, hoffe ich. Sind Ihnen ernstere Versuche bekannt, In-Silico-Bakterien wie die, die ich programmiert habe, zu schaffen?
Bitte beachten Sie, dass dies nicht wirklich "genetische Algorithmen" sind. Genetische Algorithmen verwenden Sie, wenn Sie Evolution/Selektion verwenden, um einen Vektor von Parametern gegenüber einer bestimmten Bewertungsfunktion zu verbessern. Das ist etwas anders. Ich optimiere den Code, nicht die Parameter, gegen eine bestimmte Bewertungsfunktion.
Nein, das ist ziemlich offensichtlich ein GA. Sie optimieren einen Parameter (die Opcode-Repräsentation des auszuführenden Codes) gegen eine Bewertungsfunktion (ob dieser Code die gewünschte Ausgabe erzeugt oder nicht). –
Nun, in der Tat, wenn Sie den Code als Parameter betrachten ... Sie sind völlig richtig :) –
Natürlich ist es eine Spezialisierung von Genetic Algorithms (GA), aber diese Spezialisierung ist bekannt als Genetic Programming (GP), wie korrekt unten angegeben. – MaD70