Vai al contenuto
coden

Ottimizzazione con colonie di formiche: come una traccia di feromone trova un percorso breve

Stigmergia, l’esperimento del doppio ponte, il sistema di formiche di Dorigo, il ruolo dei parametri α, β e ρ e le varianti migliorate, su un giro tra i capoluoghi di regione cechi e su 60 città, a confronto con la ricottura.

13 minuti Matěj Žalmánek 2026-10-15

Serie Basi di IA Parte 29 di 52
  1. Mappa dell’intelligenza artificiale: che cos’è ciascuna cosa e come si incastra tutto
  2. Breve storia dell’intelligenza artificiale: da Turing ai modelli linguistici
  3. Dati, modello, addestramento, inferenza: i concetti di base su un unico esempio
  4. Come leggere la notazione matematica: simboli, indici, sommatorie e quantificatori
  5. Insiemi e relazioni: i mattoncini con cui si costruiscono le definizioni nell’IA
  6. Funzioni e applicazioni: perché ogni modello di IA è una funzione
  7. Logica e dimostrazioni: le regole con cui si ragiona nell’IA
  8. Grafi e alberi: la struttura su cui poggiano la ricerca e le reti neurali
  9. Algebra lineare per l’apprendimento automatico: vettori, matrici e perché l’IA soprattutto moltiplica
  10. Derivate, gradiente e regola della catena: come un modello capisce in quale direzione imparare
  11. Discesa del gradiente: come impara un modello
  12. Che cos’è la probabilità: dal lancio di un dado agli assiomi di Kolmogorov
  13. Probabilità condizionata e teorema di Bayes: come cambiare una stima quando scopri qualcosa di nuovo
  14. Variabile aleatoria e funzione di ripartizione: una sola funzione che dice tutto sulla distribuzione
  15. Funzione di densità e funzione di massa: perché una variabile continua ha probabilità zero in un punto
  16. Valore atteso, varianza e covarianza: dove si trova una distribuzione, quanto è larga e che cosa è legato a che cosa
  17. Panoramica delle distribuzioni di probabilità: Bernoulli, binomiale, Poisson, uniforme, normale ed esponenziale
  18. Legge dei grandi numeri e teorema del limite centrale: perché le medie si comportano in modo così prevedibile
  19. Statistica e stima dei parametri: massima verosimiglianza, MAP e intervalli di confidenza
  20. Teoria dell’informazione: entropia, entropia incrociata e divergenza KL — da dove vengono le funzioni di perdita
  21. Ricerca nello spazio degli stati: BFS, DFS, UCS e A* con animazioni
  22. Giochi e avversari: minimax, potatura alfa-beta e Monte Carlo tree search
  23. Soddisfacimento di vincoli: backtracking, propagazione dei vincoli e AC-3 su un sudoku e una mappa delle regioni ceche
  24. Logica e sistemi basati sulla conoscenza: concatenazione in avanti e all’indietro, risoluzione e sistemi esperti
  25. Pianificazione: STRIPS, il mondo dei blocchi, euristiche dal rilassamento e pianificazione negli agenti IA
  26. Ricerca locale e ricottura simulata: un commesso viaggiatore tra i capoluoghi di regione cechi
  27. Algoritmi genetici: popolazione, incrocio, mutazione e selezione su uno zaino per l’escursione
  28. Strategie evolutive e programmazione genetica: dalla regola di un quinto alla legge di Keplero
  29. Ottimizzazione con colonie di formiche: come una traccia di feromone trova un percorso breve
  30. Ottimizzazione a sciame di particelle: inerzia, esperienza propria ed esperienza dello sciame
  31. Neuroevoluzione: evoluzione dei pesi e della forma delle reti neurali e l’algoritmo NEAT
  32. Insiemi fuzzy e funzioni di appartenenza: come scrivere «un po’ caldo»
  33. Logica fuzzy e probabilità: perché «un po’ caldo» non significa «probabilmente caldo»
  34. Logica fuzzy: t-norme, implicazioni e regole SE–ALLORA
  35. Controllo fuzzy: Mamdani e Sugeno, dal ventilatore al pendolo inverso su un carrello
  36. Clustering fuzzy: l’algoritmo fuzzy c-means e i punti tra i cluster
  37. Sistemi neuro-fuzzy (ANFIS): regole fuzzy che imparano dai dati
  38. Catene di Markov: matrice di transizione, distribuzione stazionaria e PageRank
  39. Modelli di Markov nascosti: l’algoritmo di Viterbi e il casinò disonesto
  40. Reti bayesiane: perché l’erba è bagnata e che cosa significa per l’irrigatore
  41. Filtro di Kalman: come stimare da misure imprecise dove si trova un’auto e a che velocità va
  42. Tipi di apprendimento automatico: supervisionato, non supervisionato, semi-supervisionato e altri
  43. Prompt, contesto e RAG: come dare a un modello le informazioni giuste
  44. Autoencoder variazionali (VAE): immagini nuove da uno spazio latente continuo
  45. Reti generative avversarie (GAN): il falsario contro il detective
  46. Modelli di diffusione: come il rumore puro diventa un’immagine
  47. Processi decisionali di Markov: stati, azioni, ricompense ed equazioni di Bellman
  48. Q-learning e DQN: imparare il valore delle azioni, dalla tabella alla rete neurale
  49. Policy gradient e PPO: imparare direttamente la politica
  50. Come funziona un agente IA: un modello linguistico in un ciclo con strumenti
  51. Programmare con agenti IA: incarico, test e controllo
  52. Valutazione e sicurezza dei sistemi di IA: come misurare e come sorvegliare

