He estado leyendo cosas aquí y allá por un tiempo sobre el uso de un modelo de "colonia de hormigas" como un enfoque heurístico para optimizar varios tipos de algoritmos. Sin embargo, aún no he encontrado un artículo o libro que analice las optimizaciones de colonias de hormigas de manera introductoria o incluso con muchos detalles. ¿Alguien puede señalarme algunos recursos donde puedo aprender más sobre esta idea?¿Dónde puedo obtener más información sobre las optimizaciones de "colonia de hormigas"?
Respuesta
En caso de que sepa alemán (sí, lo siento ...), un amigo y yo hemos escrito un introduction with code sobre este tema que me parece bastante aceptable. El texto y el código usan el ejemplo de TSP para introducir el concepto.
Incluso si no sabe alemán, eche un vistazo al código y las fórmulas en el texto, esto podría seguir sirviendo.
Ver por ejemplo this article en scholarpedia.
También hay discusión aquí en la pregunta What is the most efficient way of finding a path through a small world graph?.
National Geographic escribió an interesting article un momento atrás hablando de algunas de las teorías.
A primera vista, esto parece estar estrechamente relacionado con (o quizás un caso especial de) the Metropolis algorithm. Entonces esa es otra dirección posible para buscar.
Adición:This PDF file incluye una referencia al documento original Metropolis de 1953.
El mejor recurso para estos temas es Google scholar. He estado trabajando en algoritmos de optimización de colonia de hormigas por un tiempo, aquí hay algunos buenos artículos:
- Ant Colony Optimization - A New Metaheuristic
- Ant Colony Optimization - Artificial Ants as a Computational Intelligence Technique
Sólo search for "Ant Colony" on google scholar.
Además, busque los artículos publicados por Marco Dorigo.
Bueno, encontré el Homepage of Eric Rollins y sus diferentes implementaciones (Haskell, Scala, Erlang, ...) de un algoritmo ACO útil. Y también el Libro de Enrique Alba, titulado "Metaheurísticas Paralelas: Una Nueva Clase de Algoritmos" donde puedes encontrar un capítulo completo de explicación sobre los Algoritmos ACO y sus diferentes usos.
HTH
link Wikipedia realmente me inició. Leí el artículo y llegué a la codificación. Estaba resolviendo una variación perversa del problema del vendedor ambulante. Es una meta-heurística sorprendente. Básicamente, cualquier tipo de problema de búsqueda que se pueda poner en un gráfico (nodos & bordes, simétricos o no) se puede resolver con un ACO.
Tenga en cuenta la diferencia entre los rastros de feromonas locales y mundiales. Feromonas locales desalentar una generación de hormigas de atravesar la misma ruta. Evitan que el modelo converja. Las feromonas globales son atrayentes y deberían atrapar al menos una hormiga por generación. Fomentan trayectorias óptimas a lo largo de varias generaciones.
La mejor sugerencia que tengo, es simplemente jugar con el algoritmo. Configure un solucionador de TSP básico y una visualización básica de colonia. Entonces diviértete. Trabajar con hormigas, conceptualmente, es genial. Usted programa sus comportamientos básicos y luego los suelta. Incluso me encariñé con ellos. :)
Los ACO son una forma más codiciosa de algoritmos genéticos. Jugar con ellos. Alterar sus comportamientos comunicativos y comportamiento de empacar. Pronto comenzará a ver la programación de redes/gráficos de una manera completamente diferente. Ese es su mayor beneficio, no la receta que la mayoría de las personas lo ven así.
Simplemente tienes que jugar con eso para realmente entenderlo. Los libros & documentos de investigación solo ofrecen una comprensión general de alto nivel. Como una bicicleta, solo debes comenzar a montar. :)
ACOs, de lejos, son mi abstracción favorita para los problemas de gráfico.
Soy sorprende que nadie ha mencionado la biblia de ACO:
Marco Dorigo & Thomas Stützle: Ant Colony Optimization
Este libro está escrito por el autor de ACO y es muy fácil de leer. Puedes llevarlo a la playa y divertirte leyéndolo. Pero también es el recurso más completo de todos, excelente como referencia a la hora de implementarlo.
Puede leer algunos excerpts on Google Books
Otra gran fuente de la sabiduría es el ACO Homepage
- 1. ¿Cómo y dónde puedo obtener más información sobre el optimizador de Perl?
- 2. ¿Dónde puedo obtener información sobre los sistemas de recomendación?
- 3. ¿Dónde puedo obtener información sobre el kernel de Windows?
- 4. ¿Dónde puedo encontrar información sobre las variables especiales de Perl?
- 5. ¿Dónde puedo obtener más información sobre la función de traducción de PyPy?
- 6. ¿Dónde puedo obtener más información sobre los modificadores de acceso de clase D's?
- 7. ¿Dónde puedo obtener más información sobre el algoritmo de búsqueda de Google "¿qué quiso decir?
- 8. Análisis, ¿dónde puedo obtener información al respecto
- 9. obtener información sobre las dependencias de maven
- 10. ¿Cómo puedo obtener más información sobre las partes internas de Python?
- 11. . Contratos de código .Net: ¿dónde obtener más información?
- 12. ¿Dónde puedo obtener información sobre el diseño de arquitectura de proyecto C# correcto?
- 13. ¿Dónde puedo encontrar información sobre la estructura de Delphi VMT?
- 14. Más información sobre informática distribuida
- 15. Dónde puedo encontrar información sobre el atributo C++ [[obsoleto]]
- 16. Optimización de Colonia de Hormigas o Algoritmo Genético para el problema basado en porcentaje
- 17. ¿Dónde puedo obtener información técnica sobre cómo funciona el interior de Django?
- 18. Necesito más información sobre HandleError
- 19. ¿Dónde puedo encontrar información sobre las API de blog y cómo usarlas?
- 20. ¿Dónde puedo obtener información sobre cómo iniciar la programación de C# con MVC/ASP.NET?
- 21. ¿Dónde puedo obtener información sobre los distintos tipos de listas .NET?
- 22. ¿Cómo obtener más información sobre el evento Application Hang?
- 23. Más información sobre `({});` en C?
- 24. ¿Dónde puedo aprender sobre las cadenas JNDI?
- 25. obtener información sobre un conjunto
- 26. ¿Dónde puedo aprender sobre MEF?
- 27. ¿Dónde encontrar información sobre los códigos de mensajes WM Windows?
- 28. ¿Dónde puedo obtener información acerca de las partes internas de PHP?
- 29. ¿Cómo puedo obtener más información útil de NSError?
- 30. ¿Dónde puedo encontrar información sobre las partes internas del motor Javascript?
Gracias a este enlace! Desafortunadamente, mi alemán se limita a lo que aprendí en la escuela media (¿quiero hablar sobre el clima?), Pero Google Translate hizo un gran trabajo en el artículo. – MattK
Creo que la traducción del cómic XKCD fue bastante bien ... el resto ... no tanto. ;-) Nota: Esta no es la forma en que alemán hablo en normal. –