Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Game Playing Intelligenza Artificiale - Game Playing.
Laboratorio Processi Stocastici
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006.
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.
Alberi binari di ricerca
Game Playing Intelligenza Artificiale - Game Playing.
Teoria e Implementazione
Introduzione alla Teoria dei giochi
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Algoritmi e strutture Dati - Lezione 7
Liceo Scientifico P.Calamandrei presenta: Il Gioco preferito dagli studenti: un compito in classe… A cura del gruppo che ha partecipato al progetto Lauree.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati (Mod. B)
IL GIOCO DEGLI SCACCHI Cosa sono gli scacchi?
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Risoluzione di problemi e ricerca.
Intelligenza Artificiale Risoluzione di Problemi
Intelligenza Artificiale
Teoria dei giochi Università degli Studi di Parma Parma,
Lautonomia McCarthy & Hayes, 1969: –per agire intelligentemente nel mondo, un agente deve mantenere una rappresentazione interna del mondo con cui filtrare.
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
Metodo della moltiplicazione
Algoritmi e Strutture Dati

Algoritmi e Strutture Dati
Un approccio soft per i primi tre anni della primaria
Slides Intelligenza Artificiale, Vincenzo Cutello
3. Forma Strategica e ricerca dell’equilibrio
Tecniche di negoziazione
Cosa fare quando non abbiamo pensato a cosa fare
Apertura Cos’è ed a cosa serve.
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Algoritmi online Maria Simi, a.a. 2007/08 Problemi di esplorazione  Gli agenti per il problem-solving assumono:  ambienti deterministici e osservabili.
Ricerca euristica Maria Simi a.a. 2008/2009 Ricerca euristica  La ricerca esaustiva non è praticabile in problemi di complessità esponenziale  Noi.
Oltre la ricerca classica Cap 4 – Ricerca locale, ricerca online Maria Simi a.a. 2014/2015.
R. Soncini Sessa, MODSS, L21 Accettare la casualità Rodolfo Soncini Sessa MODSS Copyright 2004 © Rodolfo Soncini Sessa.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2008/2009.
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi (parte 2) Agostino Poggi.
2. Forma estesa (struttura ad albero e matrice dei pagamenti)
Ricerca locale M. Simi, Algoritmi di ricerca locale  Efficienti in occupazione di memoria: tengono traccia solo dello stato corrente (non.
Intelligenza Artificiale Risoluzione di Problemi
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi (parte 4) Agostino Poggi.
Ricerca locale M. Simi, Algoritmi di ricerca locale  Efficienti in occupazione di memoria  tengono traccia solo dello stato corrente (non.
I giochi con avversario Maria Simi a.a. 2008/2009.
Giochiamo a tris. Un campo di esperienza per il problem-solving: i giochi di interazione strategica.
Ideare un Piano di Gioco Parte Quarta: Il Centro Chiuso.
Complessità Computazionale
Ideare un Piano di Gioco Parte Terza: Il Centro Aperto.
Ideare un Piano di Gioco Parte Prima. Perché ideare un Piano di gioco?
Ideare un Piano di Gioco Parte Seconda. Come si inventa un Piano di Gioco?
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 HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2011/2012.
Agenti risolutori di problemi Risolvere i problemi mediante ricerca Maria Simi a.a 2013/2014.
Vortice Schemi di Gioco 3.
Ricerca online Maria Simi a.a. 2011/2012 Ambienti più realistici  Gli agenti risolutori di problemi “classici” assumono:  Ambienti completamente osservabili.
Fianchetto Schemi di Gioco 1. Consiste nello spingere il Pedone di Cavallo e nel posizionare l’Alfiere nella casa di partenza del Pedone (b2-b7-g2-g7)
Ricerca euristica Maria Simi a.a. 2013/2014 Ricerca euristica  La ricerca esaustiva non è praticabile in problemi di complessità esponenziale  Noi.
Basi elementari negli scacchi
Algoritmi e Strutture Dati Luciano Gualà
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2013/2014.
Analisi ed Approfondimento dell’Equilibrio di Nash: Lo studio di situazioni critiche UNIVERSITA' DEGLI STUDI "G.d'ANNUNZIO" CHIETI-PESCARA LAUREANDA: Ileana.
ASD a.a.2010/2011- Lezione 12 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Backtracking/ Branch and Bound Lezione n°12.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

I giochi con avversario Maria Simi a.a. 2013/2014

I giochi con avversario Regole semplici e formalizzabili deterministici, ambiente accessibile due giocatori, turni alterni, a somma zero, informazione perfetta ambiente multi-agente competitivo: la presenza dell’avversario rende l’ambiente strategico  più difficile rispetto ai problemi di ricerca visti fin’ora complessità e vincoli di tempo reale: si può solo cercare di fare la mossa migliore nel tempo disponibile  i giochi sono un po’ più simili ai problemi reali Utilizzati fin dagli anni 50-60 per sperimentare tecniche di IA

Sommario La soluzione teorica: come si sceglie la mossa migliore in un gioco con uno spazio di ricerca limitato Estensione a giochi più complessi, in cui non è possibile una esplorazione esaustiva Tecniche di ottimizzazione della ricerca Giochi con casualità

Giochi come problemi di ricerca Stati: configurazioni del gioco Giocatore(s): a chi tocca muovere in s Stato iniziale: configurazione iniziale Azioni(s): le mosse legali in s Risultato(s, a): lo stato risultante da una mossa Test-terminazione(s): determina la fine del gioco Utilità(s, p): funzione di utilità (o pay-off), valore numerico che valuta gli stati terminali del gioco per p Es. 1|-1|0, conteggio punti, … somma costante

Il gioco del NIM Regole: Stati: |||||| |  6-1 Mosse: 6-1 5-1-1 un certo numero di fiammiferi, 7, allineati sul tavolo una mossa consiste nel separare una fila in due file aventi un numero diverso di fiammiferi. Perde il giocatore che non può più muovere Stati: |||||| |  6-1 Mosse: 6-1 5-1-1 4-2-1 = 2-4-1

Il gioco del NIM La prima mossa tocca a MAX, MIN è l’avversario. Quale mossa conviene fare a MAX nello stato iniziale? 7 MAX MIN 6-1 5-2 4-3 MAX 5-1-1 4-2-1 3-2-2 3-3-1 1 1 1 MIN 4-1-1-1 3-2-1-1 2-2-2-1 1 MAX 3-1-1-1-1 2-2-1-1-1 Il computer gioca per MAX, MIN è l’avversario. Propagando i valori delle foglie all’indietro: da MAX a MIN si prende il minimo (pessimisti) da MIN a MAX si prende il massimo (chi gioca può decidere la mossa migliore) In questo caso MAX può vincere qualunque mossa faccia MIN, che gioca per primo. 1 1 MIN 2-1-1-1-1-1

Valore Minimax Minimax(n) = maxa  Azioni(s) Minimax(Risultato(s, a)) Utilità(s, MAX) se Test-terminale(s) Minimax(n) = maxa  Azioni(s) Minimax(Risultato(s, a)) se Giocatore(s) = MAX mina  Azioni(s) Minimax(Risultato(s, a)) se Giocatore(s) = MIN

Esempio Albero di gioco profondo una mossa, due strati o ply Ma come viene esplorato questo albero?

L’algoritmo MIN-MAX function Decisione-Minimax(stato) returns un’azione return argmax a  Azioni(s) ValoreMin(Risultato(stato, a)) function Valore-Max(stato) returns un valore di utilità if TestTerminazione(stato) then return Utilità(stato) v = −∞ for each a in Azioni(stato) do v = Max(v, ValoreMin(Risultato(stato, a)) return v function Valore-Min(stato) returns un valore di utilità v = +∞ v = Min(v, ValoreMax(Risultato(stato, a))

Min-max: algoritmo in azione v = –  3 E v = + v = –  G F – 4 6 5 v = 6 B v = + MIN 3 MAX v = –  C v = –  D 3 2 5 2 3 5 4

Giochi multiplayer (va=1, vb=2, vc=6) valutazioni per A, B, C Il valore backed-up in x è il vettore migliore per C

Min-max con decisione imperfetta In casi più complessi occorre una funzione di valutazione euristica dello stato Eval(s). Strategia: guardare avanti d livelli Si espande l’albero di ricerca un certo numero di livelli d (compatibile col tempo e lo spazio disponibili) si valutano gli stati ottenuti e si propaga indietro il risultato con la regola del MAX e MIN Algoritmo MIN-MAX come prima ma … if TestTerminazione(stato) then return Utilità(stato)  if TestTaglio(stato, d) then return Eval(stato)

Min-Max con euristica Se D è la profondità massima consentita … H-Minimax(s, d) = Eval(s) se TestTaglio(s, d) maxa  Azioni(s) H-Minimax(Risultato(s, a), d+1) se Giocatore(s)=MAX mina  Azioni(s) H-Minimax(Risultato(s, a), d+1) se Giocatore(s)=MIN

Il filetto f(n)=X(n) − O(n) X(n) righe aperte per X O(n) righe aperte per O Il filetto X O 6-5=1 5-4=1 4-5=-1 5-5=0 6-4=2 4-6=-2 6-6=0 5-6=-1 MAX MIN 1 -1 1 -2 Filetto: f(n)=X(n)  O(n) X(n) righe ancora aperte per X O(n) righe ancora aperte per O Una configurazione vincente per X viene stimata + Una configurazione vincente per O viene stimata -

La funzione di valutazione La funzione di valutazione f è una stima della utilità attesa a partire da una certa posizione nel gioco. Determinante la qualità della f: deve essere consistente con l’utilità se applicata a stati terminali del gioco (indurre lo stesso ordinamento). deve essere efficiente da calcolare; deve riflettere le probabilità effettive di vittoria (maggiore valore ad A piuttosto che a B se da A ci sono più probabilità di vittoria che da B)

Esempio Per gli scacchi si potrebbe pensare di valutare caratteristiche diverse dello stato: Valore del materiale (pedone 1, cavallo o alfiere 3, torre 5, regina 9 …) Buona disposizione dei pedoni Protezione del re Funzione lineare pesata Eval(s) = w1 f1(s) + w2 f2(s) + … + wn fn(s) o anche combinazioni non lineari di caratteristiche Una funzione lineare pesata per gli scacchi: w1f1 +w2f2+… + wnf n fi caratteristica (es. numero dei pezzi) wi peso relativo (es. valore dei pezzi)

Problemi con MIN-MAX: stati non quiescienti Stati non quiescienti: l’esplorazione fino ad un livello può mostrare una situazione molto vantaggiosa Alla mossa successiva la regina nera viene mangiata. Soluzione: applicare la valutazione a stati quiescenti stati in cui la funzione di valutazione non è soggetta a mutamenti repentini (ricerca di quiescenza) Supponiamo che guardando avanti k livelli ci sia uno stato come in figura, molto positivo per il nero come vantaggio in materiale. La f tende a portarci verso quello stato. Ma in quello stato il bianco può catturare la regina nera con la torre

Problemi con MIN-MAX: effetto orizzonte Effetto orizzonte: può succedere che vengano privilegiate mosse diversive che hanno il solo effetto di spingere il problema oltre l’orizzonte L’alfiere in a7, catturabile in 3 mosse dalla torre, è spacciato. Mettere il re bianco sotto scacco con il pedone in e5 e poi con quello in f4 … evita il problema temporaneamente, ma è un sacrificio inutile di pedoni.

Potatura alfa-beta: l’idea Tecnica di potatura per ridurre l’esplorazione dello spazio di ricerca in algoritmi MIN-MAX. MINMAX(radice) = max(min(3, 12, 8), min(2, x, y), min(14, 5, 2)) = max(3, min(2, x, y), 2) = max(3, z, 2) con z ≤ 2 = 3 NOTA: il risultato è lo stesso ma la ricerca è più efficiente; sperimentalmente si è visto che si può raddoppiare il numero di nodi esplorati a parità di risorse spazio-temporali.

Potatura alfa-beta: implementazione Si va avanti in profondità fino al livello desiderato e propagando indietro i valori si decide se si può abbandonare l’esplorazione nel sotto-albero. MaxValue e MinValue vengono invocate con due valori di riferimento:  (inizialmente ) e  (inizialmente + ): rappresentano rispettivamente la migliore alternativa per MAX e per MIN fino a quel momento. I tagli avvengono quando nel propagare indietro: v ≥  per i nodi MAX (taglio ) v   per i nodi MIN (taglio )

Alfa-beta: funzionamento 3 3 3

L’algoritmo Alfa-Beta: max function Alfa-Beta(stato) returns un’azione v = ValoreMax(stato, -∞, +∞,) return l’azione in Azioni(stato, a) con valore v function Valore-Max(stato, α, β) returns un valore di utilità if TestTerminazione(stato) then return Utilità(stato) v = -∞ for each a in Azioni(stato) do v = Max(v, ValoreMin(Risultato(stato, a), α, β)) if v ≥ β then return v α = Max(α, v) return v  taglio 

L’algoritmo Alfa-Beta: min function Valore-Min(stato, α, β) returns un valore di utilità if TestTerminazione(stato) then return Utilità(stato) v = +∞ for each a in Azioni(stato) do v = Min(v, ValoreMax(Risultato(stato, a), α, β)) if v ≤ α then return v β = Min(β, v) return v  taglio 

Potatura alfa-beta: un esempio MAX [– , +  ] 3 3 B [– , +  ] MIN E [3 , + ] taglio  3 3 [– , + ] C MAX [– , 3] D taglio  [3 , + ] F 3 2 5 2 3 5 2 3 – 4

Ordinamento delle mosse Potatura ottimale: Per nodi MAX sono generate prima le mosse migliori Per i nodi MIN sono generate prima le mosse peggiori per MAX (migliori per MIN) Complessità: O(bm/2) anziché O(bm) Alfa-Beta può arrivare a profondità doppia rispetto a Min-Max! Ma come avvicinarsi all’ordinamento ottimale?

Ordinamento dinamico Usando approfondimento iterativo si possono scoprire ad una iterazione informazioni utili per l’ordinamento, da usare in una successiva iterazione (mosse killer). Tabella delle trasposizioni: per ogni stato incontrato si memorizza la sua valutazione Situazione tipica: [a1, b1, a2, b2] e [a1, b2, a2, b1] portano nello stesso stato

Altri miglioramenti Potatura in avanti: esplorare solo alcune mosse ritenute promettenti e tagliare le altre Beam search Tagli probabilistici (basati su esperienza). Miglioramenti notevoli in Logistello [Buro] Database di mosse di apertura e chiusura Nelle prime fasi ci sono poche mosse sensate e ben studiate, inutile esplorarle tutte Per le fasi finali il computer può esplorare off-line in maniera esaustiva e ricordarsi le migliori chiusure (già esplorate tutte le chiusure con 5 e 6 pezzi … )

Giochi stocastici Sono ad esempio i giochi in cui è previsto un lancio di dadi Ancora più reale: la realtà è spesso imprevedibile non solo complessa. Backgammon: ad ogni turno il giocatore deve tirare due dadi per decidere quali mosse sono lecite.

Backgammon Lancio dadi 6-5, 4 mosse legali per il bianco: (5-10, 5-11) (5-11,19-24) (5-10, 10-16) (5-11, 11-16) Essendo i dadi 6-5, il bianco ha 4 mosse legali: (5-10, 5-11), (5-11,19-24), (5-10, 10-6), (5-11, 11-16)

Min-max con nodi di casualità Non si sa quali saranno le mosse legali dell’avversario: accanto ai nodi di scelta dobbiamo introdurre i nodi casualità (chance) Nel calcolare il valore dei nodi MAX e MIN adesso dobbiamo tenere conto delle probabilità dell’esperimento casuale Si devono calcolare il valore massimo e minimo attesi

Min-max con nodi chance (esempio) 21 lanci diversi: i lanci doppi con p=1/36, gli altri con p= 1/18 21 lanci diversi: i lanci doppi con p= 1/36 gli altri con p=1/18 Normalmente avremmo minimizzato i valori delle mosse di MIN; adesso dobbiamo minimizzare tenendo conto delle probabilità dell’esperimento casuale.

Min-max con nodi chance (cont.) NOTA: non è sufficiente l’ordinamento relativo dei successori come nella Best First; cambiando i valori ottengo risultati diversi. La funzione di valutazione deve essere una trasformazione lineare positiva della probabilità di vincere a partire da una certa posizione. MIN con probabilità 0.9 farà 2 e con probabilità 0.1 farà 3 … 0.9 x 2 + 0.1 x 3 = 2.1 0.9 x 1 + 0.1 x 4 = 1.3 La mossa migliore è la prima.

Expectiminmax: la regola Eval(n) se n è uno stato sul livello di taglio Expectiminmax(n) = maxa  Azioni(s) Expectiminmax(Risultato(s, a)) se n è un nodo MAX mina  Azioni(s) Expectiminmax(Risultato(s, a)) se n è un nodo MIN a  Azioni(s) P(r) Expectiminmax(Risultato(s, a)) se n è un nodo casualità r un esito dell’esperimento casuale

Min-max con nodi chance: nota Non è sufficiente l’ordinamento relativo dei successori; nel secondo caso la mossa scelta è diversa. ls funzione di valutazione deve essere una trasformazione lineare positiva della probabilità di vincere a partire da una certa posizione

Giochi parzialmente osservabili Giochi parzialmente osservabili deterministici Le mosse sono deterministiche ma non si conoscono gli effetti delle mosse dell’avversario Es. Kriegspiel Giochi parzialmente osservabili stocastici Le carte distribuite a caso in molti giochi di carte Es. Bridge, whist, peppa, briscola …

Lo stato dell’arte Stato dell’arte in Scacchi (DeepBlue, Hydra, Rybka-campione mondiale nel 2008-09) Dama (Chinook gioca in maniera perfetta) Otello (Logistello, campione dal 1997) Backgammon, Go, Bridge, Scarabeo … Gli scacchi stanno all’IA come la Formula 1 sta all’industria automobilista