I giochi con avversario. Maria Simi a.a. 2016/2017 Credits: Alessio Micheli Russell-Norvig

Documenti analoghi
I giochi con avversario. I giochi con avversario. Introduzione. Il gioco del NIM. Il gioco del NIM. Giochi come problemi di ricerca

I giochi con avversario. I giochi con avversario. Sommario. Il gioco del NIM. Il gioco del NIM. Giochi come problemi di ricerca

I giochi con avversario. I giochi con avversario. Introduzione. Giochi come problemi di ricerca. Il gioco del NIM.

I giochi con avversario

Algoritmi e giochi combinatori

Teoria dei giochi. 2. Forma estesa (struttura ad albero e matrice dei pagamenti) Slides di Teoria dei Giochi, Vincenzo Cutello 1

Intelligenza Artificiale. Lezione 6bis. Sommario. Problemi di soddisfacimento di vincoli: CSP. Vincoli CSP RN 3.8, 4.3, 4.5.

Intelligenza Artificiale. Lezione 15. Intelligenza Artificiale Daniele Nardi, 2003 Lezione 15 0

Ricerca con avversari: GIOCHI

Intelligenza Artificiale. Cosa vedremo. Game Playing. Gennaio Aprile marco ernandes.

La strategia MiniMax e le sue varianti

Intelligenza artificiale

... Max. Max. ... Min ... Albero di gioco

ESERCIZIO MIN-MAX Si consideri il seguente albero di gioco dove i punteggi sono tutti dal punto di vista del primo giocatore.

GIOCHI. Ambiente multi-agente presenza di un avversario. avversario economia anche se esiste una competizione di calcio fra robot

Intelligenza Artificiale. Lezione 6bis. Intelligenza Artificiale Daniele Nardi, 2004 Lezione 6bis 0

GIOCHI. L'intelligenza artificiale considera giochi con le seguenti proprietà: 1) Sono giochi a due giocatori in cui le mosse sono alternate;

Corso di Perfezionamento

Intelligenza Artificiale Ing. Tiziano Papini

. Max. Max. Min. Min Albero di gioco

Giochi a due giocatori

Ricerca euristica. Alessio Micheli a.a. 2015/2016. Credits: Maria Simi Russell-Norvig

Intelligenza Artificiale. Ricerca euristica Algoritmo A*

Agenti che risolvono problemi attraverso la ricerca in uno spazio di stati

L'intelligenza artificiale considera giochi con le seguenti proprietà: 1) Sono giochi a due giocatori in cui le mosse sono alternate;

Intelligenza Artificiale. Risoluzione dei Problemi

Ricerca con avversari

Apprendimento per Rinforzo

Università di Bergamo Facoltà di Ingegneria. Intelligenza Artificiale. Paolo Salvaneschi A3_1 V1.3. Agenti

Tecniche Computazionali Avanzate

Problemi, istanze, soluzioni

Introduzione alla ricerca operativa Problemi e modelli

TECNOLOGIE INFORMATICHE MULTIMEDIALI

2.6 Calcolo degli equilibri di Nash

Agenti risolutori di problemi. Risolvere i problemi mediante ricerca Maria Simi a.a 2014/2015

MATEMATICA PER LO STUDIO DELLE INTERAZIONI STRATEGICHE: TEORIA DEI GIOCHI. Anna TORRE

I giochi e l'intelligenza artiiciale. Di come i giochi hanno accompagnato l'evoluzione dell'intelligenza artiiciale

Esercitazione gennaio 2015

Una prima distinzione nell ambito della teoria dei giochi è quella tra: Giochi cooperativi (si possono fare accordi vincolanti)

Alfa. Il GO tra gioco, matematica ed economia. Alla ricerca della strategia ottimale

Minimo albero di copertura

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

1 SOLUZIONE DEI PROBLEMI TRAMITE GRAFI

Agenti basati su Ricerca: Introduzione

MATEMATICA PER LO STUDIO DELLE INTERAZIONI STRATEGICHE: TEORIA DEI GIOCHI. Anna TORRE

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

REGOLE DI BASE DEL GIOCO DEGLI SCACCHI

Esercizi di Algoritmi e Strutture Dati

3.4 Metodo di Branch and Bound

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Il problema dello zaino

Intelligenza Artificiale. Risoluzione dei Problemi

Algoritmi di Ricerca

Grafi pesati Minimo albero ricoprente

Agenti razionali. Sistemi distribuiti LS Prof. Andrea Omicini A.A

Teoria dei Giochi. Anna Torre

