FMZ1 Sistemi basati su conoscenza Wumpus World in Prolog Dott. Fabio Massimo Zanzotto a.a. 2001-2002.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I VETTORI.
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
Evoluzione Tratto da Land of Lisp: Learn to Program in Lisp, One Game at a Time! Conrad Barski.
ITL112 ELEMENTARY ITALIAN II
PROGRAMMARE IN PASCAL (le basi)
Numeri casuali Cos’e’ un numero casuale? 3 e’ un numero casuale?
in un punto in un intervallo
Linguaggi a memoria condivisa Lidea è di aggiungere ad un linguaggio imperativo dei costrutti per rappresentare lesecuzione parallela di statements. Supponiamo.
Linguaggi di Programmazione (AA 2002/2003)
Simulazione del lancio di una moneta
Introduzione alla Teoria dei giochi
Othello Strutture dati ed implementazione in prolog
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 7 Prof. M.T. PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Sistemi basati su conoscenza Esercizi Prolog
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
fondamenti di informatica parte 4
Introduzione al linguaggio C++ 5 lezioni
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Geometria con i TETRAMINI
1. 2 PRIMITIVE DEI ROBOT Percepire Pianificare Agire IL PARADIGMA GERARCHICO modello piano percezioniazioni mondo.
UML: Esempio “Briscola” Corso IS I /03
Puntatori - Cenni Nicola Fanizzi Corso di Programmazione C.d.L. in Informatica DIB - Università degli Studi di Bari.
Alessandro Tanasi - 1 Snake Alessandro Tanasi Gioco dello Snake.
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Conoscenza e ragionamento.
Programmazione logica
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Conoscenza e ragionamento Logica dei predicati del primo ordine.
Linguaggi di Programmazione Cenni di logica proposizionale
JESS: Esercizi Ettore Colombo Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Gli studenti saranno in grado di usare limperfetto per descrivere cosa facevano da piccoli. Da Fare Ora: 1.Che programma televisivo hai guardato ieri?
Andrea Martire – Salvatore Loria Sistemi intelligenti A.A. 2011/2012.
Jack il curioso avventuriero
TUTORIAL PER L’APPLICAZIONE AURASMA
Lezione 7 Strutture di controllo Il ciclo while

Esecuzione dei programmi Prolog Liste ed operatori aritmetici
Il primo passo: I basilari del Prolog
Agenti logici: calcolo proposizionale Maria Simi a.a. 2008/2009.
Specifiche di Sistema.
Slides Intelligenza Artificiale, Vincenzo Cutello
DERIVATA DI UNA FUNZIONE
Tecnologie delle Costruzioni Aeronautiche 1 Esercitazione 3 © Goran Ivetic.
Fici Arianna e Sammartano Maria Teresa
Microsoft Access Chiavi, struttura delle tabelle.
BattMatt Francesco Oreste Aliberti mat
Percorsi su grafi, Sottoalberi Comuni e Programmazione Dinamica Fabio Massimo Zanzotto.
FMZ Sistemi basati su conoscenza Da logica proposizionale a logica del primo ordine Dott. Fabio Massimo Zanzotto a.a
FMZ Sistemi basati su conoscenza Prolog (1) Dott. Fabio Zanzotto a.a
FMZ1 Sistemi basati su conoscenza Cenni di logica proposizionale Dott. Fabio Zanzotto a.a
Controllare Tipi Dati Decomporre fatti Controllare il database Fabio Massimo Zanzotto (slides di Andrea Turbati)
Qualche notizia indispensabile per cominciare Ogni oggetto ha una serie di variabili già al suo interno. All'inizio tutte le variabili sono = 0 SPEED :
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Microsoft Access Maschere (II).
Algoritmi online Maria Simi, a.a. 2007/08 Problemi di esplorazione  Gli agenti per il problem-solving assumono:  ambienti deterministici e osservabili.
Introduzione a Javascript
1. Andro` in vacanza appena avro` finito il mio viaggio di affari. 2. Quando il negozio avra` venduto tutti i cappotti, ne ordinera` ancora. 3. La signora.
Oggi è lunedì il sei maggio!
Introduzione alla rappresentazione della conoscenza ovvero… Come costruire agenti basati su conoscenza e dotati di capacità di ragionamento Maria Simi,
Introduzione alla rappresentazione della conoscenza ovvero… Come costruire agenti basati su conoscenza e dotati di capacità di ragionamento Maria Simi,
Each student will be able to ask an adult or stranger: What do you like to do? and What don’t you like to …?
Introduzione alla rappresentazione della conoscenza ovvero… Come costruire agenti basati su conoscenza e dotati di capacità di ragionamento Maria Simi,
Basi di conoscenza: cenni di logica Fabio Massimo Zanzotto.
Oggi è il venti maggio LO SCOPO: Facciamo un ripasso del gerundio, dell’infinito, e del participio. Poi ripassiamo l’immigrazione. FATE ADESSO: Tirate.
 Direct Object Pronouns. Direct Objects – Oggetti Diretti and their pronouns  I pronomi diretti: lo, la, li, le   A direct object is the person or.
