2010-10-07 3 views
15

Ich bin auf der Suche nach einer guten genetischen Programmierbibliothek für JVM. (nicht genetischer Algorithmus, sondern genetische Programmierung) Ich versuchte JGAP (jgap.sourceforge.net) und Uhrmacher (watchmaker.uncommons.org). Leider haben diese Werkzeuge nur eine experimentelle und unreife Unterstützung für die genetische Programmierung (sie konzentrieren sich hauptsächlich auf genetische Algorithmen).Genetische Programmierbibliothek für Java

Vielleicht kennen Sie ein besseres Werkzeug für genetische Programmierung, für JVM (kann in Java oder einer anderen kompilierten Sprache für JVM geschrieben werden).

Ich bin nicht auf der Suche nach einer umfassenden Liste von GP-Tools, ich bin eher auf der Suche nach einem guten, populären Tool (wie beliebte Betriebssysteme sind Windows, Linux und Mac, und beliebte Java IDEs sind Eclipse, IDEA und NetBeans).

Es muss keine genetische Programmierbibliothek (GP) sein, es kann auch (und es wäre wahrscheinlich besser) eine Genexpressionsprogrammierungsbibliothek (GEP) sein.

EDIT (nach zwei Monaten seit der Frage): Ich analysierte die meisten Links Sie geschrieben und die in Wiki zur Verfügung stehen, und ich muss sagen, dass jede dieser Bibliotheken haben mindestens eine der folgenden Probleme:

  • keine Open-Source-oder Open-Source, aber sehr restriktiv (GPL);

  • keine Dokumentation (oder sehr schlechte);

  • keine integrierte Unterstützung für die genetische Programmierung oder Genexpression Programmierung (oder experimentelle;.

  • einige Verwendung in einfach zu komplex sind

In diesem sitation ich schriftlich endete meine eigene einfache Bibliothek für das Projekt (mit Genexpressionsprogrammierung, die es sehr, sehr einfach macht)

+2

@Carlos: Ich bin ein wenig enttäuscht, dass meine Antwort das Kopfgeld auf diesem gewonnen hat. Wenn Sie der Frage mehr Inhalt hinzufügen möchten, spende ich meine Gewinne an ein zweites Kopfgeld. Nur @ Nachricht mich hier. –

+1

@Bill die Eidechse, hey, keine Sorge, Kumpel, es ist in Ordnung, ich habe schon mein Projekt geknackt, also ist es mir jetzt gut. Ist nett von dir, so aufrichtig und ehrlich zu sein. Kudos und Rep für dich, Kumpel;). Alles Gute – Carlos

+0

