AGENTI CHE RISOLVONO PROBLEMI Ottimizzazione euristica

Slides:



Advertisements
Presentazioni simili
Apprendimento per rinforzo
Advertisements

Prof. Salvatore Di Gregorio Dr. William Spataro Dr. Donato D’Ambrosio
Politecnico di Torino Tesi di Laurea
Laboratorio Processi Stocastici
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Algoritmi e Strutture Dati
Ant colony optimization (ACO)
Chiara Mocenni - Sistemi di Supporto alle Decisioni I – aa Sistemi di Supporto alle Decisioni I Dynamic Programming Chiara Mocenni Corso di.
Chiara Mocenni - Sistemi di Supporto alle Decisioni I – aa Sistemi di Supporto alle Decisioni I Scelte di consumo Chiara Mocenni Corso di laurea.
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
Alberi binari di ricerca
Esplorazione dello spazio conformazionale usando metodi di simulazione
Gestione dei dati e della conoscenza (agenti intelligenti) M.T. PAZIENZA a.a
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Iterazione enumerativa (for)
Apprendimento Non Supervisionato
Apprendimento Automatico: Apprendimento per Rinforzo
Apprendimento per rinforzo
Apprendimento Automatico: Apprendimento per Rinforzo Roberto Navigli Apprendimento Automatico: Apprendimento per Rinforzo.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmo di Ford-Fulkerson
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Ricerca della Legge di Controllo
Cenni di ottimizzazione dinamica
Algoritmi Genetici Prof. Salvatore Di Gregorio Dr. William Spataro Dr. Donato DAmbrosio Modelli Computazionali per Sistemi Complessi A.A. 2003/2004 Università
Algoritmi e Strutture Dati
Studente Claudia Puzzo
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Intelligenza Artificiale Algoritmi Genetici
Intelligenza Artificiale
CALCOLO EVOLUZIONISTICO. In ogni popolazione si verificano delle mutazioni. Le mutazioni possono generare individui che meglio si adattano allambiente.
Apprendimento Automatico Calcolo Evoluzionistico Stefano Cagnoni.
Intelligenza Artificiale
Algoritmi Genetici Alessandro Bollini
Elementi di Informatica di base
Radix-Sort(A,d) // A[i] = cd...c2c1
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi e Strutture Dati
Seminario di Metodi Matematici per l’Ottimizzazione
Algoritmi e Strutture Dati
Euristiche: algoritmi costruttivi e di ricerca locale
Problemi con soddisfacimento dei vincoli
Applicazioni di intelligenza artificiale LS Manni Tiziano
MUTAZIONE: cambio di un bit Viene effettuata con bassa frequenza, ad es. 1bit ogni 1000 Ha la funzione di recupero di eventuali perdite di informazione.
Rete di Hopfield applicata al problema del TSP Federica Bazzano
Algoritmi online Maria Simi, a.a. 2007/08 Problemi di esplorazione  Gli agenti per il problem-solving assumono:  ambienti deterministici e osservabili.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Oltre la ricerca classica Cap 4 – Ricerca locale, ricerca online Maria Simi a.a. 2014/2015.
Allievi Elettrici - AA Le funzioni ricorsive in C
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Alessandro Bollini Dipartimento di Informatica e Sistemistica Università di Pavia Via Ferrata, Pavia Algoritmi Evolutivi.
Progettazione ottimizzata di dispositivi elettromagnetici Ing. Nunzio Salerno Modelli numerici per campi e circuiti.
Gli algoritmi genetici (GA)1 Si ispirano al meccanismo dell’evoluzione Viene creata una popolazione di individui che si riproduce ed evolve, di generazione.
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi (parte 2) Agostino Poggi.
Il Problema del Commesso Viaggiatore. Traveling Salesman’s Problem (TSP) Un commesso viaggiatore deve visitare un certo numero di città Conosce la distanza.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Ricerca locale M. Simi, Algoritmi di ricerca locale  Efficienti in occupazione di memoria: tengono traccia solo dello stato corrente (non.
Il simulated annealing (SA)
1 Il simulated annealing (SA) Analogia con il processo di solidificazione di un metallo fuso A partire dal metallo fuso, la temperatura viene abbassata.
Ricerca locale M. Simi, Algoritmi di ricerca locale  Efficienti in occupazione di memoria  tengono traccia solo dello stato corrente (non.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Progettazione ottimizzata di dispositivi elettromagnetici Ing. Nunzio Salerno Modelli numerici per campi e circuiti - A.A
Ricerca locale Maria Simi Assunzioni sui problemi  Gli algoritmi visti esplorano gli spazi di ricerca alla ricerca di un goal e restituiscono.
Algoritmi e Strutture Dati Luciano Gualà
Psicometria modulo 1 Scienze tecniche e psicologiche Prof. Carlo Fantoni Dipartimento di Scienze della Vita Università di Trieste Campionamento.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Se A e B sono variabili random statisticamente indipendenti P (2) (B,A)=P(B)P(A) P(A)=probabilità che la variabile stocastica A assuma un certo valore.
Transcript della presentazione:

AGENTI CHE RISOLVONO PROBLEMI Ottimizzazione euristica E.Mumolo mumolo@units.it

Il problema della ottimizzazione Componenti: Un insieme di variabili indipendenti Un insieme di condizioni sulle variabili (vincoli) Una funzione obiettivo Soluzione: I valori delle variabili che, rispettando i vincoli, portano la funzione obiettivo ad un valore ottimo In forma generale: Con i vincoli

Lo spazio di ricerca della soluzione Descritto da: Numero di dimensioni Dominio di ciascuna dimensione Discreto Limitato Reale Natura della relazione tra vettori di ingresso e funzione obiettivo Continua Discontinua Ricerca locale nello spazio di ricrca: non tiene conto delle soluzioni precedenti Considera solo la soluzione corrente Usa un metodo per generare soluzioni alternative.

Una tassonomia approssimata delle tecniche di ottimizzazione Tecniche enumerative Tecniche euristiche DFS Programmazione dinamica BFS Tabu Search Hill Climbing Simulated Annealing Algoritmi evoluzionistici Programmazione genetica Algoritmi genetici

Tecniche euristiche Tecniche per la soluzione di problemi mediante algoritmi iterativi che selezionano via via la soluzione più appropriata tra quelle ottenute a ciascun passo. Tra queste: Tabu search. Definisce come muoversi localmente da una soluzione all’altra usando una tabella delle soluzioni visitate recentemente Hill Climbing: parte da un punto e cerca punti con migliore funzione obiettivo Ant colony optimization: risolve problemi che possono essere ridotti alla ricerca di cammini ottimi in un grafo. Idea: le formiche in cerca di cibo esplorano a caso l’ambiente e quando lo trovano ritornano alla colonia lasciando tracce chimiche, eventualmente rinforzate da altre formiche Simulated annealing: ricerca la soluzione generando soluzioni vicine alla corrente. Soluzioni che portano a un valore superiore sono sempre accettate. Soluzioni che portano a un valore inferiore sono accettate probabilisticamente Genetic algorithms: mantiene un insieme di soluzioni che evolvono usando i principi della evoluzione Darwiniana

Hill Climbing varianti: stochastic hill climbing Non sceglie sempre il migliore first-choice hill climbing Prende il primo buon successore (utile se il numero di successori è grande) random restart Cerca il punto migliore da diversi punti di partenza Ovviamente la probabilità di trovare il massimo aumeta con l’aumentare del numero di tentativi

Algoritmi di ottimizzazione mediante Simulated Annealing Simulated Annealing: (~ tempera simulata) Idea: imitare quello che succede nel processo di tempera la tempera è il processo nel quale il metallo viene riscaldato e poi raffreddato lentamente Il materiale temperato viene arriva ad uno stato a minore energia nel quale le molecle si assestano su una posizione più stabile

Riassunto dell’algoritmo di minimizzazione selezione dei parametri iniziali perturba i parametri Valutazione Se v’ < v accetta la perturbazione Altrimenti accetta la perturbazione con Prob(E,T) Test di Metropolis Ripeti con stato e temperatura aggiornati

Test di Metropolis Prob (nello stato ad energia E) ~ Si approssima l’allineamento delle molecole in natura consentendo le transizioni verso l’alto con qualche probabilità Prob (nello stato ad energia E) ~ Funzione di distribuzione di probabilità di Boltzmann (Z normalizz., k cost.Boltzmann) Anche quando T è piccola, c’è una possibilità di accettazione Prob (accettazione) = Metropolis if E2 < E1, prob () > 1 if E2 > E1, possiamo trasferirci ad uno stato ad energia maggiore La velocità alla quale si decrementa T e la quantità di decremento è stabilito da una sequenza di tempera prestabilita (annealing schedule)

Pseudocodice del Simulated annealing Fissa un valore iniziale del parametro T sufficientemente alto: T0 Fissa la configurazione iniziale: i0 Ripeti Perturba la configurazione attuale: ij Calcola Dc=c(i)-c(j); Se Dc ≤ 0 Allora Accetta la configurazione j; Altrimenti Se (exp(-Dc/T) ≥ Random(0,1)) Allora FineSe FinoAQuando(l’equilibro termico è bene approssimato); Decrementa T; FinoAQuando(il criterio di stop è verificato);

Proprietà L’algoritmo può essere considerato come una successione di catene di Markov omogenee Si può realizzare delle catene non omogenee diminuendo la temperatura ad ogni iterazione Si può dimostrare che se T scende abbastanza lentamente, il processo converge all’ottimo globale con probabilità 1 presentato in: Kirkpatrick, Gelatt and Vecchi, “Optimization by Simulated Annealing”, Science, 220(4598):498-516, May 1983 per problemi di routing VLSI semplice da utilizzare per l’ottimizzazine vincolata

Sequenze di raffreddamento La temperatura iniziale, la temperatura finale e la sequenza di raffreddamento sono determinate sperimentalmente Alcuni schemi: t = at, dove a è tipicamente intorno a 0.95 t = e-bt t, dove b è tipicamente intorno a 0.7 ......

Parametri di SA Valore iniziale di temperatura determina l’efficienza dell’algoritmo un valore troppo basso fà convergere l’algoritmo ad un minimo locale un valore troppo alto fà si che le prime catene siano superflue possibile modo di determinare T0: Si fissa un valore arbitrario si esegue un certo numero di iterazioni si calcola il rapporto tra il numero di transizioni accettate e il numero di transizioni proposte se il rapporto è superiore a un numero prefissato (tipicamente 0.8), allora il valore di T0 proposto viene accettato, altrimenti si raddoppia tale valore e si ripete da 2.

Algoritmi Genetici (GA) Tecnica di ottimizzazione euristica; prende come modello il processo di evoluzione biologica NB: IL PROCESSO DI EVOLUZIONE BIOLOGICO E’ GROSSOLANAMENTE APPROSSIMATO!!! Proposta da John Holland nel 1975 Uno sguardo sul suo modo di operare: mantiene una popolazione di possibili soluzioni al problema Gestisce la loro evoluzione applicando concetti di evoluzione naturale e ereditarietà genetica Questi concetti sono applicati mediante Operatori Stocastici: Selezione Ricombinazione Mutazione

Operatori stocastici Selezione: preferisce le soluzioni migliori nella popolazione  definizione della qualità di una soluzione Ricombinazione: prende due soluzioni distinte e genera nuove soluzioni ricombinandole a caso Mutazione: perturba a caso una soluzione

Il processo preso a modello Evoluzione naturale Problema: adattarsi all’ambiente Attori: gli individui viventi in quell’ambiente Il metro di giudizio: la capacità degli individui di adattarsi all’ambiente Algoritmi genetici Problema: trovare l’ottimo globale di una funzione Attori: le possibili soluzioni Il metro di giudizio: valore della funzione da ottimizzare, chiamata fitness Modalità di evoluzione: applicazione iterativa degli Operatori Stocastici Modalità di evoluzione: selezione, ricombinazione e mutazione genetica delle specie viventi Risultato: la popolazione di soluzioni cambia cercando di massimizzare la funzione Risultato: le specie viventi si adattano all’ambiente

Ottimizzazione Genetica: pseudocodice Genera la popolazione iniziale di soluzioni; Valuta la fitness di ogni soluzione; while (condizione di termine non raggiunta) do seleziona le soluzioni per la riproduzione; ricombina le soluzioni selezionate; mutazione delle soluzioni; valuta la fitness delle soluzioni modificate; genera una nuova popolazione rimpiazzando la popolazione iniziale con le soluzioni modificate; done

GA for(gen=0; gen<maxgen; gen++) { fprintf(outfp,"\nRUN %d of %d: GENERATION %d->%d\n",run,maxruns,gen,maxgen); application(); /*application dependent routines*/ generation(); /* create a new generation */ statistics(newpop); /* compute fitness statistics on new populations */ report(); /* report results for new generation */ temp = oldpop; /* advance the generation */ oldpop = newpop; newpop = temp; }

Evoluzione selezione riproduzione Genera la popolazione valutazione

Esempio ... individuo i individuo i+1 ... massimizzare la funzione f(x)=x2 con x tra 0 e 31 struttura dati: ... unsigned *chrom double fitness int xsite int *parent int *utility cromosoma individuo i genitori eventuali variabili utili unsigned *chrom double fitness int xsite int *parent int *utility individuo i+1 ...

Esempio inzializzazione a caso di una popolazione di 4 individui con cromosoma lungo 5 -------------------------------------------------------------------------------- 1) 11010 v11 121.000000 11101 v23 529.000000 00011 v24 576.000000

Codice: inizializzazione Inizializzazione della popolazione: initpop() { int j, j1, k, stop; unsigned mask = 1; for(j = 0; j < popsize; j++) for(k = 0; k < chromsize; k++) oldpop[j].chrom[k] = 0; if(k == (chromsize-1)) stop = lchrom - (k*UINTSIZE); else stop = UINTSIZE; for(j1 = 1; j1 <= stop; j1++) oldpop[j].chrom[k] = oldpop[j].chrom[k]<<1; if(flip(0.5)) oldpop[j].chrom[k] = oldpop[j].chrom[k]|mask; } oldpop[j].parent[0] = 0; /* Initialize parent info. */ oldpop[j].parent[1] = 0; oldpop[j].xsite = 0; objfunc(&(oldpop[j])); /* Evaluate initial fitness */

Selezione L’individuo ‘i’ ha una probabilità pari a di essere scelto 2 Metodo della ruota della roulette: Si ripete la selezione tante volte quanti sono gli individui che devono avere gli stessi genitori L’individuo ‘i’ ha una probabilità pari a di essere scelto 2 1 n 3 4 quest’area è proporzionale al valore della fitness

Codice: selezione Selezione: int rws(struct individual *pop) { float rand, partsum; int j,k; float randomperc(); sumfitness=0; for(j = 0; j < popsize; j++) sumfitness = sumfitness + pop[j].fitness; //trova la fitness totale } rand = randomperc() * sumfitness; partsum=0.; j=0; do partsum += pop[j].fitness; j++; } while(!((partsum>=rand)||(j==popsize))); return(j-1);

Esempio Crossover. Prima: Dopo: s1` = 1111010101 s2` = 1110110101

Codice: crossover int crossover (unsigned *parent1, *parent2, *child1, *child2) { int j, jcross, k; unsigned mask, temp; if(flip(pcross)) jcross = rnd(1 ,(lchrom - 1));/* Cross tra 1 and l-1 */ ncross++; for(k = 1; k <= chromsize; k++) if(jcross >= (k*UINTSIZE)) {child1[k-1] = parent1[k-1]; child2[k-1] = parent2[k-1];} else if((jcross < (k*UINTSIZE)) && (jcross > ((k-1)*UINTSIZE))) mask = 1; for(j = 1; j <= (jcross-1-((k-1)*UINTSIZE)); j++) { temp = 1; mask = mask<<1; mask = mask|temp; } child1[k-1] = (parent1[k-1]&mask)|(parent2[k-1]&(~mask)); child2[k-1] = (parent1[k-1]&(~mask))|(parent2[k-1]&mask); } else { child1[k-1] = parent2[k-1]; child2[k-1] = parent1[k-1]; } else for(k = 0; k < chromsize; k++) { child1[k] = parent1[k]; child2[k] = parent2[k]; } jcross = 0; return(jcross);

Esempio Mutazione:ogni bit è sottoposto ad una piccola probabilità d’errore (per esempio 0.1) Prima: s1`` = 1110110101 s2`` = 1111010101 s3`` = 1110111101 s4`` = 0111000101 s5`` = 0100011101 s6`` = 1110110011 Dopo: s1``` = 1110100101 f (s1``` ) = 6 s2``` = 1111110100 f (s2``` ) = 7 s3``` = 1110101111 f (s3``` ) = 8 s4``` = 0111000101 f (s4``` ) = 5 s5``` = 0100011101 f (s5``` ) = 5 s6``` = 1110110001 f (s6``` ) = 6