Ci and ne. Ci Ci is used to replace nouns or expressions that refer to places or locations that have just been mentioned. Ci is roughly equivalent to.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Transcript della presentazione:

FMZ1 Sistemi basati su conoscenza Wumpus World in Prolog Dott. Fabio Massimo Zanzotto a.a

FMZ2 Wumpus World: Regole del mondo Scopo del gioco Dato un mondo quadrato in cui vi sono trappole, wumpus e ori, il minatore, partendo dallingresso della grotta deve prendere più ori possibile e tornare a casa senza essere mangiato dal wumpus e senza cadere in una trappola.

FMZ3 Wumpus World: Regole del mondo Il minatore possiede una freccia con cui può ammazzare il wumpus. Questultimo se colpito lancia un urlo che si sente in tutta la grotta. Il minatore può andare avanti, girare a sinistra o a destra, tirare la freccia, prendere quello che cè nella casella e, infine, uscire dalla grotta.

FMZ4 Wumpus World: Regole del mondo Il punteggio viene calcolato come segue: viene decrementato di uno ad ogni azione del minatore vengono dati 100 punti se il wumpus viene ucciso se il minatore viene ucciso perde il suo punteggio se il minatore riesce ad uscire dalla grotta, gli vengono assegnati 1000 punti per ogni pezzo doro portato a casa.

FMZ5 Wumpus World: Regole del mondo Se il wumpus è in una casella, si avverte la puzza nelle quattro caselle adiacenti (a croce) Se cè una buca in una casella, si avverte la brezza nelle quattro caselle adiacenti (a croce) Se cè loro, si avverte luccicare nella stessa casella

FMZ6 Wumpus World: Environment Azioni Percezioni Ambiente Fatti Regole

FMZ7 Wumpus World: Wumpus, Gold and Pits wumpus_location(X,Y). wumpus_health(X). gold(X,Y). pit(X,Y). {dead,alive}

FMZ8 Wumpus World: Agente agent_location(X,Y). agent_orientation(X). agent_in_cave(X). agent_health(X). agent_arrow(X). agent_score(X). {0,90,180,270} {yes,no} {dead,alive} {0,1} integer

FMZ9 Wumpus World: Regole sulla puzza stench(X,Y):- X1 is X+1, wumpus_location(X1,Y). … stench(X,Y):- Y1 is Y+1, wumpus_location(X,Y1). Oppure…

FMZ10 Wumpus World: Regole sulla puzza stench(X,Y):- X1 is X+1, X0 is X-1, Y1 is Y+1, Y0 is Y-1, ( wumpus_location(X1,Y); wumpus_location(X0,Y); wumpus_location(X1,Y); wumpus_location(X1,Y)),!. Dove ; significa or Similarmente per le breeze…

FMZ11 Wumpus world:interfaccia agente-environment execute(Action,Perception). Action climb goforward turnleft turnright grab shoot lancia la freccia Se lagente la fa nel punto 1,1, leffetto è che questo lascia la miniera e prende 1000 punti in più per ogni pezzo di oro.

FMZ12 Wumpus world:interfaccia agente-environment execute(Action,Perception). [Stench,Breeze,Glitter,Bump,Scream] {yes,no}

FMZ13 Wumpus world: effetto di execute goforward execute(goforward,[Stench,Breeze,Glitter,Bump,no]):- decrement_score, goforward(Bump), update_agent_health, stench( Stench ), breeze( Breeze), glitter(Glitter). Verifica se lagente è andato in bocca al wumpus o in una trappola.

FMZ14 Wumpus world: effetto di execute goforward (2) stench(yes):- stench(X,Y), agent_position(X,Y). stench(no). glitter(yes):- gold(X,Y), agent_position(X,Y). glitter(no).

FMZ15 Wumpus world: inizializzazione del mondo initialize_world(random) :- … all_squares(4,AllSqrs), gold_probability(PG), place_objects(gold,PG,AllSqrs), at_least_one_gold(4), del([1,1],AllSqrs,AllSqrs1), pit_probability(PP), place_objects(pit,PP,AllSqrs1), random_member([WX,WY],AllSqrs1), addto_ww_init_state(wumpus_location(WX,WY)), addto_ww_init_state(wumpus_health(alive)). oro pits wumpus