Programma completo della serie 52 di 83 argomenti pubblicati

Cosa porterai a casa
  • Come una colonia trova il percorso più breve anche se nessuna formica lo conosce.
  • Come il sistema di formiche costruisce i giri a partire da feromone e distanze, e perché il feromone deve evaporare.
  • Dove falliscono gli algoritmi a formiche e come li salvano le varianti migliorate e la ricerca locale.

Utile sapere prima: Ricerca locale e ricottura simulata: un commesso viaggiatore tra i capoluoghi di regione cechi

Una formica da sola non ha una mappa, non sa contare e vede a malapena pochi centimetri davanti a sé. Eppure la colonia trova in modo affidabile il percorso più breve dal formicaio al cibo. Nessuna formica lo conosce: nasce dal modo in cui tutte insieme marcano il terreno. All’inizio degli anni Novanta Marco Dorigo, del Politecnico di Milano, si accorse che lo stesso trucco si poteva applicare al problema del commesso viaggiatore. Nacque così l’ottimizzazione con colonie di formiche e, con essa, l’intero campo dell’intelligenza di sciame.

Riprende l’articolo Ricerca locale e ricottura simulata. Risolviamo lo stesso compito — un giro tra i capoluoghi di regione con un ottimo di 1 060,4 km —, così vedremo come se la cavano le formiche contro la ricottura.

1. Comunicare con le tracce

Definizione — stigmergia

La stigmergia è una comunicazione indiretta attraverso l’ambiente: un individuo modifica l’ambiente e questa modifica influenza ciò che faranno in seguito gli altri (o lui stesso). Il termine fu introdotto da Pierre-Paul Grassé nel 1959 studiando la costruzione dei termitai.

In parole semplici

Le formiche non si dicono niente, si lasciano messaggi sul terreno. Ovunque passino depongono feromone, una traccia odorosa che col tempo evapora. Una formica a un bivio va con maggiore probabilità dove la traccia ha un odore più forte. Come un sentiero battuto nell’erba: più gente ci passa, più diventa evidente e più altri lo percorreranno.

2. L’esperimento del doppio ponte

Nel 1989 Goss, Deneubourg e i loro colleghi costruirono per delle formiche argentine due ponti tra il formicaio e il cibo, uno lungo il doppio dell’altro. Dopo un po’ la maggior parte della colonia passava per quello più corto. Perché? Una formica che ha scelto il ramo corto arriva prima al cibo e, quando torna, il ramo corto è già marcato dalla parte del cibo. Il percorso corto si marca più in fretta e comincia a vincere.

Definizione — modello della scelta del ramo (Deneubourg et al.)

Se all’inizio sul ramo corto e su quello lungo ci sono quantità di feromone A e B, una formica sceglie il ramo corto con probabilità

P = (k + A)h / ((k + A)h + (k + B)h),

dove k stabilisce quanto fortemente una formica reagisce a una traccia debole e h > 1 amplifica le differenze. La formica depone feromone all’inizio del ramo scelto e alla sua fine quando arriva.

