Soy un estudiante que trabaja en un simulador de colonias de hormigas para un proyecto de curso. El algoritmo para ello es (obviamente) un algoritmo de colonias de hormigas. Sé que hay varias formas del algoritmo, pero todas eran demasiado detalladas matemáticamente para nosotros, por lo que adoptamos un enfoque en el que tenemos:
- Una hormiga nace en una colonia y debe recolectar alimentos de una fuente para mantener la colonia.
- Todas las hormigas son similares.
- El área en la que se mueve la hormiga es una cuadrícula de 1000x1000, por lo que cada punto de la cuadrícula sirve como un punto válido para que una hormiga lo ocupe. Ahora, todos los algoritmos que he encontrado implican tratar los vértices y los bordes por separado, pero como estamos restringiendo el movimiento de las hormigas a solo cuatro direcciones (arriba, abajo, izquierda, derecha), supongo que no importa dónde coloquemos la feromona.
- Los puntos de la cuadrícula mencionados anteriormente almacenan la feromona.
- Una hormiga deja caer feromona solo si transporta alimentos.
- Para una hormiga en una posición (i, j), decide dónde moverse en el siguiente paso teniendo en cuenta las cantidades de feromona en sus cuatro nodos adyacentes en una fórmula probabilística simple, es decir, la probabilidad de viajar a un nodo viene dada por (cantidad de feromona en un nodo adyacente particular) / (suma de cantidades de feromona en 4 nodos adyacentes).
- Una hormiga no puede regresar a la posición de la que acaba de llegar. Solo puede hacerlo si está en un sitio que tiene comida o está en su colonia.
Ahora mi preocupación es (y lo que realmente está sucediendo en nuestro programa) que cuando una hormiga PRIMERO alcanza una posición que tiene comida y la recoge, entonces, por la forma en que funciona nuestro algoritmo, ¡puede moverse a cualquier parte! Esto se debe a que solo dejará un rastro de feromona, una vez que tenga la comida y no antes, y como es la primera hormiga, no hay rastro existente.
Si la hormiga puede moverse a cualquier parte, las hormigas que alcanzan la fuente de alimento después de que también tienden a seguirla. INCLUSO SI no se está moviendo hacia la colonia. Esto anula el propósito de todo el algoritmo.
Entonces mis preguntas son
- ¿Es válida la preocupación anterior? Si no, ¿por qué? Si es así, ¿cómo lidiar con eso?
- ¿Necesitamos hacer algunos cambios en nuestra comprensión básica del algoritmo para que realmente funcione?
- ¿Cuáles son algunas otras cosas sutiles pero importantes que los novatos como yo pueden perder en este caso?