FMZ16 Wumpus world: place objects place_objects(_,_,[]). place_objects(Object,P,[Square|Squares]) :- maybe(P), % succeeds with probability P !, Fact =.. [Object|Square], addto_ww_init_state(Fact), place_objects(Object,P,Squares). place_objects(Object,P,[_|Squares]) :- place_objects(Object,P,Squares). Vediamo la:

FMZ17 Prolog: univ =.. è detto univ ?- padrone(cane,mario) =.. [A,B,C]. A = padrone, B = cane, C = mario. ?- Fact =.. [pit,1,2]. Fact = pit(1,2).

FMZ18 Agenti e gestione della concorrenza E AnAn A1A1 A2A2 anan pnpn a2a2 a1a1 p1p1 p2p2 E(a i,p i ) Come simuliamo la concorrenza: -round robin

FMZ19 Wumpus World: 1 agente ciclo principale run_agent_trial(NumAction,Percept,Time):- …, run_agent(Percept,Action), …, execute(Action,Percept1), …, !, run_agent_trial(NumAction1,Percept1,Time1).

FMZ20 Wumpus World: esercizio Data il modello del wumpus world fornito, costruire un agente che totalizzi un gran numero di punti definendo: –init_agent –run_agent(Percepts,Actions)

FMZ21 Wumpus World: simple reflex agent init_agent. run_agent([S,B,yes,Bu,Scr],grab). run_agent([S,B,G,yes,Scr],turnleft). run_agent([yes,B,G,Bu,Scr],turnleft). … run_agent(_,climb).

FMZ22 Wumpus World: random agent init_agent. run_agent(_,Action):- random_member(Action,[climb, goforward, turnleft, turnright, grab, shoot]).

FMZ23 Gestione dinamica dei fatti e delle regole E possibile definire delle regole (o fatti) dinamiche –Fatti (o regole) che possono scomparire da S e, quindi, diventare falsi durante la computazione

FMZ24 Gestione dinamica dei fatti e delle regole Aggiungere il fatto Fatto in memoria assert(Fatto). Eliminare il fatto Fatto dalla memoria retract(Fatto). I predicati modificabili durante la computazione debbono essere dichiarati dinamici. :- dynamic Predicato/Arità.

FMZ25 Un agente un po più scaltro Agente pollicino –Si muove casualmente fino a che non ha trovato loro. –Quando trova loro, riesce a tornare indietro per un percorso già visitato e quindi riesce ad uscire indenne dalla grotta

FMZ26 Agente con base di conoscenza run_pollicino(Percept,Action) :- tell_kb(Percept), !, ask_KB(Action), !, tell_kb_action(Action).

FMZ27 Visione dellagente sul mondo (KB dellagente) :- dynamic(posizione_attuale/2). :- dynamic(posizione_visitata/2). :- dynamic(ultima_mossa/1). :- dynamic(salute_wumpus/1). :- dynamic(orientamento/1). :- dynamic(arieggiato/2). :- dynamic(puzzolente/2). :- dynamic(oro/2). :- dynamic(sono_contento/1).

FMZ28 Aggiornamento della KB tell_kb([Puzza,Aria,Luccichio,Urto,Urlo]):- urto(Urto), puzza(Puzza), aria(Aria), luccichio(Luccichio), urlo(Urlo).

FMZ29 Aggiornamento della KB urto(yes). urto(no):- ultima_mossa(goforward), orientamento(0), aggiorna_posizione(2,1). urto(no):- ultima_mossa(goforward), orientamento(1), aggiorna_posizione(1,2). ……

FMZ30 Aggiornamento della KB aggiorna_posizione(X,Y):- posizione_attuale(Z,K), Z1 is Z + X - 1, K1 is K + Y - 1, retract(posizione_attuale(Z,K)), assert(posizione_visitata(Z,K)), assert(posizione_attuale(Z1,K1)).

FMZ31 Aggiornamento della KB puzza(no). puzza(yes):- posizione_attuale(I,J), \+ puzzolente(I,J), assert(puzzolente(I,J)). puzza(yes). aria(no). aria(yes):- posizione_attuale(I,J), \+arieggiato(I,J), assert(arieggiato(I,J)). aria(yes).

FMZ32 Richiesta della nuova azione dal KB ask_KB(grab):- sono_contento(no), posizione_attuale(I,J), oro(I,J), retractall(sono_contento(_)), assert(sono_contento(si)), write('Sono contento!!!!'),nl. ask_KB(climb):- sono_contento(si), posizione_attuale(1,1).

FMZ33 Nuova azione dal KB ask_KB(goforward):- sono_contento(si), posizione_attuale(I,J), orientamento(2), I1 is I - 1, posizione_visitata(I1,J). …… ask_KB(turnleft):- sono_contento(si).