In parole semplici

Finché c’è poco feromone (meno di k), le formiche scelgono quasi a caso. Man mano che aumenta, decide sempre di più. L’esponente h = 2 fa sì che il doppio del feromone significhi un’attrazione quattro volte maggiore: un piccolo vantaggio si gonfia in fretta fino a diventare una netta prevalenza.

P = (k + A)h / ((k + A)h + (k + B)h)

P
la probabilità che la formica successiva prenda il ramo corto: la formica non decide con certezza, solo con un peso; il ramo lungo riceve il resto 1 − P
A
feromone sul ramo corto: l’unica cosa che la formica «sa» del percorso; più ce n’è, più il ramo corto attira
B
feromone sul ramo lungo: nel denominatore compete con il corto, quindi decide il rapporto tra le tracce, non la loro quantità assoluta
k
una «soglia di attenzione»: si somma allo stesso modo a entrambi i rami, così le prime molecole di feromone cambiano a malapena il rapporto; senza di essa la primissima formica deciderebbe per l’intera colonia
h
l’amplificatore: una potenza maggiore di 1 esagera la differenza; è proprio lei a trasformare un piccolo vantaggio casuale in retroazione positiva
La frazione «il mio peso diviso la somma di tutti i pesi» garantisce che le probabilità dei due rami diano insieme 1.
Esempio — come decidono k = 30 e h = 2

Sul ramo corto ci sono A = 20 unità di feromone, su quello lungo B = 10:

P = (30 + 20)2 / ((30 + 20)2 + (30 + 10)2) = 2 500 / (2 500 + 1 600) = 2 500 / 4 100 ≈ 0,610.

  • Tracce uguali (A = B, per esempio entrambe nulle): P = 0,500, puro caso.
  • Cinque unità contro zero: P = 352 / (352 + 302) ≈ 0,576; una piccola traccia non decide quasi nulla, è il lavoro di k.
  • A = 60, B = 10: P = 8 100 / (8 100 + 1 600) ≈ 0,835, già una netta prevalenza.
  • Senza amplificazione (h = 1), con A = 20 e B = 10 verrebbe solo 50 / 90 ≈ 0,556 invece di 0,610.

Una simulazione del modello (k = 30, h = 2, dieci formiche per passo, ramo corto di 5 passi, lungo di 10) mostra la quota di feromone sul ramo corto in otto colonie:

00,51 0150300450600 corto lungo tempo (passi di simulazione) quota sul ramo corto (0–1)
Doppio ponte: quota di feromone sul ramo corto in otto colonie

Sette colonie si sono stabilizzate sul ramo corto, una su quello lungo: le primissime formiche hanno scelto per caso il ramo lungo e la retroazione positiva lo ha «bloccato». Su cento colonie, 85 sono finite sul ramo corto e 9 su quello lungo. Quando i due rami sono lunghi uguali, le colonie si dividono più o meno a metà (46 e 42): la simmetria la rompe il caso. La lunghezza del percorso sposta dunque il risultato, ma non lo garantisce. Vedremo la stessa debolezza nell’algoritmo.

3. Il sistema di formiche

Il sistema di formiche di Dorigo (Ant System, 1992) manda formiche virtuali su un grafo di città. Ciascuna costruisce un giro completo e, a seconda di quanto è corto, depone feromone sui suoi archi.

Definizione — giro e sua lunghezza

Sono date n città e distanze dij = dji > 0. Un giro è un ordine delle città π = (π1, …, πn) in cui ogni città compare esattamente una volta; la sua lunghezza è

L(π) = dπ1π2 + dπ2π3 + … + dπnπ1

— l’ultimo termine riporta il viaggiatore a casa. Un arco (i, j) appartiene al giro se i e j vi si susseguono direttamente. Il problema del commesso viaggiatore cerca il giro di lunghezza minima.

Definizione — regola di transizione

Una formica nella città i va in una città j non ancora visitata con probabilità

pij = τijα · ηijβ / ∑l τilα · ηilβ,

dove τij è il feromone sull’arco, ηij = 1 / dij è la visibilità (le città vicine sono più allettanti) e la somma corre su tutte le città non visitate l. I parametri α e β pesano la traccia rispetto alla distanza.

In parole semplici

