2009-03-26 12 views

Respuesta

13

Mi propia, porque es el más fácil de personalizar :)

EDIT: Ha habido algunos recientes up-votos, así que pensé que vale la pena la actualización de esta respuesta. Han pasado 8 años desde que respondí esto originalmente y hay muchas más bibliotecas disponibles desde entonces. Ya no recomendaría extender tu propio código. En su lugar, encontraría una biblioteca de código abierto en el idioma de su elección y contribuiría con ella.

p. Ej. Jenetics si usa Java, DEAP para python, y GeneticSharp para C#.

+0

Mis sentimientos: he cambiado tanto de GAlib que voy a usar el mío por ahora. ¡La personalización es imprescindible! – bias

+0

Sí, una GA no es demasiado difícil de codificar. Escribir uno propio compensa en gran medida los dolores de cabeza de la falta de funcionalidad en las herramientas descargadas. –

+0

¿Qué pasa con el mejor lenguaje de todos, C++? :) Esto puede causar un poco de discusión aquí;) – Ralf

15

He completado dos proyectos de investigación de posgrado utilizando algoritmos genéticos para diseñar de forma automática motores eléctricos.

Para el primer proyecto, utilicé el EO Evolutionary Computation Framework que se basa casi por completo en la programación de plantillas de C++. Es muy potente pero requiere mucha concentración (IMO) para ampliarlo debido a la naturaleza meta de las plantillas y los mensajes de error sin sentido correspondientes del compilador.

Para el segundo proyecto, porté todo al Open BEAGLE EC Framework que se basa en herencia de C++ en lugar de plantillas. También tiene un sistema muy completo basado en XML para controlar parámetros y almacenar hitos y resultados. Me resultó mucho más fácil extenderme y adaptarme a mis necesidades específicas (principalmente los parámetros de diseño de entero y flotante mixto con tolerancias de fabricación).

También utilicé brevemente Open BEAGLE en un simple experimento de programación genética y resultó fácil de usar allí también.

7

Si está utilizando Python, pyevolve es fácil de usar. Lo usé con éxito. http://pyevolve.sourceforge.net/

+1

0.6rc1 es mejor opción que oficialmente lanzado 0.5 http://pyevolve.sourceforge.net/0_6rc1/ –

1

He jugado con TinyGP para tener una idea de cómo implementar mi propio sistema GP. Solía ​​escribirse en C pero se reescribió en Java. Como es muy pequeño, fue fácil adaptarlo para mis usos en C++/D.

0

He desarrollado mi propia biblioteca openGA.

Esta biblioteca es para la resolución:

  • problemas solo objetivo.
  • Problemas multiobjetivos (y muchos objetivos) (método NSGA-III).
  • Problemas de GA interactivos.

Esta biblioteca nos permite usar plantillas de C++ para definir su propio diseño de cromosoma.

Los códigos están disponibles en Github. La publicación está en smc2017 y su manual de usuario está disponible en mi researchgate.

Cuestiones relacionadas