Cercare il percorso minimo Ant Colony Optimization



Похожие документы
Intelligenza collettiva Swarm intelligence

Problemi, istanze, soluzioni

PROBLEMA DEL COMMESSO VIAGGIATORE

Il problema del commesso viaggiatore: da Ulisse alla Logistica integrata. Luca Bertazzi

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia

Algoritmi di ricerca locale

RICERCA OPERATIVA (a.a. 2018/19)

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Intelligenza collettiva Swarm intelligence. Swarm Intelligence. Intelligenza collettiva emergente in gruppi di agenti (semplici).

Algoritmi e giochi combinatori

trovare un percorso senza collisioni per passare da una configurazione ad un altra del sistema robotico

Problema del cammino minimo

Il problema del commesso viaggiatore

Cammini minimi fra tutte le coppie

2.2 Alberi di supporto di costo ottimo

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Euristiche per il Problema del Commesso Viaggiatore

Possibile applicazione

I Appello Ricerca Operativa 2 bis Compito A

Il metodo dei Piani di Taglio (Cutting Planes Method)

Il problema del commesso viaggiatore e problemi di vehicle routing

Algoritmi e Strutture Dati. Luciano Gualà

AMPL Problemi su Reti

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Ant Colony Optimization (ACO) e Swarm Intelligence

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Problema del trasporto

METODI DELLA RICERCA OPERATIVA

Fondamenti di Informatica

2.2 Alberi di supporto di costo ottimo

Algoritmo basato su cancellazione di cicli

Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST)

INSTRADAMENTO: ALGORITMO DI BELLMAN-FORD

Fondamenti di Informatica

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Richiami di inferenza statistica. Strumenti quantitativi per la gestione. Emanuele Taufer

Differenze divise. Polinomio di interpolazione nella forma di Newton. Proprietà. Se n=0. Simmetria. Ricorsività. Abbiamo un solo punto

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP

12.1 IL PROBLEMA DEL CAMMINO MINIMO: L ALGORITMO DI DIJKSTRA

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Транскрипт:

Cercare il percorso minimo Ant Colony Optimization Author: Luca Albergante 1 Dipartimento di Matematica, Università degli Studi di Milano 4 Aprile 2011 L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 1 / 12

Sommario Sommario 1 Il commesso viaggiatore (TSP) L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 2 / 12

Il problema Supponiamo di essere un commesso viaggiatore che deve visitare n città ritornando poi a quella iniziale. Quale ordine di visita scegliamo? Naturalmente lo scopo è quello di minimizzare la distanza percorsa (e quindi il costo). Questo problema è noto in letteratura come Travelling Salesman Problem (TSP), e come (forse) vedrete a lezione è un problema piuttosto complesso. L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 3 / 12

Quanti percorsi? Una analisi formale del problema richiederebbe alcune basi di teoria della complessità, quindi vediamo il tempo richiesto per affrontare il problema in maniera naïve. Supponiamo di dover visitare n città, come possiamo definire un percorso? Un idea è quella di elencare l ordine di visita delle città. Ad esempio per visitare Londra, Parigi e Milano ho le possibilità: Londra Parigi Milano Londra Milano Parigi Parigi Milano Londra Parigi Londra Milano Milano Parigi Londra Milano Londra Parigi L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 4 / 12

Quanti percorsi? Un percorso su n città è quindi una permutazione delle n città. Se volessi valutare il costo di ogni percorso per trovare il migliore quanti percorsi dovrei controllare? L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 5 / 12

Quanti percorsi? Un percorso su n città è quindi una permutazione delle n città. Se volessi valutare il costo di ogni percorso per trovare il migliore quanti percorsi dovrei controllare? Dovrei controllare n! percorsi (decisamente troppi!!) L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 5 / 12

Le formiche Le formiche sono piuttosto abili nel costruire percorsi utilizzando solo informazioni locali (anche se alcune specie conoscono la geografia del luogo...). Per costruire questi percorsi una formica rilascia un particolare marcatore chimico (feromoni) che attira le altre. Quando una formica esplora una zona in cerca di cibo, lascia una traccia. Se trova il cibo e torna indietro rinforza la traccia. I feromoni evaporano, quindi, tracce corte avranno più feromoni di tracce lunghe. L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 6 / 12