Una formica decide in base a due cose: quante compagne sono passate di lì (feromone) e quanto è lontano (visibilità). Non sceglie mai con certezza: favorisce soltanto alcune possibilità. Per questo ogni formica costruisce un giro un po’ diverso.

pij = τijα · ηijβ / ∑l ∈ Ni τilα · ηilβ

pij
la probabilità di un passo da i a j: estraiamo a sorte invece di scegliere il migliore, perché la colonia continui a provare anche altri giri
τijα
la memoria della colonia: il feromone porta l’esperienza delle formiche precedenti; l’esponente α dice quanto fidarsene (α = 0 la spegne del tutto)
ηijβ
avidità: η = 1 / d favorisce le città vicine; è un consiglio che abbiamo gratis fin dalla prima iterazione, quando il feromone non sa ancora niente
∑ … su Ni
la somma dei pesi di tutte le città non ancora visitate: dividendo, i pesi diventano probabilità con somma 1; le città visitate non ci sono, quindi la formica non ci torna
Il prodotto significa che un arco deve essere buono sotto entrambi gli aspetti: un arco senza feromone, o un arco verso una città lontana, ha poche probabilità anche se eccelle nell’altro.
Esempio — una decisione di una formica

Una formica si trova nella città i e le restano tre città: a 50, 100 e 150 km, con feromone τ = 1, 3 e 2. La costante nella visibilità si semplifica nella frazione, quindi calcoliamo con η = 100 / d, cioè 2, 1 e 2/3. Con α = 1 e β = 3:

  • pesi: 1 · 23 = 8,000, 3 · 13 = 3,000, 2 · (2/3)3 ≈ 0,593;
  • la loro somma 11,593;
  • probabilità 0,690, 0,259 e 0,051.

Vince la città più vicina, pur avendo meno feromone. Con β = 1 verrebbe 0,316, 0,474 e 0,211: comanda il feromone. E con β = 0 decide solo la traccia: 0,167, 0,500 e 0,333 (proporzioni 1 : 3 : 2).

Definizione — aggiornamento del feromone

Dopo ogni iterazione il feromone evapora ovunque e ogni formica m aggiunge sugli archi del suo giro di lunghezza Lm una quantità proporzionale a 1 / Lm:

τij ← (1 − ρ) · τij + ∑m : (i, j) ∈ giro m Q / Lm,

dove ρ ∈ (0, 1) è il tasso di evaporazione.

In parole semplici

I giri corti lasciano una traccia più forte, così gli archi che vi ricorrono spesso si rafforzano a poco a poco. L’evaporazione è dimenticare: una traccia che nessuno rinnova scompare. Senza di essa la colonia resterebbe aggrappata per sempre a ciò che ha scoperto nelle prime iterazioni.

τij ← (1 − ρ) · τij + ∑m : (i, j) ∈ giro m Q / Lm

τij a sinistra
il nuovo feromone sull’arco: ciò in base a cui decideranno le formiche della prossima iterazione
(1 − ρ)
evaporazione: ogni iterazione toglie a ogni traccia la stessa frazione ρ; l’esperienza vecchia si affievolisce così geometricamente e la colonia può riapprendere
τij a destra
il feromone finora: la memoria viene solo corretta, non si riparte da zero
∑m
somma sulle formiche che hanno percorso l’arco: ogni formica aggiunge solo sugli archi del proprio giro; un arco usato da più formiche riceve di più: qui si contano i «voti» della colonia
Q / Lm
una ricompensa inversamente proporzionale alla lunghezza del giro: giro più corto = traccia più forte; la costante Q fissa solo la scala
Esempio — un aggiornamento

Un arco ha τ = 1, ρ = 0,3, Q = 1 000 e lo hanno percorso due formiche con giri lunghi 1 100 e 1 300 km:

τ ← 0,7 · 1 + 1 000 / 1 100 + 1 000 / 1 300 ≈ 0,700 + 0,909 + 0,769 = 2,378.

Un arco che nessuno ha percorso ha dopo la stessa iterazione solo 0,7. La formica con il giro più corto ha aggiunto di più (0,909 contro 0,769).

import random

def postav_okruh(start, n, tau, d, alfa=1, beta=3):
    okruh, volna = [start], set(range(n)) - {start}
    while volna:
        i = okruh[-1]
        kandidati = list(volna)
        vahy = [tau[i][j] ** alfa * (1 / d[i][j]) ** beta for j in kandidati]
        j = random.choices(kandidati, weights=vahy)[0]
        okruh.append(j)
        volna.remove(j)
    return okruh

