Ricerca locale M. Simi,
Algoritmi di ricerca locale Efficienti in occupazione di memoria: tengono traccia solo dello stato corrente (non necessario un puntatore al padre) e si spostano su stati adiacenti Per problemi in cui: il cammino che si segue non è importante: basta trovare la soluzione tutti gli elementi della soluzione sono nello stato ma alcuni vincoli sono violati. Es. le regine nella versione completa. Gli stati come punti su una superficie su cui l’algoritmo provoca movimento: i picchi sono massimi locali o soluzioni ottimali (se la f è da ottimizzare).
Ricerca in salita (Hill climbing) Vengono generati i successori e valutati; viene scelto un nodo, che migliora la valutazione dello stato attuale: il primo (salita semplice) il migliore (salita rapida) uno a caso (stocastico) Se non ce ne sono l’algoritmo termina (non si tiene traccia degli altri)
Problemi con Hill-climbing Massimi locali Pianori Crinali collinamontagna ? ?
Miglioramenti Miglioramenti della strategia di base: 1. Espandere l’albero di ricerca 2 o 3 livelli e ripetere la valutazione 2. Ripartire da un punto scelto a caso (Hill- Climbing con random restart) Se la probabilità di successo è p saranno necessari 1/p ripartenze per trovare la soluzione
Tempra simulata (simulated annealing) Ad ogni passo si sceglie un successore a caso: se migliora lo stato corrente viene espanso se no (caso in cui E=f(n’)-f(n) 0) quel nodo viene scelto con probabilità p=e E/T [0 p 1] Si genera un numero casuale tra 0 e 1: se questo è p il successore viene scelto, altrimenti non si fa niente. T descresce col progredire dell’algoritmo secondo uno schedule definito (lo schedule definisce valore iniziale e decremento). [Kirkpatrick, Gelatt, Vecchi 1983]
Simulated annealing: analisi La probabilità di una mossa in discesa diminuisce col tempo e l’algoritmo si comporta sempre di più come Hill Climbing. Se T viene decrementato abbastanza lentamente siamo sicuri di raggiungere la soluzione ottimale. Analogia col processo di tempra dei metalli T corrisponde alla temperatura E alla variazione di energia Valori per T determinati sperimentalmente: il valore iniziale di T deve essere tale che per valori medi di E, e E/T sia all’incirca 0.5
Osservazione Hill-climbing è un metodo locale; funziona bene quando la funzione di valutazione non ha essa stessa un carattere locale. Le funzioni “più globali” costano di più.
Il mondo dei blocchi Operatori: Sposta un blocco da un blocco ad un altro Sposta un blocco da un blocco al tavolo Sposta un blocco dal tavolo ad un altro blocco A D C B Stato iniziale C B A D Stato finale
Euristica “locale” per il mondo dei blocchi Euristica dei blocchi fuori posto: +1 per ogni blocco a posto, -1 fuori posto A D C B A D C B L’algoritmo si blocca A D C B 2-2=0 3-1=2 2-2=0
Euristica “non locale” per il mondo dei blocchi Euristica dei blocchi con supporto corretto: (#blocchi supporto OK - #blocchi supporto non OK) A D C B A D C B A D C B C B A D …3+2+1
Ricerca local beam Si tiene traccia di k stati anziché uno solo Ad ogni passo si generano i successori di tutti i k stati Se si trova un goal ci si ferma Altrimenti si prosegue con i k migliori Nella variante local beam stocastica, si scelgono k successori a caso con probabilità maggiore per i migliori (selezione naturale).
Algoritmi genetici Popolazione: k stati generati casualmente Ogni 'individuo rappresentato come stringa Es stato delle 8 regine Gli individui sono valutati f. di fitness Es. n. di coppie di regine che non si attaccano Si scelgono gli individui con probabilità proporzionale alla fitness
Esempio Per ogni coppia viene scelto un punto di cross-over e i due genitori producono due figli scambiandosi pezzi Viene infine effettuata una mutazione casuale che da luogo alla prossima generazione.
Algoritmi online Maria Simi, a.a. 2006/07
Problemi di esplorazione Gli agenti per il problem-solving assumono: ambienti deterministici e osservabili il piano generato può essere generato offline e eseguito senza imprevisti Che cosa succede se rilasciamo queste assunzioni? Solo lo stato corrente è osservabile, non si conosce l’effetto delle azioni e il loro costo Gli stati futuri e le azioni che saranno possibili non sono conosciute a priori
Algoritmi online Si devono compiere azioni esplorative Si alternano pianificazione e azione Cosa conosce un agente online … Le azioni legali nello stato attuale Il costo della mossa c(s1, a, s2) ma dopo averla eseguita Goal-test(s) La stima della distanza: dal goal: h(s)
Esempio: Teseo con mappa e senza Con mappa applicabili tutti gli algoritmi di pianificazione visti Senza mappa l'agente non può pianificare può solo esplorare nel modo più razionale possibile Ricerca online h=4h=3h=2h=1 T h=3 h=2h=1h=0 h=4h=3h=2h=1 h=5h=4h=3h=2 h=4h=3h=2h=1 T h=3 h=2h=1h=0 h=4h=3h=2h=1 h=5h=4h=3h=2
Assunzione ulteriore Ambienti esplorabili in maniera sicura Non esistono azioni irreversibili Diversamente non si può garantire una soluzione
Ricerca in profondità online Gli agenti online ad ogni passo decidono l'azione da fare (non il piano) e la eseguono. Ricerca in profondità online Un metodo locale Il backtracking significa tornare sui propri passi È necessario ricordarsi ciò che si è scoperto Esplorazione sistematica delle alternative
Esempio Sceglie il primo tra (1,1) e (2,2) In (1, 1) deve tornare indietro T T T TT T T T T T
Algoritmo DF online function Agente-Online-DFS(s) returns an action static: risultato, notexp, notback, s- ( stato precedente ), a- ( ultima azione) if Goal-Test(s) then return stop if s nuovo stato then notexpl[s] AzioniLegali(s) if s- non è null then risultato[a-, s-] s; notback[s] s-; if notexpl[s] vuoto then if notbackl[s] vuoto then return stop else a azione per tornare in POP(notback[s]) else a POP(notexpl[s]) s- s; return a
Ricerca euristica online Nella ricerca online si conosce il valore della funzione euristica una volta esplorato lo stato. Un algoritmo di tipo Best First non funzionerebbe. Serve un metodo locale Hill-climbing con random-restart non praticabile Come sfuggire a minimi locali?
Due soluzioni Random-walk si fanno mosse casuali in discesa Apprendimento Real-Time: esplorando si aggiustano i valori dell'euristica per renderli più realistici. H: migliore stima fin qui Come si valutano i successori: Costo-LRTA*(s, a, s', H) = h(s) se s' indefinito H(s') + costo(s,a,s') altrimenti
Esempio di Real Time Learning A* T (h=3) T (h=2) T (h=3) T (h=2) T (h=1) T (h=2) T (h=3) T (h=2) T (h=1) T (h=0)
LRTA* function Agente-LRTA*(s) returns an action static: risultato, H, s-, a- if Goal-Test(s) then return stop if s nuovo (non in H) then H[s] h[s] 1. if s- null risultato[a-, s-] s H[s-] min Costo-LRTA*(s-, b, risultato[b, s-], H) 2. a un'azione b tale che minimizza Costo-LRTA*(s, b, risultato[b, s], H) s- s; return a b AzioniLegali(s)