La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Gli agenti per il problem solving Maria Simi a.a 2007/2008.

Presentazioni simili


Presentazione sul tema: "Gli agenti per il problem solving Maria Simi a.a 2007/2008."— Transcript della presentazione:

1

2 Gli agenti per il problem solving Maria Simi a.a 2007/2008

3 Agenti risolutori di problemi  Adottano il paradigma della risoluzione di problemi come ricerca in uno spazio di stati  Sono particolari agenti con obiettivo, che pianificano l’intera sequenza di mosse prima di agire  Passi da seguire: 1. Determinazione obiettivo (un insieme di stati) 2. Formulazione del problema 3. Determinazione della soluzione mediante ricerca 4. Esecuzione del piano

4 Che tipo di assunzioni?  L’ambiente è statico  Osservabile  Discreto  un insieme finito di azioni possibili  Deterministico  Si assume che l’agente possa eseguire il piano “ad occhi chiusi”. Niente può andare storto.

5 Formulazione del problema 1. Stato iniziale 2. Funzione successore: Fn-succ: stato  { *} (1 e 2 definiscono lo spazio degli stati) 3. Test obiettivo: Goal-test: stato  {true, false} 4. C osto del cammino (somma dei costi delle azioni): Fn-costo-cammino Un problema può essere definito formalmente da 4 componenti:

6 Algoritmi di ricerca Gli algoritmi di ricerca prendono in input un problema e restituiscono un cammino soluzione, i.e. un cammino che porta dallo stato iniziale a uno stato goal  Misura delle prestazioni Trova una soluzione? quanto costa trovarla? quanto efficiente è la soluzione? Costo totale = costo della ricerca + costo del cammino soluzione

7 Itinerario (route finding): il problema

8 Itinerario: la formulazione  Stati: le città. Es. In(Pitesti)  Stato iniziale: la città da cui si parte. In(Arad)  Obiettivo: la città destinazione. In(Bucarest)  Azioni: spostarsi su una città vicina collegata Fn-succ(In(Arad)) = {,, …}  Costo del cammino: somma delle lunghezze delle strade  Lo spazio degli stati coincide con la rete di collegamenti tra città

9 Aspirapolvere (Vacuum world ): il problema Versione semplice: solo due locazioni, sporche o pulite, l’agente può essere in una delle due Percezioni: Dirt, No_dirt Azioni: Left, Right, Suck

10 Aspirapolvere: formulazione  Obiettivo: rimuovere lo sporco { 7, 8 }  Funzione di costo: ogni azione ha costo 1  Spazio degli stati :

11 Il puzzle dell’otto

12 Puzzle dell’otto: formulazione  Stati: configurazioni della scacchiera  Stato iniziale: una certa configurazione  Obiettivo: una certa configurazione Goal-Test: Stato obiettivo?  Azioni: mosse della casella bianca in sù:  in giù:  a destra:  a sinistra:   Costo cammino: ogni passo costa 1  Lo spazio degli stati è un grafo con possibili cicli.

13 Le otto regine: il problema Collocare 8 regine sulla scacchiera in modo tale che nessuna regina sia attaccata da altre

14 Le otto regine: formulazione incrementale 1  Stati: scacchiere con 0-8 regine  Goal-Test: 8 regine sulla scacchiera, nessuna attaccata  Costo cammino: zero  Azioni: aggiungi una regina 64  63  …  57 ~ 3  10 4 sequenze da considerare!

15 Le otto regine: formulazione incrementale 2  Stati: scacchiere con 0-8 regine, nessuna minacciata  Goal-Test: 8 regine sulla scacchiera, nessuna minacciata  Costo cammino: zero  Azioni: aggiungi una regina nella colonna vuota più a destra ancora libera in modo che non sia minacciata 2057 sequenze da considerare

16 Le 8 regine: formulazione a stato completo  Goal-Test: 8 regine sulla scacchiera, nessuna minacciata  Costo cammino: zero  Stati: scacchiere con 8 regine, una per colonna  Azioni: sposta una regina nella colonna, se minacciata

17 Dimostrazione di teoremi  Il problema: Dato un insieme di premesse {s, t, q  p, r  p, v  q, t  r, s  v} dimostrare una proposizione p  Nel calcolo proposizionale un’unica regola di inferenza, il Modus Ponens (MP): Se p e p  q allora q

18 Dim. teoremi: formulazione  Stati: insiemi di proposizioni  Stato iniziale: un insieme di proposizioni (le premesse).  Stato obiettivo: un insieme di proposizioni contenente il teorema da dimostrare. Es p.  Operatori: l’applicazione del MP, che aggiunge teoremi continua

19 Dim. teoremi: spazio degli stati {s, t, q  p, r  p, v  q, t  r, s  v} {s, t, q  p, r  p, v  q, t  r, s  v, v} {s, t, q  p, r  p, v  q, t  r, s  v, r} {s, t, q  p, r  p, v  q, t  r, s  v, v, q} {s, t, q  p, r  p, v  q, t  r, s  v, r, p} {s, t, q  p, r  p, v  q, t  r, s  v, v, q, p}