def aktualizuj(tau, okruhy, delka, rho=0.3, Q=1.0):
    for radek in tau:
        for j in range(len(radek)):
            radek[j] *= 1 - rho                 # evaporazione
    for okruh in okruhy:
        L = delka(okruh)
        for a, b in zip(okruh, okruh[1:] + okruh[:1]):
            tau[a][b] += Q / L                  # giro più corto, traccia più forte
            tau[b][a] += Q / L

L’intero sistema di formiche si limita poi ad alternare la costruzione dei giri e l’aggiornamento, e ricorda il miglior giro che qualcuno abbia mai costruito:

def mravenci_system(n, d, mravencu, iteraci, tau0):
    tau = [[tau0] * n for _ in range(n)]      # all’inizio uguale ovunque
    nejlepsi = None
    for it in range(iteraci):
        okruhy = [postav_okruh(m % n, n, tau, d) for m in range(mravencu)]
        aktualizuj(tau, okruhy, delka)        # evaporazione + nuova traccia
        kandidat = min(okruhy, key=delka)
        if nejlepsi is None or delka(kandidat) < delka(nejlepsi):
            nejlepsi = kandidat
    return nejlepsi

4. Le formiche sui capoluoghi di regione

Liberiamo 13 formiche (una da ogni città) per 100 iterazioni con α = 1, β = 3 e ρ = 0,3. La mappa mostra il feromone sugli archi dopo la 1ª, la 5ª, la 20ª e la 100ª iterazione; più spessa è la linea, più feromone c’è:

0100200300 050100150 ovest → est (km) sud → nord (km) iterazione 1 · giro migliore 1 292,6 km iterazione 5 · giro migliore 1 060,4 km iterazione 20 · giro migliore 1 060,4 km iterazione 100 · giro migliore 1 060,4 km Praha Brno Ostrava Plzeň Liberec Olomouc Ústí nad Labem Hradec Králové České Budějovice Pardubice Zlín Jihlava Karlovy Vary
Feromone sugli archi tra i capoluoghi di regione

Nella prima iterazione la traccia è distribuita quasi ovunque e il giro migliore misura 1 292,6 km. Già nella quinta iterazione una delle formiche trova l’ottimo di 1 060,4 km. Il feromone si concentra poi sugli archi dei giri buoni — le linee deboli spariscono, quelle forti restano — e la formica media costruisce un giro lungo circa 1 250 km. La colonia non converge del tutto, continua sempre a provare un po’.

Traccia dell’esecuzione per iterazioni: il giro migliore trovato finora e il giro medio delle tredici formiche nell’iterazione data:

IterazioneMigliore finoraMedia dell’iterazione
11 292,6 km1 477,7 km
21 208,6 km1 424,0 km
31 208,6 km1 450,0 km
41 097,7 km1 376,7 km
51 060,4 km1 330,2 km
101 060,4 km1 267,7 km
1001 060,4 km1 247,2 km

Il giro migliore migliora a salti (la terza iterazione non ha portato nulla di nuovo, la quarta ha tolto 111 km), mentre la media scende più lentamente e in modo irregolare: le formiche estraggono a sorte, quindi anche in una buona iterazione alcune costruiscono giri scadenti. La differenza tra la media e il migliore è proprio l’esplorazione che impedisce alla colonia di congelarsi del tutto.

Non sempre va così bene. Su venti esecuzioni con semi diversi solo 7 hanno trovato l’ottimo; la media è stata di 1 073,9 km e il risultato peggiore di 1 083,0 km. La ricottura, con 98 su 100 sullo stesso compito, è stata più affidabile. Per avere un’idea: il «vicino più prossimo» goloso, che va sempre nella città non visitata più vicina, dà da 1 120 a 1 336 km a seconda della partenza. Le formiche sono nettamente migliori, ma il sistema di formiche di base da solo non è un campione: per questo sono nate le sue varianti migliorate.

5. A che cosa servono α, β e ρ

Su tredici città si può risolvere molto anche senza feromone. La differenza la mostra solo un compito più grande: le stesse 60 città casuali dell’articolo sulla ricottura, 30 formiche, 150 iterazioni, media di tre esecuzioni:

ImpostazioneLunghezza mediaMigliore dei tre
α = 1, β = 3, ρ = 0,32 262,7 km2 194,0 km
α = 0 (senza feromone)3 049,8 km3 037,9 km
β = 0 (senza distanze)8 648,5 km8 422,4 km
ρ = 0,02 (il feromone quasi non evapora)2 374,5 km2 370,4 km
ρ = 0,9 (il feromone evapora quasi subito)2 274,1 km2 242,4 km
  • Senza feromone (α = 0) le formiche sono solo viaggiatori golosi casuali e non imparano nulla: giri più lunghi di un terzo.
  • Senza distanze (β = 0) la colonia non ha nulla da cui partire: i primi giri sono del tutto casuali e il feromone che lasciano porta ad altri giri casuali.
  • Un’evaporazione lenta mantiene troppo a lungo le tracce dei primi giri, scadenti, e la colonia impara lentamente. Un’evaporazione rapida, al contrario, dimentica anche ciò che è buono.

Per quanto tempo la colonia ricorda si può calcolare esattamente. Basta seguire un solo arco.

Teorema — feromone stazionario e tempo di dimezzamento dell’evaporazione

Se un arco riceve a ogni iterazione lo stesso incremento Δ ≥ 0, cioè τt+1 = (1 − ρ) τt + Δ, allora

τt = Δ/ρ + (1 − ρ)t (τ0 − Δ/ρ) → Δ/ρ per t → ∞.

Senza incremento (Δ = 0) la traccia scende alla metà in t½ = ln 2 / (−ln(1 − ρ)) iterazioni.

Dimostrazione. Sottraendo Δ/ρ da entrambi i membri della ricorrenza si ottiene τt+1 − Δ/ρ = (1 − ρ)(τt − Δ/ρ), perché (1 − ρ)Δ/ρ + Δ = Δ/ρ. Lo scarto da Δ/ρ viene dunque moltiplicato a ogni iterazione per il numero 1 − ρ ∈ (0, 1) e decresce geometricamente verso zero. Il tempo di dimezzamento è la soluzione di (1 − ρ)t = ½. ∎

τ* = Δ / ρ

τ*
il livello a cui si stabilizza il feromone dell’arco: apporto ed evaporazione sono in equilibrio
Δ
quanto riceve l’arco per iterazione: gli archi dei giri frequenti e corti hanno un Δ grande e quindi anche un livello alto
ρ
nel denominatore: un’evaporazione lenta lascia crescere molto le tracce e le differenze tra gli archi si livellano a lungo; una rapida le tiene basse e dipendenti solo dalle ultime iterazioni
Il feromone stazionario è l’incremento Δ per 1/ρ: come se l’arco sommasse gli incrementi all’incirca delle ultime 1/ρ iterazioni. Tanto è lunga la memoria della colonia.

Un arco con τ0 = 1 e ρ = 0,3: uno riceve a ogni iterazione Δ = 1, l’altro non lo usa nessuno.

t0123510
Δ = 11,001,702,192,532,943,27
Δ = 01,000,700,490,340,170,03

L’arco usato si avvicina a 1/0,3 ≈ 3,33, quello inutilizzato in dieci iterazioni scende sotto tre centesimi. Il tempo di dimezzamento dell’evaporazione per le righe della tabella sopra: con ρ = 0,3 è di 1,94 iterazioni, con ρ = 0,02 ben 34,31 iterazioni — le tracce dei primi giri casuali dominano quindi ancora per decine di iterazioni — e con ρ = 0,9 solo 0,30 iterazioni, così la colonia ricorda praticamente solo l’ultimo turno.

L’impostazione migliore ha dato da 2 194 a 2 314 km, in modo paragonabile alla ricottura dell’articolo precedente, che sulle stesse città è finita tra 2 210 e 2 270 km.

6. Formiche migliori

  • La strategia elitista aggiunge feromone extra sul miglior giro trovato finora, perché non vada perso.
  • MAX–MIN Ant System (Stützle e Hoos, 2000) permette di deporre feromone solo alla formica migliore e mantiene τ tra un limite inferiore e uno superiore. Il limite inferiore garantisce che nessun arco scompaia del tutto, e così la colonia non si congela prematuramente, come quella che nell’esperimento del ponte è finita sul ramo lungo.
  • Ant Colony System (Dorigo e Gambardella, 1997) sceglie con una certa probabilità direttamente l’arco migliore e toglie feromone già durante la costruzione del giro, perché le altre formiche provino altrove.
  • Ricerca locale. In pratica ogni giro costruito da una formica viene ancora rifinito con mosse 2-opt dall’articolo sulla ricottura. Le formiche trovano una buona regione, l’hill climbing la perfeziona: negli anni Novanta questa combinazione era tra i metodi migliori per il commesso viaggiatore.