Le formiche Le altre formiche saranno attratte dalla traccia seguendola e rinforzandola. Quindi dopo un certo tempo un grande numero di formiche utilizzeranno quel percorso. Dato che una formica sceglie in maniera probabilistica il percorso da seguire (ci sono molte tracce ed ogni formica è solo attratta), se ci sono molte formiche, dopo un po il percorso scelto tenderà ad essere molto buono (idealmente ottimo). L algoritmo Ant Colony Optimization (ACO) è stato sviluppato da Dorigo ed è utilizzato per trovare cammini quasi-ottimi (non ho naturalmente la garanzia di avere l ottimo). L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 7 / 12

Le formiche Supponiamo che una formica k si trovi nel nodo i al tempo t e che possa dirigersi in uno dei nodi dell insieme N k i, questa formica si dirigerà al nodo j con la probabilità seguente: P k i,j (t) = ( τi,j (t) ) α ( ηi,j (t) ) β ( τi,j (t) ) α ( ηi,j (t) ) (1) β j N k i dove τ i,j è la quantità di feromone nell arco (i, j), η i,j (t) è dell informazione euristica conosciuta a priori, α è un parametro che controlla l effetto dei feromoni e β è un parametro che controlla l effetto dell informazione euristica. Nel TSP si pone { 1/d i,j se i j η i,j = 0 altrimenti dove d i,j è il costo per muoversi da i a j L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 8 / 12

Le formiche La traccia di feromoni sull arco (i, j) viene aggiornata come segue dove τ i,j (t) = ρ τ i,j (t 1) + n k=1 k i,j (t) (2) { Q k i,j (t) = L k (t) se l arco (i, j) è scelto dalla formica k 0 altrimenti dove ρ è il coefficiente di evaporazione del feromone (0 < ρ < 1), n è il numero di formiche, Q è la costante di aggiornamento per il feromone e L k (t) un costo associato con la distanza percorsa dalla formica k al tempo t (in genere conviene normalizzare il valore in maniera tale che per la formica che ha fatto il percorso minore L k (t) sia vicino allo 0). L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 9 / 12

Le formiche Fatte queste premesse l algoritmo procede come segue: ACO Inizializza i parametri e le n formiche while condizione do t t + 1 for i = 1 to n do Posiziona la formica i in un nodo iniziale a caso for j = 2 to numero città do muovi la formica i di un nodo utilizzando la formula 1 tieni traccia della mossa effettuata end for end for Aggiorna i feromoni utilizzando la formula 2 Tieni traccia della soluzione migliore trovata end while L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 10 / 12

Esercizio Scrivere un programma in MATLAB che utilizzi il sistema sopra descritto per trovare il percorso minimo fra 20 punti con coordinate (x, y) generate a caso tra 0 e 100. Utilizzate la distanza euclidea come costo. Plottate il costo medio dei percorsi col passare del tempo e l evoluzione dei percorsi (per ogni iterazione plottate solo il percorso migliore trovato). Nota: dato che il programma è piuttosto lungo sarebbe opportuno definire diverse funzioni per le varie parti (Inizializzazione, movimento delle formiche, calcolo dei costi, aggiornamento della traccia di feromoni). L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 11 / 12

Esercizio Il posizionamento delle formiche è piuttosto semplice: mi basterà per ogni formica scegliere un nodo iniziale a caso. Si noto che ogni formica deve percorrere tutti i nodi, quindi mi servirà una matrice (numero dei nodi) (numero delle formiche). Le formiche verranno mosse una alla volta, ed ogni formica completerà tutto il percorso. Conviene fare una copia locale della matrice dei feromoni e settare di volta in volta le degli 0 per le posizioni che ho già visitato. Dopo che tutte le formiche si sono mosse calcolo la lunghezza del percorso, e tengo traccia del minimo. La lunghezza del percorso calcolato verrà poi usata per aggiornare la traccia del feromone L. Albergante (Univ. of Milan) PSO 4 Aprile 2011 12 / 12