Intelligenza Artificiale

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Strutture dati per insiemi disgiunti
Ricorrenze Il metodo di sostituzione Il metodo iterativo
INFORMATICA Algoritmi fondamentali
Intelligenza artificiale
1 Introduzione ai calcolatori Parte II Software di base.
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
Procedure e funzioni A. Ferrari.
File System Cos’è un File System File e Directory
Algoritmi e Programmazione
Massa Laura Mela Enrica
Intelligenza Artificiale
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Semantica Operazionale di un frammento di Java: lo stato
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
Algoritmi e Strutture Dati
Interfaccia del file system
RB-alberi (Red-Black trees)
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Identificazione delle attività
Algoritmi Paralleli e Distribuiti a.a. 2008/09
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA. 2 PROCESSO INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO FINE.
eliana minicozzi linguaggi1a.a lezione2
Risorse e Stallo.
PHP – Un’introduzione Linguaggi e Traduttori 2003 Facoltà di Economia
Approfondimento delle classi
Algoritmi.
Unità Didattica 2 I Linguaggi di Programmazione
Laboratorio di Calcolo I 1) Introduzione Università Roma Tre Corso di Studi in Fisica AA 2002/03.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Strutture di controllo in C -- Flow Chart --
Intelligenza Artificiale
Espressioni condizionali
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Intelligenza Artificiale
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
Intelligenza Artificiale
Sistemi a Regole Ettore Colombo 13 Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
JESS: Esercizi Ettore Colombo Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
Elementi di Informatica di base
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Ad opera di: Matteo Donatelli e Maurizio Di Paolo Presentazione su : Elettropneumatica 1.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Jess, The Rule Engine for the Java Platform
Modulo 6 Test di verifica
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Programmazione ad oggetti
la traduzione dei programmi
Sistemi a regole [di produzione]
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Introduzione a JESS Ettore Colombo 13 Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
Java & JESS Ettore Colombo 10 Gennaio 2007 Ingegneria della Conoscenza e Sistemi Esperti.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Intelligenza Artificiale Sistemi a regole Sistemi esperti Marco Piastra

Sistemi a regole – Sistemi esperti 2. Jess 3. Fox, Goat and Cabbage (esercitazione Jess)

Sistemi a regole (Production Systems) 1 Sistemi a regole (Production Systems)

Logica, Prolog e sistemi a regole La logica simbolica: è un sistema per la rappresentazione formale del ragionamento si basa su un formalismo di rappresentazione e su regole di derivazione sintattica (regole di inferenza) Il Prolog: si basa sui principi della logica simbolica (calcolo dei predicati del primo ordine) impiega una regola di inferenza speciale (tipicamente il principio di risoluzione) rappresenta un ‘linguaggio di programmazione’ di uso generale I sistemi a regole adottano una forma semplificata di programmazione logica sono stati concepiti per una classe di applicazioni particolari (sistemi esperti o expert systems)