Codice: mutazione mutation(child) unsigned *child; /* Mutate an allele w/ pmutation, count # of mutations */ { int j, k, stop; unsigned mask, temp = 1; for(k = 0; k < chromsize; k++) mask = 0; if(k == (chromsize-1)) stop = lchrom - (k*UINTSIZE); else stop = UINTSIZE; for(j = 0; j < stop; j++) if(flip(pmutation)) mask = mask|(temp<<j); nmutation++; } child[k] = child[k]^mask;

-------------------------------------------------------------------------------- Generation 0 Generation 1 num string value fitness parents xsite string value fitness 1) 11010 v11 121.000000 | ( 4, 3) 0 00011 v24 576.000000 2) 11101 v23 529.000000 | ( 4, 3) 0 11101 v23 529.000000 3) 11101 v23 529.000000 | ( 2, 4) 0 11101 v23 529.000000 4) 00011 v24 576.000000 | ( 2, 4) 0 00011 v24 576.000000 Generation 1 Generation 2 1) 00011 v24 576.000000 | ( 2, 1) 0 11101 v23 529.000000 2) 11101 v23 529.000000 | ( 2, 1) 0 00011 v24 576.000000 3) 11101 v23 529.000000 | ( 4, 3) 0 00011 v24 576.000000 4) 00011 v24 576.000000 | ( 4, 3) 0 11101 v23 529.000000 ------------------------------------------------------------------------------- Generation 2 Generation 3 1) 11101 v23 529.000000 | ( 3, 4) 2 00101 v20 400.000000 2) 00011 v24 576.000000 | ( 3, 4) 2 11011 v27 729.000000 3) 00011 v24 576.000000 | ( 1, 2) 0 11101 v23 529.000000 4) 11101 v23 529.000000 | ( 1, 2) 0 00011 v24 576.000000 Generation 3 Generation 4 1) 00101 v20 400.000000 | ( 4, 3) 3 00001 v16 256.000000 2) 11011 v27 729.000000 | ( 4, 3) 3 11111 v31 961.000000 3) 11101 v23 529.000000 | ( 2, 1) 0 11011 v27 729.000000 4) 00011 v24 576.000000 | ( 2, 1) 0 00101 v20 400.000000 Generation 4 Generation 5 1) 00001 v16 256.000000 | ( 2, 2) 3 11111 v31 961.000000 2) 11111 v31 961.000000 | ( 2, 2) 3 11111 v31 961.000000 3) 11011 v27 729.000000 | ( 1, 3) 0 00001 v16 256.000000 4) 00101 v20 400.000000 | ( 1, 3) 0 11011 v27 729.000000

