Colección de Deb
Primero, el antiguo sitio web de Kalyanmoy Deb (http://www.iitk.ac.in/kangal/cod…) tiene código fuente para varios algoritmos, tanto de un solo objetivo como de múltiples objetivos. Son muy, muy fáciles de trabajar e incrustar en su propio código, pero hay algunos inconvenientes. Existe la licencia, que es “haz lo que quieras siempre que seas académico, pero todos los demás tienen que hablar conmigo sobre los términos y condiciones”. Luego está el hecho de que este es un código académico dirigido a las necesidades de los usuarios académicos, por lo que puede encontrar errores extraños. (Sí. Valgrind es tu amigo).
El MOEA Borg
Uno de mis colegas (obvio descargo de responsabilidad: quiero ver a las personas adoptar su trabajo) ha escrito lo que considero el mejor algoritmo evolutivo de múltiples objetivos (MOEA): el BEA MOEA. Está disponible en http://borgmoea.org/. Tiene algunas ventajas enormes: la fuente C es muy limpia, y una vez que comprende los principios en los que funciona, es fácil de seguir. Se escala a unos diez objetivos, dependiendo del problema que esté optimizando. En nuestros estudios, limpia el piso con otros MOEA, trabajando más rápido y produciendo mejores soluciones. Puede vincularlo a su código, pero no tiene que hacerlo: puede interactuar con su modelo a través de stdin / stdout. Borg MOEA también tiene enlaces para Python, Matlab y varios otros idiomas. Es gratis para uso no comercial, de lo contrario, debe comprar una licencia.
MOEAMarco
Un proyecto LGPL basado en Java, si es más adecuado para sus propósitos, está en http://moeaframework.org/. Está escrito por el autor de Borg MOEA, aunque no incluye una implementación de ese algoritmo. Incluye implementaciones de NSGAII, ɛMOEA, MOEA / D y GDE3. La integración con otro código Java es bastante sencilla.
- ¿Cuál fue tu algoritmo favorito del que aprendiste mucho?
- ¿Qué debo hacer en mis vacaciones de verano, dado que soy estudiante de informática (1er año)?
- Cómo mejorar la lógica o la presentación de la conjetura descrita en una respuesta para que más personas puedan entender lo que creo que es un método sorprendente para crear algorítmicamente un conjunto primo potencialmente infinito
- Dado que muchos algoritmos de aprendizaje automático se ejecutan en GPU, ¿Julia sigue siendo una buena opción para eso?
- Cómo desglosar un problema y resolverlo con el uso de la programación Java
CMAES
CMAES es un muy buen solucionador de un solo objetivo, disponible bajo GPL o LGPL en https://www.lri.fr/~hansen/cmaes…. No deje que la URL lo arroje, hay implementaciones en muchos idiomas, incluido C. También está la Biblioteca de aprendizaje de máquinas Shark (http://image.diku.dk/shark/sphin…), que es LGPL / C ++ e incluye un Implementación de CMAES.
(Editar: puntuación extraviada).