2010-10-07 9 views
15

Estoy buscando una buena biblioteca de programación genética para JVM. (no algoritmo genético, sino programación genética) Probé JGAP (jgap.sourceforge.net) y Watchmaker (watchmaker.uncommons.org). Desafortunadamente, esas herramientas solo tienen soporte experimental e inmaduro para la programación genética (se centran principalmente en algoritmos genéticos).Biblioteca de programación genética para Java

Quizás conozca alguna herramienta mejor para la programación genética, para JVM (se puede escribir en Java o en cualquier otro lenguaje compilado para JVM).

No estoy buscando una lista completa de herramientas de GP, prefiero buscar una herramienta buena y popular (al igual que los sistemas operativos populares son Windows, Linux y Mac, y los populares IDE de Java son Eclipse, IDEA y NetBeans).

No tiene que ser la biblioteca de programación genética (GP), también puede ser (y probablemente sería mejor) una biblioteca de programación de expresión génica (GEP).

EDITAR (después de dos meses desde la pregunta): Me analizó la mayor parte de los enlaces que publican y que están disponibles en Wiki y tengo que decir que cada una de esas bibliotecas tienen al menos uno de los siguientes problemas:

  • no de código abierto, o de código abierto, pero muy restrictivo (GPL);

  • sin documentación (o muy mala);

  • sin soporte integrado para la programación genética o la programación de la expresión génica (o experimental;.

  • algunos son simplemente demasiado complejo en uso

En este sitation terminé por escrito mi propia biblioteca simple para el proyecto (usando un enfoque de programación de expresión génica, que lo hace muy simple)

+2

@Carlos: Estoy un poco decepcionado porque mi respuesta ganó la recompensa por esto. Si desea agregar más contenido a la pregunta, donaré mis ganancias a una segunda recompensa. Solo @ envíame un mensaje aquí. –

+1

@Bill the Lizard, no se preocupe compañero, está bien, ya conseguí descifrar mi proyecto, así que por ahora estoy bien. Es amable de su parte ser tan sincero y honesto. felicitaciones y representante para tu compañero;). Todo lo mejor – Carlos

+0

En cuanto a [su próxima pregunta] (http://stackoverflow.com/questions/5279149/implementing-methods-having-raw-types-in-scala), ¿está utilizando [Drools Planner] (http://www.jboss.org/drools/drools-planner) (ASL, con documentos y ejemplos) ahora? ¿Te gusta eso? :) –

Respuesta

2

Hay bibliotecas como GenPro y n-genes para Java, y JGProg para Groovy.

Hay más en la lista para varios idiomas en la sección Implementations del artículo de Wikipedia Genetic programming, pero como mencionó, muchos de ellos parecen que son más para GA, por lo que tendrá que evaluar cada uno para ver si se adapta a tus necesidades.

+0

¿Has probado GP con algunas de estas bibliotecas? Hay muchas bibliotecas de GP en Internet, pero la mayoría de ellas son de muy, muy mala calidad, completamente inadecuadas para la producción. He probado JGAP y Watchmaker, y no puedo probar todas las bibliotecas disponibles, así que les estoy preguntando a los usuarios de stackoverflow por una opinión, tal vez alguien de ustedes tenga mucha experiencia con Java GP. – iirekm

0

JGAP (Java Genetic Algorithms Package) es una biblioteca GA sofisticada, disponible gratis en jgap.sf.net, muchos ejemplos incluidos.

+0

JGAP ya se mencionó en la pregunta. "Intenté JGAP (jgap.sourceforge.net) ...." – Tansir1

+0

He mencionado JGAP en mi pregunta: soporte de programación genética muy inmadura, agregado solo en la versión más reciente. – iirekm

+0

Además, JGAP tiene un diseño muy desagradable (por ejemplo, comparado con Watchmaker). – iirekm

5

ECJ tiene muchas cosas para GP, e incluye varios proyectos de ejemplo.

1

Estoy algo predispuesto porque soy uno de los autores, pero EpochX es una biblioteca de Java únicamente para la Programación Genética. Tiene soporte para una representación de árbol fuertemente tipada y 2 representaciones guiadas de gramática. Está dirigido principalmente a investigadores, pero puede ser adecuado dependiendo de lo que lo requiera. Puede obtener más información al epochx.org.

+0

Ahh - Estaba casi listo para probar epochx cuando me di cuenta - ¡está bajo licencia GPL! El proyecto que realizo será comercial (así que no puedo usar GPL). ¿Por qué no lo lanzas bajo LGPL? Es una especie de compromiso entre GPL y las licencias de "haz lo que quieras" como Apache, MIT o BSD. Probablemente hay más usuarios que no usarán su biblioteca solo porque es GPL-ed. – iirekm

+0

Gracias por el consejo. Veré si podemos volver a evaluar la licencia porque no veo ninguna razón para rechazar el uso comercial. –

+0

Ahora con licencia bajo LGPL. –

1

Acabo de terminar de construir mi propia herramienta de programación genética en Clojure (Built on the JVM). Una vez que pude hacer una regresión simbólica, me di cuenta de que la herramienta era mucho más restrictiva de lo que yo quería y más compleja para resolver el problema de la tipada.He decidido pasar a una herramienta de Evolución Gramatical (la Programación Genética se puede interpretar como un subconjunto de la Evolución Gramatical). La herramienta GEVA es mi primera parada para una herramienta de Evolución Gramatical. Entiendo que también se está desarrollando (hubo una revisión reciente este año (2010)).

+0

Gracias por la información, no sabía sobre GEVA antes. Supongo que GEVA es más poderoso para algunos problemas, mientras que para otros los algoritmos genéticos son más poderosos, mientras que para algunos otros redes neuronales o redes bayesianas. Creo que probaré algoritmos genéticos y GEP por ahora porque los conozco bien, y si no me satisface, intentaré con GEVA. – iirekm

+0

Solo para aclarar la respuesta aquí: GEVA es una implementación de Grammatical Evolution (GE), un algoritmo evolutivo que usa gramáticas. Hay otras implementaciones de GE, como jGE, libGE y EpochX, que ya se han mencionado en otra respuesta. –

1

¿Quizás podría usar partes de TinyGP? No es realmente una biblioteca, más un sistema GP, pero como es bastante pequeño, puedes adaptarlo fácilmente para tus usos.

Cuestiones relacionadas