Definizione — strategia elitista e MAX–MIN Ant System

La strategia elitista aggiunge all’aggiornamento consueto ancora e · Q / Lbest su ogni arco del miglior giro trovato finora, di lunghezza Lbest; e è il numero di «formiche elitiste».

MAX–MIN Ant System depone feromone solo secondo l’unico giro migliore e taglia il risultato all’intervallo [τmin, τmax]:

τij ← min(τmax, max(τmin, (1 − ρ) τij + Δij)), dove Δij = 1 / Lbest per gli archi del giro migliore, altrimenti 0.

Come limite superiore Stützle e Hoos scelgono τmax = 1 / (ρ Lbest), esattamente il valore stazionario Δ/ρ del teorema sopra per un arco che si trova ogni volta nel giro migliore. Il limite inferiore è una piccola frazione di quello superiore; inoltre all’inizio il feromone viene impostato a τmax, perché le prime iterazioni esplorino il più ampiamente possibile.

Definizione — regole di Ant Colony System

Regola proporzionale pseudocasuale: una formica nella città i estrae q da [0, 1). Se q ≤ q0, va direttamente nella città con il peso maggiore, j = arg maxl ∈ Ni τil · ηilβ; altrimenti sceglie a sorte secondo la regola di transizione del sistema di formiche.

Aggiornamento locale: subito dopo il passaggio sull’arco (i, j), τij ← (1 − ξ) τij + ξ τ0, così un arco usato si indebolisce un po’ verso il valore iniziale τ0.

Aggiornamento globale dopo un’iterazione, solo sugli archi del giro migliore: τij ← (1 − ρ) τij + ρ / Lbest.

Dorigo e Gambardella (1997) nell’articolo originale usano q0 = 0,9, β = 2 e ρ = ξ = 0,1: in nove passi su dieci la formica prende quindi l’arco migliore e solo nel decimo esplora.

7. Dove lavorano le formiche

  • Instradamento nelle reti. L’algoritmo AntNet (Di Caro e Dorigo, 1998) manda nella rete piccoli pacchetti-formica che misurano i ritardi e aggiornano le tabelle di instradamento. La rete si adatta così di continuo alla congestione.
  • Percorsi dei veicoli e pianificazione. Consegna delle merci, raccolta dei rifiuti o ordine delle commesse in produzione: compiti affini al commesso viaggiatore, in cui gli algoritmi a formiche si usano insieme alla ricerca locale.
  • Intelligenza di sciame. Una colonia di formiche è uno degli esempi di come da individui semplici e regole locali nasca un comportamento intelligente dell’insieme. Un altro, lo sciame di particelle, è il tema del prossimo articolo.

8. Riepilogo

  • Le formiche comunicano con tracce nell’ambiente (stigmergia): un percorso più corto si marca più in fretta e la retroazione positiva lo rafforza.
  • Nel modello del doppio ponte 85 colonie su 100 si stabilizzano sul ramo corto, ma il caso può bloccare anche quello lungo.
  • Il sistema di formiche sceglie la città successiva in base al feromone τα e alla distanza ηβ; il feromone evapora al tasso ρ e i giri corti ne aggiungono di più.
  • Sui capoluoghi di regione ha trovato l’ottimo, ma solo in 7 esecuzioni su 20; su 60 città se l’è cavata in modo paragonabile alla ricottura. Senza feromone e senza distanze, nettamente peggio.
  • Le varianti usate nella pratica (MAX–MIN, ACS) impediscono il congelamento prematuro e combinano le formiche con la ricerca locale.

Vuoi provare di persona? Chiedi a un agente IA di scrivere una simulazione del doppio ponte e prova che cosa succede se a metà esperimento «chiudi» il ramo corto: la colonia riesce a tornare su quello lungo?

La vedi diversamente? Scrivi a support@coden-app.com.

Un Agente sul tuo computer, guidato dal telefono