Sono uno studente che lavora su un simulatore di colonie di formiche per un progetto di corso. L'algoritmo per esso è (ovviamente) un algoritmo di colonia di formiche. So che ci sono varie forme dell'algoritmo, ma tutte erano matematicamente dettagliate per noi, quindi abbiamo adottato un approccio in cui abbiamo:
- Una formica nasce in una colonia e deve raccogliere cibo da una fonte per sostenere la colonia.
- Tutte le formiche sono simili.
- L'area in cui si muove la formica è una griglia 1000x1000, quindi ogni punto della griglia serve come punto valido per una formica da occupare. Ora, tutti gli algoritmi che ho incontrato coinvolgono il trattamento di vertici e spigoli separatamente, ma poiché limitiamo il movimento delle formiche a sole quattro direzioni (su, giù, sinistra, destra), immagino che non importa dove mettiamo il feromone.
- I punti della griglia menzionati sopra memorizzano il feromone.
- Una formica rilascia il feromone solo se trasporta cibo.
- Per una formica in una posizione (i, j), decide dove muoversi nel passaggio successivo prendendo in considerazione le quantità di feromone sui suoi quattro nodi adiacenti in una semplice formula probabilistica, vale a dire. la probabilità di viaggiare verso un nodo è data da (quantità di feromoni in particolare nodo adiacente) / (somma delle quantità di feromone in 4 nodi adiacenti).
- Una formica non può tornare alla posizione da cui è appena uscita. Può farlo solo se si trova in un sito che ha cibo o è nella sua colonia.
Ora la mia preoccupazione è (e cosa sta realmente accadendo nel nostro programma) che quando una formica PRIMA raggiunge una posizione che ha cibo e la raccoglie, allora dal nostro algoritmo funziona, può muoversi ovunque! Questo perché lascerà solo una traccia di feromone, una volta che avrà il cibo e non prima e siccome è la prima formica, non c'è traccia esistente.
Se la formica può muoversi ovunque, le formiche che raggiungono la fonte di cibo dopo di essa tenderanno anche a seguirla. ANCHE SE non si sta spostando di nuovo verso la colonia. Ciò sconfigge lo scopo dell'intero algoritmo.
Quindi le mie domande sono
- La preoccupazione sopra riportata è valida? Se no, allora perché? Se sì, allora come affrontarlo?
- Abbiamo bisogno di apportare alcune modifiche alla nostra comprensione di base dell'algoritmo per farlo funzionare davvero?
- Quali sono alcune altre cose sottili ma importanti che i neofiti come me potrebbero perdere in questo caso?