Mit Blick auf [Ihre nächste Frage] (http://stackoverflow.com/questions/5279149/implementing-methods-having-raw-types-in-scala), verwenden Sie [Drools Planner] (http://www.jboss.org/drools/drools-planner) (ASL, mit Dokumenten und Beispielen) jetzt? Wie gefällt es Ihnen? :) –

Antwort

2

Es gibt Bibliotheken wie GenPro und n-genes für Java und JGProg für Groovy.

Es gibt mehr aufgeführt für mehrere verschiedene Sprachen in der Implementations Abschnitt der Genetic programming Wikipedia-Artikel, aber wie Sie erwähnt, viele von denen sehen aus wie sie mehr für GA sind, so müssen Sie jeden bewerten, um zu sehen, ob es entspricht Ihren Bedürfnissen.

+0

Haben Sie GP mit einigen dieser Bibliotheken ausprobiert? Es gibt viele GP-Bibliotheken im Internet, aber die meisten von ihnen sind von sehr, sehr schlechter Qualität, völlig ungeeignet für die Produktion. Ich habe JGAP und Watchmaker ausprobiert, und ich kann nicht alle verfügbaren Bibliotheken ausprobieren, also frage ich Sie - Benutzer von stackoverflow für eine Meinung, vielleicht hat jemand von Ihnen viel Erfahrung mit Java GP. – iirekm

0

JGAP (Paket für Java Genetic Algorithms) ist eine hochentwickelte GA-Bibliothek, die kostenlos unter jgap.sf.net zur Verfügung steht. Viele Beispiele enthalten.

+0

JGAP wurde bereits in der Frage erwähnt. "Ich versuchte JGAP (jgap.sourceforge.net) ...." – Tansir1

+0

Ich habe JGAP in meiner Frage erwähnt - sehr unreife genetische Programmierung Unterstützung, nur in der jüngsten Version hinzugefügt. – iirekm

+0

Was mehr ist, hat JGAP sehr hässliches Design (zum Beispiel im Vergleich zu Uhrmacher). – iirekm

5

ECJ hat eine Menge Zeug für GP, einschließlich einiger Beispielprojekte.

1

Ich bin etwas voreingenommen, weil ich einer der Autoren bin, aber EpochX ist eine Java-Bibliothek ausschließlich für genetische Programmierung. Es unterstützt eine stark typisierte Baumdarstellung und zwei grammatikalische Darstellungen. Es ist in erster Linie für Forscher gedacht, aber es kann geeignet sein, je nachdem, wofür Sie es benötigen. Weitere Informationen erhalten Sie unter epochx.org.

+0

Ahh - Ich war fast bereit, epochx zu versuchen, als ich es bemerkte - es ist unter GPL Lizenz! Das Projekt, das ich mache, wird kommerziell sein (also kann ich GPL nicht verwenden). Warum veröffentlichen Sie es nicht unter LGPL - es ist eine Art Kompromiss zwischen GPL und den "Mach was du willst" Lizenzen wie Apache, MIT oder BSD. Wahrscheinlich gibt es mehr solche Benutzer, die Ihre Bibliothek nicht benutzen, nur weil sie GPL-ed sind. – iirekm

+0

Danke für den Rat. Ich werde sehen, ob wir die Lizenz neu bewerten können, weil ich keinen Grund sehe, kommerzielle Nutzung zu untersagen. –

+0

Jetzt lizenziert unter LGPL. –

1

Ich habe gerade mein eigenes Programm zur genetischen Programmierung in Clojure fertiggestellt (gebaut auf der JVM). Sobald ich eine symbolische Regression durchführen konnte, stellte ich fest, dass das Tool viel restriktiver war als ich es wollte und komplexer war, um das stark typisierende Problem zu lösen.Ich habe mich entschieden, in ein grammatikalisches Evolutionstool zu wechseln (Genetische Programmierung kann als Teilmenge der Grammatischen Evolution aufgefasst werden). Das Tool GEVA ist meine erste Anlaufstelle für ein Tool zur grammatischen Evolution. Mein Verständnis ist, dass es auch noch entwickelt wird (es gab eine kürzlich rev in diesem Jahr (2010)).

+0

Danke für Infos, wusste ich vorher nicht über GEVA. Ich denke, dass GEVA für einige Probleme leistungsfähiger ist, während für andere genetische Algorithmen leistungsfähiger sind, während für einige andere neuronale Netzwerke oder Bayessian Netzwerke. Ich denke, ich werde jetzt genetische Algorithmen und GEP ausprobieren, weil ich sie gut kenne und wenn es mir nicht gefällt, werde ich GEVA versuchen. – iirekm

+0

Nur um die Antwort hier zu klären - GEVA ist eine Implementierung der Grammatischen Evolution (GE), ein evolutionärer Algorithmus, der Grammatiken verwendet. Es gibt andere Implementierungen von GE, wie jGE, libGE und EpochX, die bereits in einer anderen Antwort erwähnt wurden. –

1

Vielleicht könnten Sie Teile von TinyGP verwenden? Es ist nicht wirklich eine Bibliothek, eher ein GP-System, aber da es ziemlich klein ist, könnte man es leicht für seine Zwecke anpassen.