Operatori Alternativi per il Crossover Crossover a n punti Scegliere a caso n punti per il crossover Dividere i cromosomi in questi punti incrociarli, alternano i genitori Generalizzazione del crossover a 1 punto

Crossover Uniforme Assegnare la testa a un genitore, la coda all’altro Lanciare una moneta per ogni gene del primo figlio Realizza una copia inversa per il gene del secondo figlio L’ereditarietà è indipendente dalla posizione

Crossover o mutazione? Lungo dibattito: qual’è migliore o necessario Risposta: dipende dal problema in generale, è meglio avere entrambi entrambi hanno il loro ruolo generalmente, usare solo mutazione è possibile, usare solo crossover non funziona bene

Rappresentazioni Possibili codifiche degli individui Bit strings (0101 ... 1100) Real numbers (43.2 -33.1 ... 0.0 89.2) Permutations of element (E11 E3 E7 ... E1 E15) Lists of rules (R1 R2 R3 ... R22 R23) Elementi di programmi (genetic programming) ... strutture dati ...

Rappresentazioni Alcuni problemi hanno varabili intere, per. esempio segnali campionati Altri problemi hanno valori da un insieme prefissato Molti problemi sono intrinsicamente reali, tipicamente l’ottimizzazione f :  n   Esempio: la funzione di Ackley’s

Crossover tra valori reali Discrete: each allele value in offspring z comes from one of its parents (x,y) with equal probability: zi = xi or yi Could use n-point or uniform Intermediate exploits idea of creating children “between” parents (hence a.k.a. arithmetic recombination) zi =  xi + (1 - ) yi where  : 0    1. The parameter  can be: constant: uniform arithmetical crossover variable (e.g. depend on the age of the population) picked at random every time

Crossover aritmetico singolo Genitori: x1,…,xn  e y1,…,yn Scegliere a caso un gene (k) il figlio è: ugualmente per l’altro figlio. Esempio ( = 0.5) estensione al caso multiplo

GA: ottimizzazione vincolata I GA sono adatti per l’ottimizzazione non vincolata  attività in corso i metodi proposti sono basati sulla penalizzazione basati sula ricerca di soluzioni fattibili basati sulla preservazione della fattibilità metodi ibridi