20 Ricerca della soluzione Generazione di un albero di ricerca sovrapposto allo spazio degli stati

21 Ricerca della soluzione Generazione di un albero di ricerca sovrapposto allo spazio degli stati

22 Strategia di ricerca function Tree-Search(problem, strategy) … loop do if non ci sono nodi da espandere then return failure scegli un nodo da espandere in base alla strategia if il nodo corrisponde a uno stato goal then return la soluzione corrispondente else espandi il nodo e aggiungi i successori all’albero di ricerca end Ovvero: quale nodo espandere tra quelli foglia?

23 I nodi dell’albero di ricerca Un nodo ha cinque componenti:  Uno stato  Il nodo genitore  L’operatore applicato per generarlo  La profondità del nodo  Il costo del cammino dal nodo iniziale al nodo Datatype node components: state, parent-node, operator, depth, path-cost

24 Struttura dati per la frontiera  Frontiera: lista dei nodi in attesa di essere espansi (le foglie dell’albero di ricerca).  La frontiera è implementata come una coda con operazioni:  Make-Queue  Empty?  First, Rest, RemoveFront  Insert, InsertAll  I diversi tipi di coda hanno diverse Insert

25 Algoritmo di ricerca function Tree-Search (problem, fringe) returns a solution or failure fringe  Insert(Make-Node(Initial-State[problem]), fringe)) loop do if Empty?(fringe) then return failure node  RemoveFront(fringe) if Goal-Test[problem] (State[node]) = true then return Solution(node) fringe  InsertAll(Expand(node, problem), fringe) end

26 Valutazione di una strategia  Completezza: se la soluzione esiste viene trovata  Ottimalità (ammissibilità): trova la soluzione migliore, con costo minore  Complessità nel tempo: tempo richiesto per trovare la soluzione  Complessità nello spazio: memoria richiesta

27 Strategie non informate  Ricerca in ampiezza  Ricerca di costo uniforme  Ricerca in profondità  Ricerca in profondità limitata  Ricerca con approfondimento iterativo Vs strategie di ricerca euristica (o informata): fanno uso di informazioni riguardo alla distanza stimata dalla soluzione

28 Ricerca in ampiezza Implementata con una coda che inserisce alla fine (FIFO)

29 Ricerca in ampiezza: analisi  Strategia completa  Strategia ottimale se gli operatori hanno tutti lo stesso costo k, cioè g(n) = k · depth(n), dove g(n) è il costo del cammino per arrivare a n  Assumendo b = fattore di diramazione (numero max di successori) d = profondità della soluzione più superficiale  Complessità nel tempo (nodi generati) b + b 2 + … + b d + (b d+1 – b)  O(b d+1 )  Complessità spazio (nodi in memoria): O(b d+1 )

30 Ricerca in ampiezza: esempio  Esempio: b=10; 10000 nodi al sec generati; 1 nodo occupa 1000 byte ProfonditàNodiTempoMemoria 2 4 6 8 10 12 14 1.100 111.000 10 7 10 9 10 11 10 13 10 15 0,11 sec 11 sec 19 min 31 ore 129 giorni 35 anni 3523 anni 1 megabyte 106 megabyte 10 gigabyte 1 terabyte 101 terabyte 10 petabyte 1 exabyte

31 Ricerca di costo uniforme Generalizzazione della ricerca in ampiezza: si sceglie il nodo di costo minore sulla frontiera (si intende il costo del cammino) Implementata da una coda ordinata per costo crescente (in cima i nodi di costo minore)

32 Costo uniforme: analisi Ottimalità e completezza garantite purché il costo degli archi sia maggiore di  0. Nota: quando ogni azione ha lo stesso costo Uniform-search = Breadth-first Complessità: O(b 1+  C*/  ) C* è il costo della soluzione ottima (C*/  è il numero di mosse nel caso peggiore)

33 Ricerca in profondità Implementata da una coda che mette i successori in testa alla lista (LIFO, pila o stack).

34 Ricerca in profondità: analisi  Sem distanza massima della soluzione nello spazio di ricerca b fattore di diramazione  Tempo: O(b m+1 )  Occupazione memoria: bm + 1  Strategia non completa e non ottimale.  Drastico risparmio in memoria: BF d=12 10 petabyte DF d=12118 Kbyte

35 Ricerca con backtracking (ricorsiva)  Ancora più efficiente in occupazione di memoria perché mantiene solo il cammino corrente (solo m) function Recursive-DF(node, problem) returns a solution or failure if Goal-Test[problem](State[node]) then return Solution(node) else for each successor in Expand(node, problem) do result  Recursive_DF(successor, problem) if result ≠ failure then return result end return failure

36 Ricerca in profondità limitata (DL)  Si va in profondità fino ad un certo livello predefinito l  Completa per problemi in cui si conosce un limite superiore per la profondità della soluzione. Es. Route-finding limitata dal numero di città – 1  Completo: se d < l  Non ottimale  Complessità tempo: O(b l )  Complessità spazio: O(b. l )

