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 troppo dettagliate matematicamente 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 di 1000x1000, quindi ogni punto della griglia funge da punto valido per l'occupazione di una formica. Ora, tutti gli algoritmi che ho riscontrato coinvolgono il trattamento di vertici e bordi separatamente, ma poiché stiamo limitando il movimento delle formiche a solo quattro direzioni (su, giù, a sinistra, a destra) immagino che non importa dove mettiamo il feromone.
- I punti della griglia sopra menzionati memorizzano il feromone.
- Una formica fa cadere il feromone solo se trasporta cibo.
- Per una formica in una posizione (i, j), decide dove spostarsi nel passaggio successivo prendendo in considerazione le quantità di feromoni sui suoi quattro nodi adiacenti in una semplice formula probabilistica, ovvero la probabilità di viaggiare verso un nodo è data da (quantità di feromone in un particolare nodo adiacente) / (somma di quantità di feromone in 4 nodi adiacenti).
- Una formica non può tornare nella posizione da cui è appena arrivata. Può farlo solo se si trova in un sito che ha cibo o è nella sua colonia.
Ora la mia preoccupazione è (e ciò che sta realmente accadendo nel nostro programma) che quando una PRIMA formica raggiunge una posizione che ha cibo e lo prende, allora il nostro algoritmo funziona, può spostarsi ovunque! Questo perché lascerà solo una scia di feromoni, una volta che avrà il cibo e non prima e dato che è la prima formica, non c'è traccia esistente.
Se la formica può spostarsi ovunque, anche le formiche che raggiungono la fonte di cibo dopo tenderanno a seguirla. ANCHE SE non si sta spostando indietro verso la colonia. Ciò vanifica lo scopo dell'intero algoritmo.
Quindi le mie domande sono
- La preoccupazione di cui sopra è valida? Se no, allora perché? Se sì, allora come gestirlo?
- Dobbiamo apportare alcune modifiche alla nostra comprensione di base dell'algoritmo per farlo funzionare davvero?
- Quali sono alcune altre cose sottili ma importanti che i principianti come me potrebbero perdere in questo caso?