Ambienti più realistici. Ricerca online. Azioni non deterministiche L aspirapolvere imprevedibile. Soluzioni più complesse. Alberi di ricerca AND-OR

Algoritmi di Ricerca

TEORIA DEI GIOCHI. Progetto Lauree Scientifiche : Liceo Gabriele D Annunzio di Fidenza Università degli Studi di Parma

TAVOLA DI FAUST E STRATEGIE NON SIMMETRICHE

INTRODUZIONE ALLA TEORIA DEI GIOCHI

Progettazione di algoritmi

Ricerca euristica. Funzioni di valutazione euristica. Esempi di euristica. Strategia best-first: esempio. Algoritmo di ricerca Best-First 03/03/15

Cammini minimi in grafi:

In Action With Math. Competizione e Strategia - Teoria dei Giochi. Roberto Lucchetti - Giulia Bernardi. Politecnico di Milano

Ricerca Automatica. Esercitazione 3. Intelligenza Artificiale Daniele Nardi, 2004 Esercitazione 3 0

Lezioni di Ricerca Operativa

Calcolo del fattore di convergenza

Intelligenza Artificiale

AccumulatoreSomma AccumulatoreSommaProdotto AccumulatoreSomma AccumulatoreSommaProdottoDivisione

Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità

REGOLE DI BASE. Quando orientiamo la scacchiera la casa posta nell'angolo a destra di ogni giocatore deve essere di colore chiaro.

Corso di Politica Economica

Progetto: Dama. 1 - Descrizione. 2 - Regole del gioco. Appello di febbraio 2003

Grafi e reti di flusso

Un secondo problema : Quadrato Magico

Introduzione alla programmazione Esercizi risolti

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Cercare il percorso minimo Ant Colony Optimization

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Programmazione Lineare Intera: Piani di Taglio

Implementazione del gioco del Bantumi Corso di Intelligenza Artificiale 2012

Teoria dei Giochi Prova del 30 Novembre 2012

Cammini minimi fra tutte le coppie

Tecniche di riconoscimento statistico

Soluzione dei problemi di Programmazione Lineare Intera

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Tempo e spazio di calcolo (continua)

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Ricorsione. La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa

Giochi cinesi di strategia Go/weiqi

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27

Lezione 1. Fondamentali

Laboratorio 10. Programmazione - CdS Matematica. Michele Donini, Marta Gatto, Mirko Polato 19 gennaio 2016

Roberto Messa e Maria Teresa Mearini. il gioco degli MESSAGGERIE SCACCHISTICHE

Markov Chains and Markov Chain Monte Carlo (MCMC)

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Tempo e spazio di calcolo (continua)

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

Transcript:

I giochi con avversario Maria Simi a.a. 2016/2017 Credits: Alessio Micheli Russell-Norvig

I giochi con avversario Regole semplici e formalizzabili Ambiente accessibile e determistico 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 finora Complessità e vincoli di tempo reale: la mossa migliore nel tempo disponibile i giochi sono un po più simili ai problemi reali

Ciclo pianifica-agisci-percepisci Caso di due agenti che agiscono a turno : si può ancora guardare in avanti considerando le possibili risposte dell avversario, e le possibili risposte a queste risposte Decisa la mossa migliore da fare: Si esegue la mossa Si vede cosa fa l avversario Si ri-pianifica la prossima mossa

Tris/Filetto (Tic-tac-toe) Albero di gioco parziale 7

Sommario 1. La soluzione teorica: come si sceglie la mossa migliore in un gioco con uno spazio di ricerca limitato (MIN_MAX) 2. Estensione a giochi più complessi, in cui non è possibile una esplorazione esaustiva 3. Tecniche di ottimizzazione della ricerca (ALFA-BETA) 4. Solo cenni a giochi più complessi: più giocatori, con casualità, ad informazione imperfetta

Giochi come problemi di ricerca Stati: configurazioni del gioco Giocatore(s): a chi tocca muovere nello stato s Stato iniziale: configurazione iniziale del gioco 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: 7 fiammiferi, 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? 0 7 MAX 1 0 0 0 6-1 5-2 4-3 0 1 0 5-1-1 4-2-1 3-2-2 3-3-1 MIN MAX 1 0 4-1-1-1 3-2-1-1 2-2-2-1 1 MIN 1 3-1-1-1-1 2-2-1-1-1 0 MAX 2-1-1-1-1-1 1 MIN

Esempio di una mossa + contromossa Albero di gioco profondo una mossa, due livelli o ply Calcolo del valore minimax dei nodi

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

