Im Rahmen einer Aufgabe muss ich einen genetischen Programmieralgorithmus schreiben , der die Luftschadstoffwerte vorhersagt. Da ich keine Erfahrung habe, kann mir jemand Hinweise auf Vorschläge von Programmiersprachen geben, in denen weiterentwickelte Programme geschrieben werden .
Klarstellung: Ich frage nicht, in welcher Sprache ich den genetischen Algorithmus selbst schreiben werde (da ich die Entscheidung selbst treffen kann), sondern in welcher Programmiersprache die entwickelten Programme erstellt werden sollen.
Mein Ausbilder schlug Lisp vor, aber ich mag diese Idee nicht - erstens musste ich an einer Art abstraktem Syntaxbaum arbeiten, zweitens kann es ein gewaltiges Durcheinander sein, Überkreuzungen an Baumstrukturen zuverlässig vorzunehmen.
Ich würde lieber etwas verwenden , die für die genetische Programmierung wie gewidmet ist Slash / A . SlashA erfordert keine Arbeit an ASTs - Programme im Bytecode sind nur ein Array von Ints, die in jeder erforderlichen Form geändert werden können, da jedes int-Array ein Slash / A-Programm darstellt.
Zusätzliche Bemerkungen:
- Ich möchte vermeiden, ASTs zu manipulieren!
- Dieses Problem ist schwer (vielleicht nicht so schwer wie die Vorhersage von Aktienwerten). Dies liegt an der Tatsache, dass wir (höchstwahrscheinlich) nicht genügend Eingabeinformationen haben (es gibt einige versteckte Parameter). Das Erstellen eines Modells mit einer besseren Leistung als das Modell, das den Mittelwert zurückgibt, ist eine Herausforderung (mittlere Modelle haben 35% MAPE), die meisten Modelle haben einen MAPE-Wert von etwa 25%, die besten von 20%.
- Ich hätte gerne eine Sprache, die Datensätze mit vielen Funktionen verwaltet, mit der Annahme, dass ich nicht sicher bin, welche wichtig sind. (Slash / A hat hier einen Nachteil - in dieser Sprache werden die Eingabefunktionen nacheinander gelesen - so dass einige Funktionen mit größerer Wahrscheinlichkeit verwendet werden).
- Ich möchte in der Lage sein, dies in Python zu programmieren, daher wären Python-Bibliotheken großartig - aber ich kann Bindungen für C / C ++ erstellen (kein Java, kein Matlab usw.).
Ich bin mir bewusst, dass dies eine Frage der Umfrage ist. Wenn es für eine solche Frage zu früh ist, schließen Sie sie bitte, aber ich bin der Meinung, dass sie spezifisch genug ist.
Wenn Sie ein Programm weiterentwickeln, manipulieren Sie wahrscheinlich trotzdem einen Syntaxbaum. Auf diese Weise wird jedes Programm, das Sie entwickeln, automatisch syntaktisch korrekt sein.
Bei der Auswahl einer Sprache sollten Sie zwei Dinge beachten.
Ich würde aus ähnlichen Gründen gegen die Assemblersprache stimmen, obwohl virtuelle Maschinen wie die JVM und die CLR Ihnen so etwas wie ein Sicherheitsnetz bieten sollten.
Möglicherweise möchten Sie eine Zielsprache verwenden, die Sie bereits kennen. Ich bin mit Python selbst nicht vertraut, aber AFAIK erfüllt die oben genannten Kriterien, sodass es eine gute Wahl für Ihre Zielsprache sein sollte.
quelle