Logica - Principi generali e fatti specifici In una rappresentazione logico-simbolica (p.es. un programma Prolog) è tipicamente possibile distinguere: la rappresentazione di principi generali la rappresentazione di fatti specifici Esempio: principi generali : x y (((madre(x) = madre(y))  (padre(x) = padre(y))  StessiGenitori(x, y)) x y ((Maschio(x)  StessiGenitori(x, y))  Fratello(x, y)) x y ((Femmina(x)  StessiGenitori(x, y))  Sorella(x, y)) fatti specifici : Femmina(Amelia); Femmina(Alba); Femmina(Paola); Maschio(Mario) (madre(Amelia) = Paola); (madre(Alba) = Paola) (padre(Amelia) = Mario); (padre(Alba) = Mario)

Regole di produzione Un sistema a regole contiene un insieme di regole di produzione Ciascuna regola ha la forma <condizioni>  <azioni> talvolta anche descritte come <LHS - Left Hand Side>  <RHS - Right Hand Side> condizioni e azioni sono in forma normale congiuntiva (CNF) Esempio: Regola “Fratello” Regola “Sorella” madre(x) = madre(y) madre(x) = madre(y) padre(x) = padre(y) padre(x) = padre(y) Maschio(x) Femmina(x)   Fratello(x, y) Sorella(x, y)

Memoria di lavoro Un sistema a regole include anche una memoria di lavoro (anche working memory o WM) la memoria di lavoro contiene la rappresentazione dei fatti specifici le regole operano sulla memoria di lavoro le condizioni sono istanziate sulla base dei fatti specifici le azioni tipicamente comportano l’asserzione o la ritrattazione di fatti specifici (ma non solo) Memoria di lavoro Femmina(Amelia) Femmina(Alba) (madre(Amelia) = Paola) (madre(Alba) = Paola) (padre(Amelia) = Mario) (padre(Alba) = Mario) Memoria di lavoro Femmina(Amelia) Femmina(Alba) (madre(Amelia) = Paola) (madre(Alba) = Paola) (padre(Amelia) = Mario) (padre(Alba) = Mario) Sorella(Alba, Amelia) Regola “Sorella” madre(x) = madre(y) padre(x) = padre(y) Femmina(x)  Sorella(x, y)

Agenda, attivazione In ogni istante, un sistema a regole mantiene un agenda che contiene le regole istanziate Il sistema sceglie le regole istanziate da attivare L’attivazione (firing) delle regole avviene in modo sequenziale Agenda Regola “Sorella” (istanza 1) madre(Amelia) = madre(Alba) padre(Amelia) = padre(Alba) Femmina(Amelia)  Sorella(Amelia, Alba) Regola “Sorella” (istanza 2) madre(Alba) = madre(Amelia) padre(Alba) = padre(Amelia) Femmina(Alba)  Sorella(Alba, Amelia) Memoria di lavoro Femmina(Amelia) Femmina(Alba) (madre(Amelia) = Paola) (madre(Alba) = Paola) (padre(Amelia) = Mario) (padre(Alba) = Mario)

Ciclo di esecuzione Il sistema a regole procede ciclicamente: aggiorna l’agenda sceglie ed attiva una regola aggiorna la memoria di lavoro

Sistema a regole - come funzionano? Il punto critico è l’aggiornamento dell’agenda occorre identificare tutte le istanziazioni delle regole evitando i cicli infiniti le regole vanno inserite nell’agenda solo in presenza di fatti nuovi diversamente, la loro attivazione è inutile si veda l’esempio precedente Il confronto diretto è dispendioso sarebbe necessario confrontare tutte le regole con tutti i fatti distinguendo i fatti nuovi da quelli già noti

Algoritmo Rete (C. Forgy, 1980) Le condizioni di un insieme di regole vengono rappresentate in forma di grafo aciclico a cui viene ‘agganciata’ la rappresentazione della memoria di lavoro alpha alpha alpha alpha Femmina(x) madre(x) = madre(y) padre(x) = padre(y) Maschio(x) Alba Amelia Paola Alba Amelia Amelia Alba Alba Amelia Amelia Alba Mario beta Alba Amelia Amelia Alba beta beta madre(x) = madre(y) padre(x) = padre(y) Femmina(x)  Sorella(x, y) Alba Amelia Amelia Alba madre(x) = madre(y) padre(x) = padre(y) Maschio(x)  Fratello(x, y)

Aggiornamento della Rete I nuovi fatti vengono ‘agganciati’ ai nodi di pertinenza “Gino ha gli stessi genitori di Paola” alpha alpha alpha alpha Femmina(x) madre(x) = madre(y) padre(x) = padre(y) Maschio(x) Alba Amelia Paola Alba Amelia Amelia Alba Gino Paola Paola Gino Alba Amelia Amelia Alba Gino Paola Paola Gino Mario Gino beta Alba Amelia Amelia Alba Gino Paola Paola Gino beta beta madre(x) = madre(y) padre(x) = padre(y) Femmina(x)  Sorella(x, y) Alba Amelia Amelia Alba Paola Gino madre(x) = madre(y) padre(x) = padre(y) Maschio(x)  Fratello(x, y) Gino Paola

Sistema Jess (Java Expert System Shell) 2 Sistema Jess (Java Expert System Shell)

Jess - Introduzione Una implementazione dell’algoritmo Rete incorporato in un ambiente di esecuzione Lisp (minimale) il tutto implementato in Java Realizzato da Ernest J. Friedman-Hill Distributed Computing Systems Sandia National Laboratories Livermore, CA - USA Disponibile presso: http://herzberg.ca.sandia.gov/jess Licenza gratuita (incluso il sorgente) per usi non-commerciali

Jess - Sintassi I fatti vengono espressi come tuple (maschio Mario) (femmina Paola) (padre Alba Mario) (padre Amelia Mario) (madre Alba Paola) (madre Amelia Paola) Le regole vengono espresse con una sintassi particolare (defrule sorella (padre ?x ?p) (padre ?y ?p) (madre ?x ?m) (madre ?y ?m) (femmina ?x) => (assert (sorella ?x ?y)))

Jess - Funzioni Lisp Il sistema a regole Jess è incorporato in un ambiente Lisp Di conseguenza le condizioni e le azioni possono includere chiamate a funzioni Lisp Due funzioni molto utili (tipicamente per definire le azioni in una regola) (assert <fact>) inserimento di <fact> nella memoria di lavoro (com aggiornamento della struttura Rete) (retract <fact>) rimozione di <fact> dalla memoria di lavoro (con aggiornamento della struttura Rete)

Jess – Funzioni di attivazione Il sistema Jess si attiva da linea di comando $ java jess.Main Jess> La prima linea attiva il sistema, nella seconda compare il prompt del Lisp Listener Tipicamente le regole sono scritte su un file ma possono anche essere inserite direttamente Jess> (batch “regole.clp”) Caricamento del file regole.clp Attivazione Jess> (reset) Jess> (run) inizializzazione della memoria di lavoro con azzeramento dei fatti attivazione del ciclo principale il sistema rimane attivo finchè vi sono regole da eseguire

Jess – Funzioni utili Ispezione Tracciamento Azzeramento Jess> (agenda) mostra le regole istanziate presenti nell’agenda Jess> (facts) mostra i fatti memorizzati nella memoria di lavoro Tracciamento Jess> (watch all) tracciamento dell’esecuzione Jess> (unwatch all) elimina il tracciamento dell’esecuzione Jess> (run 1) attivazione di una sola regola Azzeramento Jess> (clear) azzera regole e fatti

Fox, Goat & Cabbage (esercitazione con Jess) 3 Fox, Goat & Cabbage (esercitazione con Jess)

Un dilemma Partecipanti: Scenario: Obiettivo Vincoli: un agricoltore (farmer) una volpe (fox) una capra (goat) un cavolo (cabbage) Scenario: una barca due rive (shore-1, shore-2) Obiettivo tutti i partecipanti sono su una riva (shore-1) l’agricoltore deve traghettare tutti sulla riva opposta (shore-2) Vincoli: se lasciate sola con la capra, la volpe mangia la capra se lasciata sola con il cavolo, la capra mangia il cavolo

Funzioni Lisp particolari Definizione contenuto iniziale della memoria di lavoro (deffact <fact>) inserimento iniziale di <fact> nella memoria di lavoro (e aggiornamento della struttura Rete) al momento della esecuzione di (reset) Uso di templates per strutture dati composite (deftemplate <structure>) Esempio di definizione: (deftemplate status (slot farmer-location) (slot fox-location) (slot goat-location) (slot cabbage-location)) Esempio d’uso (un fatto specifico): (status (farmer-location shore-1) (fox-location shore-1) (goat-location shore-1) (cabbage-location shore-1))

Priorità tra regole Priorità tra regole regole (salience) salvo diversa indicazione, ogni regola ha salience 0 indicazione esplicita della salience: (defrule fox-eats-goat (declare (salience 100)) ... La priorità tra regole è relativa (il valore assoluto della salience non conta) La priorità influenza la gestione dell’agenda nella scelta per l’attivazione le regole a priorità più alta vengono privilegiate rispetto alle regole a priorità più bassa

Condizioni speciali Nella soluzione vengono usate alcune condizioni speciali Identità (già vista nell’esempio precedente) (defrule farmer-with-goat-and-fox (farmer-location ?x) (fox-location ?x) (goat-location ?x) ... Differenza (defrule fox-eats-goat (farmer-location ?x) (fox-location ?y&~?x) (goat-location ?y) ... Confronto (defrule y-larger-than-x (value ?x) (value ?y&:(< ?x ?y)) ...

Azioni speciali Nella soluzione vengono usate alcune azioni speciali Assegnazione di valori a variabili (bind ?x (+ ?x 1)) Modifica di fatti strutturati (modify ?fact (farmer-location ?x) (fox-location ?y)) Duplicazione e modifica di fatti strutturati (duplicate ?fact (farmer-location ?x) (fox-location ?y))

Attivazione dell’esempio Impostazione della variabile CLASSPATH meglio se in .login Copia del file delle regole Copiare examples/dilemma.clp Attivazione del sistema Jess $ java jess.Main Jess> Caricamento del file dilemma.clp Jess> (batch “dilemma.clp”) Attivazione dell’esempio Jess> (reset) Jess> (run)

Domande Qual’è l’algoritmo utilizzato per risolvere il dilemma? fornire una spiegazione informale spiegare il significato della struttura status Qual’è il ruolo della priorità tra regole? provare a togliere le indicazioni di salience spiegare la differenza di comportamento Trascurare invece le regole di presentazione del risultato