L algoritmo MIN-MAX ricorsivo 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à if TestTerminazione(stato) then return Utilità(stato) v = + for each a in Azioni(stato) do v = Min(v, ValoreMax(Risultato(stato, a)) return v

Classe game in Python class Game: " Astrazione di un gioco." def player(self, state): def actions(self, state): def result(self, state, action): def terminal_test(self, state): return (len(self.actions)==0) def utility(self, state):

In Python def minimax_decision(game, state): def max_value(state): if game.terminal_test(state): # se in state il gioco è concluso restituisci il risultato return game.utility(state) v = - float('inf') # v è inizializzato a - infinito for a in game.actions(state): v = max(v, min_value(game.result(state,a))) return v 16 def min_value(state): if game.terminal_test(state): # se in state il gioco è concluso restituisci il risultato return game.utility(state) v = float('inf') # v è inizializzato a + infinito for a in game.actions(state): v = min(v,max_value(game.result(state,a))) return v # decisione e' l'argomento (l'azione) che massimizza l'output di min_value decisione = max(game.actions(state), key = lambda x: min_value(game.result(state,x))) return decisione

Min-Max: algoritmo in azione MAX A 3 v = MIN 3 B v = + 0 v = + E MAX C 23 v = D v = 5 F v = 0 G v = 6 2 3 5 4 0 4 5 6 17

Costo Tempo: come DF, O(b m ) Scacchi: 35 100 Grafo degli scacchi 10 40 nodi 10 22 secoli!!! [Nilsson] Improponibile una esplorazione sistematica del grafo degli stati, se non per giochi veramente semplici (come il filetto o il Nim) La soluzione è fare uso di euristiche per stimare la bontà di uno stato del gioco. 18

Min-Max euristico (con orizzonte) 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)

Valore H-Minimax Se d è il limite alla profondità consentita H-Minimax(s, d) = Eval(s) se TestTaglio(s, d) max a Azioni(s) H-Minimax(Risultato(s, a), d+1) se Giocatore(s)=MAX min a 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 MAX 1 6-5=1 X O MIN -1 1-2 6-5=1 6-5=1 5-5=0 4-5=-1 5-5=0 5-4=1 5-6=-1 6-4=2 5-5=0 5-6=-1 6-6=0 4-6=-2

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) valore atteso che combina probabilità con valutazione finale; può essere appreso con l esperienza

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) = w 1 f 1 (s) + w 2 f 2 (s) + + w n f n (s) Combinazioni non lineari di caratteristiche qlfiere vale più nei finali di partita, 2 alfieri valgono più del doppio di 1

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 catturata. Soluzione: applicare la valutazione a stati quiescenti stati in cui la funzione di valutazione non è soggetta a mutamenti repentini (ricerca di quiescenza)

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.

Ottimizzazione Ma dobbiamo necessarimente esplorare ogni cammino? NO, esiste modo di dimezzare la ricerca pur mantendo la decisione minimax corretta Potatura alfa-beta (McCarthy 1956, per scacchi) 26

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

Più in generale Consideriamo v Se c'è scelta una migliore sopra, quel v non sarà mai raggiunto MAX, passerà da alfa (o altro) piuttosto che finire a v 28

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 )

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 taglio α = Max(α, v) return v

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 taglio β = Min(β, v) return v

Alfa-beta in azione 3

Alfa-beta in azione MAX 3 A [ 3, + ] MIN 3 [, + 3 ] B 0 E [3, + ] taglio 23 [ 3, + ] MAX C 2 5 D [, 3] 0 F [3, + ] 2 3 5 0 4 33 taglio MIN non lo sceglierà Nota: questi (F etc) sono pero stati esplorati

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(b m/2 ) anziché O(b m ) Alfa-Beta può arrivare a profondità doppia rispetto a Min-Max! Ma come avvicinarsi all ordinamento ottimale?

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

Altri miglioramenti 1. 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] 2. 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 multiplayer 1. (v a =1, v b =2, v c =6) valutazioni per A, B, C 2. Il valore backed-up in x è il vettore migliore per C

Giochi più complessi Giochi stocastici: i giochi in cui è previsto un lancio di dadi come il backgammon Giochi parzialmente osservabili deterministici Le mosse sono deterministiche ma non si conoscono gli effetti delle mosse dell avversario. Es. Battaglia navale, Kriegspiel 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, Bridge, Scarabeo Go, ultimo baluardo successo di AlphaGo nel gennaio 2016 articoli su Nature