37 DL ricorsivo function Recursive-DL(node, problem, limit) returns a solution or failure or cutoff cutoff-occurred?  false if Goal-Test[problem](State[node]) then return Solution(node) else if Depth[node] = limit then return cutoff else for each successor in Expand(node, problem) do result  Recursive_DL(successor, problem, limit) if result = cutoff then cutoff-occurred?  true else if result ≠ failure then return result end if cutoff-occurred? then return cutoff else return failure

38 Approfondimento iterativo (ID) Limite 0Limite 1Limite 2Limite 3

39 ID: analisi  Miglior compromesso tra BF e DF BF: b+b 2 + … +b d-1 +(b d+1 – b) con b=10 e d=5 10+100+1000+10.000+100.000+(1.000.000– 10)=1.111.100  ID: I nodi dell’ultimo livello generati una volta, quelli del penultimo 2, quelli del terzultimo 3 … quelli del primo d volte ID: (d)b+(d-1) b 2 + … +3b d-2 +2b d-1 +1b d = 50+400+3000+20.000+100.000=123450  Complessità tempo: O(b d ) Spazio: O(b.d)

40 Direzione della ricerca Un problema ortogonale alla strategia è la direzione della ricerca:  ricerca in avanti o guidata dai dati: si esplora lo spazio di ricerca dallo stato iniziale allo stato obiettivo;  ricerca all’indietro o guidata dall’obiettivo: si esplora lo spazio di ricerca a partire da uno stato goal e riconducendosi a sotto-goal fino a trovare uno stato iniziale.

41 Quale direzione?  Conviene procedere nella direzione in cui il fattore di diramazione è minore  Si preferisce ricerca all’indietro quando:  l’obiettivo e chiaramente definito (th. pr.) o si possono formulare una serie limitata di ipotesi;  i dati del problema non sono noti e la loro acquisizione può essere guidata dall’obiettivo  Si preferisce ricerca in avanti quando:  gli obiettivi possibili sono molti (design)  abbiamo una serie di dati da cui partire

42 Ricerca bidirezionale Si procede nelle due direzioni fino ad incontrarsi

43 Ricerca bidirezionale: analisi  Complessità tempo: O(b d/2 ) (test intersezione in tempo costante, es. hash table)  Complessità spazio: O(b d/2 ) (almeno tutti i nodi in una direzione in memoria, es usando BF) NOTA: non sempre applicabile, es. predecessori non definiti, troppi stati obiettivo …

44 Confronto delle strategie CriterioBFUCDFDLIDBidir Tempo Spazio Ottimale? Completa? b d+1 si(*) si b 1+  C*/  si(**) b m no b l b. l no si (+) b d si(*) si b d/2 si (*) se gli operatori hanno tutti lo stesso costo (**) per costi degli archi   > 0 (+) per problemi per cui si conosce un limite alla profondità della soluzione (se l >d)

45 Evitare stati ripetuti Su spazi di stati a grafo si generano più volte gli stessi nodi nella ricerca. Come evitare di visitare nodi già visitati?

46 Compromesso tra spazio e tempo  Ricordare gli stati già visitati occupa spazio ma ci consente di evitare di visitarli di nuovo  Gli algoritmi che dimenticano la propria storia sono destinati a ripeterla!

47 Tre soluzioni Tre tecniche in ordine crescente di costo e di efficacia:  Non tornare nello stato da cui si proviene: si elimina il genitore dai nodi successori;  Non creare cammini con cicli: si controlla che i successori non siano antenati del nodo corrente;  Non generare nodi con stati già visitati: ogni nodo visitato deve essere tenuto in memoria per una complessità O(b d ), o meglio O(s) dove s è il numero di stati possibili (hash table).

48 Ricerca su grafi  Mantiene una lista dei nodi visitati (closed)  Prima di espandere un nodo si controlla se lo stato era stato già incontrato prima  Se questo succede il nodo appena trovato non viene espanso  Ottimale solo se abbiamo la garanzia che il costo del nuovo cammino è maggiore  Altrimenti necessario aggiornamento

49 L’algoritmo di ricerca su grafi

50 Ricerca con informazione parziale La conoscenza degli stati e dell’effetto delle azioni può essere incompleta. 1. Problemi senza sensori (sensorless)  un insieme di stati possibili 2. Problemi con contingenza  effetto delle azioni incerto (non deterministico o con avversario) 3. Problemi di esplorazione  servono azioni per acquisire informazioni

51 Il mondo dell’aspirapolvere senza sensori

52 Problemi con contingenza e di esplorazione  Aspirapolvere con sensori difettoso: che qualche volta deposita sporco se casella pulita  Vanno considerati tutti i possibili effetti  Piano condizionale (prevede le possibili contingenze)  Alternanza di pianificazione e azione (o ricerca ed esecuzione) è tipica dei giochi con avversario  I problemi di esplorazione sono casi estremi di problemi con contingenza in cui l’agente deve anche pianificare azioni esplorative


Scaricare ppt "Gli agenti per il problem solving Maria Simi a.a 2007/2008."

Presentazioni simili


Annunci Google