Introduzione a JESS Parte B - Note

Documenti analoghi
Università di Bergamo Facoltà di Ingegneria. Intelligenza Artificiale. Paolo Salvaneschi B1_1 V1.3. Sistemi a regole

Inferenza nella logica proposizionale

Sistemi a Regole. Fabio Sartori 3 dicembre L algoritmo RETE Forward e Backward Chaining

Introduzione - Drools Richiami di teoria... Drools - Linguaggio Algoritmo RETE Riferimenti DROOLS. Davide Sottara dsotty AT gmail.com.

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A6_2 V3.

Intelligenza Artificiale. Logica proposizionale: calcolo automatico

Intelligenza Artificiale I

Corso di Laurea in INFORMATICA

Logica proposizionale

Intelligenza Artificiale I

Basi di conoscenza nella logica del primo ordine

Intelligenza Artificiale I

Intelligenza Artificiale I

Ingegneria del Software

Inferenza nella logica del primo ordine

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A6_3 V2.1. Gestione

C1: L C1 C2: L C2 C: C1 C2

Università di Bergamo Facoltà di Ingegneria. Intelligenza Artificiale. Paolo Salvaneschi B1_2 V1.3. Introduzione a JESS

Fabio Sartori 26 Novembre Introduzione ai sistemi a regole. Un esempio dall enigmistica Architettura

Sistemi di Interpretazione dati e Diagnosi Overview

Classificazione dei termini

Ingegneria del Software

UNIFICAZIONE E PATTERN MATCHING

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A2_1 V3.

Constant Propagation. A More Complex Semilattice A Nondistributive Framework

INSTALLAZIONE INSTALLATION

Graphs: Cycles. Tecniche di Programmazione A.A. 2012/2013

Agenti Basati su Logica

Logica per la Programmazione

Logica per la Programmazione

Corso di Laurea in INFORMATICA

College Algebra. Logarithms: Denitions and Domains. Dr. Nguyen November 9, Department of Mathematics UK

UNIVERSITÀ DEGLI STUDI DI TORINO

Gestione dello sviluppo software Modelli Base

WELCOME. Go to the link of the official University of Palermo web site Click on the box on the right side Login unico

Le Basi di Dati Attive

Intelligenza Artificiale I

Configuration Change Release Management

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi B3_1 V3.2.

Algoritmi Priority-Driven RT. Corso di Sistemi RT Prof. Davide Brugali Università degli Studi di Bergamo

Customer Centric/Inquiry/E-bill. Tanya Enzminger

WELCOME UNIPA REGISTRATION:

Introduzione alla logica matematica

CALCOLO PROPOSIZIONALE

Keep calm, observe and assess

Intelligenza Artificiale. Breve introduzione alla logica classica (Parte 2)

Sistema Esperto per il Consiglio di vini data una portata

ISTI ISTI Pisa. Trasportare algoritmi di partizionamento di oggetti in ambito teoria dei concetti. Elvira Locuratolo & Jari Palomaki.

NATIONAL SPORT SCHOOL

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

Intelligenza Artificiale. Esercitazione con Jess

A.S. 2011/2012. Circuito semaforico da incrocio. Corso di Elettronica. Dipartimento di Elettrotecnica

User s manual for art Manuale d uso per art. 3003

Procedura di Inferenza/deduzione

Intelligenza Artificiale I

Intelligenza Artificiale. Logica proposizionale classica (Parte 2)

Finite Model Theory / Descriptive Complexity: bin

Fiori di campo. Conoscere, riconoscere e osservare tutte le specie di fiori selvatici più note

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

Espressioni CONDIZIONALI (00) Le espressioni condizionali sono dei particolari comandi che valutano alcune condizioni e restituiscono un exit status

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

Intelligenza Artificiale. Sistemi a regole Sistemi esperti

CALCOLO PROPOSIZIONALE. Corso di Logica per la Programmazione Andrea Corradini

Esercitazioni per il corso di Logica Matematica

sottobasi per valvole a spola

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A2_4 V3.

Logica Proposizionale

Ingegneria del Software

Logica per la Programmazione

Ricerca informata in uno spazio di stati

A3_3 V3.1 Requisiti e Specifica Modellazione e riuso della conoscenza

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_5 V3.

Self-Calibration Hands-on CASA introduction

CERTIFICATO N. CERTIFICATE No. EMS-1318/S FALPI S.R.L. ISO 14001:2004. RINA Services S.p.A. Via Corsica Genova Italy

AVVISO n Giugno Mittente del comunicato : BORSA ITALIANA. Societa' oggetto dell'avviso

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi B1_1 V2.1. Reti di Petri

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Risoluzione Esercizi Di Matematica Discreta Uniba

ECCO LE ISTRUZIONI PER INSERIRE IL MATERIALE RICHIESTO DAL BANDO TEATRO SENZA FILO CONTEST:

Stringhe. Prof. Lorenzo Porcelli

AVVISO n AIM -Italia/Mercato Alternativo del Capitale. 23 Giugno Mittente del comunicato : BORSA ITALIANA. Societa' oggetto dell'avviso

Linguaggi di Programmazione Prolog (1) Prolog. Processo di dimostrazione (limiti) Linguaggio: Utile per:

Fondamenti di Informatica 2

Informazione binaria: - rappresentazione di valori logici -

REGISTRATION GUIDE TO RESHELL SOFTWARE

Downloading and Installing Software Socio TIS

Le piccole cose che fanno dimagrire: Tutte le mosse vincenti per perdere peso senza dieta (Italian Edition)

Mounting the allocator on the heater. Montaggio del ripartitore sul radiatore

METODI MATEMATICI PER L INFORMATICA

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo

IM-IU v0.1. alternata e continua. pag. 1 / 5

Venezia Giulia e fascismo Una società post-asburgica negli anni di consolidamento della dittatura mussoliniana

number of successes, or a vector of length 2 giving the numbers of successes and failures, respectively.

Acquisizione di prodotti e servizi Parte 2

Accordi di 3 note / Accordi Maggiori Triade Maggiore. Settima Maggiore Si ottiene con la triade minore sul terzo grado: C maj7 = Mi m / Do

PLC CodeSys. Esercitazione 6. Automation Robotics and System CONTROL. Università degli Studi di Ferrara

Transcript:

Università di Bergamo Facoltà di Ingegneria Intelligenza Artificiale Paolo Salvaneschi B1_3 V1.2 Introduzione a JESS Parte B - Note Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie. Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall autore. Sono graditi commenti o suggerimenti per il miglioramento del materiale B1 JESS Paolo Salvaneschi 1

INDICE Jess, Sistemi a regole e FOL KB in clausole di Horn Il problema della negazione Mantenimento della verità B1 JESS Paolo Salvaneschi 2 B1 JESS Paolo Salvaneschi 2

Jess, Sistemi a regole e FOL Pattern Matcher Interprete Agenda Base di regole (KB) memoria a lungo termine Memoria di lavoro (fatti) memoria a breve termine KB in definite horn clauses (restrizione di FOL) KB facile da leggere Algoritmi di inferenza forward e backward chaining semplici Complessità per decidere l implicazione logica lineare rispetto alle dimensioni di KB B1 JESS Paolo Salvaneschi 3 B1 JESS Paolo Salvaneschi 3

Jess, Sistemi a regole e FOL Efficienza: Algoritmo RETE Applicazione iterata del Modus Ponens Generalizzato Ricerca nello spazio degli stati Il problema della monotonicità (TMS) Sostituzioni Algoritmo di unificazione Procedure di inferenza Forward (e Backward) chaining Meccanismi extralogici (gestione del conflict set) Pattern Matcher Interprete Agenda Meccanismi extralogici: es:gestione I/O Base di regole (KB) memoria a lungo termine Memoria di lavoro (fatti) memoria a breve termine B1 JESS Paolo Salvaneschi 4 B1 JESS Paolo Salvaneschi 4

Equivalenze logiche KB in clausole di Horn B1 JESS Paolo Salvaneschi 5 B1 JESS Paolo Salvaneschi 5

KB in clausole di Horn Clausole di Horn Le basi di conoscenza reali possono contenere clausole appartenenti ad una classe con una restrizione chiamate Clausole di Horn. Per esse esiste una procedura di inferenza in tempo polinomiale. Clausole di Horn: Disgiunzione di letterali di cui al massimo uno è positivo ( A B C) ( B C D) è una clausola di Horn Non è una clausola di Horn B1 JESS Paolo Salvaneschi 6 B1 JESS Paolo Salvaneschi 6

KB in clausole di Horn Utilizzo delle Clausole di Horn Ogni clausola di Horn può essere scritta come una implicazione la cui premessa è una congiunzione di letterali positivi e la cui conclusione è un unico letterale positivo Modo facile da leggere usato nelle basi di conoscenza (A B C) Regola (Se lo spostamento K1 è intermedio e lo spostamento K2 è elevato allora lo stato è preallarme) B1 JESS Paolo Salvaneschi 7 B1 JESS Paolo Salvaneschi 7

KB in clausole di Horn Utilizzo delle Clausole di Horn L inferenza con le clausole di Horn può essere eseguita applicando il Modus Ponens ovunque possibile, fino a quando non si può eseguire alcuna inferenza. L inferenza con le clausole di Horn può essere eseguita con gli algoritmi forward chaining e backward chaining. Facili da capire Complessità per decidere l implicazione logica: lineare rispetto alle dimensioni di KB B1 JESS Paolo Salvaneschi 8 B1 JESS Paolo Salvaneschi 8

KB in clausole di Horn Clausole di Horn: Disgiunzione di letterali di cui al massimo uno è positivo Definite clauses (base per la programmazione logica): Disgiunzione di letterali di cui esattamente uno è positivo body ( A B C) E una definite Horn clause ( A B ) head ( C ) fact E una Horn clause Non è una definite Horn clause B1 JESS Paolo Salvaneschi 9 B1 JESS Paolo Salvaneschi 9

KB in clausole di Horn Algoritmi di Forward-chaining e Backwardchaining Inferenza su una base di conoscenza costituita da una congiunzione di Clausole di Horn Complessità lineare rispetto alle dimensioni di KB Es di KB: B1 JESS Paolo Salvaneschi 10 B1 JESS Paolo Salvaneschi 10

KB in clausole di Horn Come si traduce in clausole definite di Horn Caso 1--- RHS costituito da più assert A B C A (B C) eliminazione dell implicazione ( A B ) ( A C) distributività di su A B A C eliminazione dell implicazione La regola è tradotta in due regole con LHS originale identico e un congiunto di RSH originale ognuna B1 JESS Paolo Salvaneschi 11 B1 JESS Paolo Salvaneschi 11

Come si traduce in clausole definite di horn Caso 2--- LHS utilizza OR A B C KB in clausole di Horn ( A B ) C eliminazione dell implicazione ( A B ) C De Morgan ( A C) ( B C) distributività di su A C B C eliminazione dell implicazione La regola è tradotta in due regole ognuna con un disgiunto di LSH originale e identico RHS originale B1 JESS Paolo Salvaneschi 12 B1 JESS Paolo Salvaneschi 12

KB in clausole di Horn The 'or' conditional element. Any number of patterns can be enclosed in a list with OR as the head. The resulting pattern is matched if one or more of the patterns inside the or are matched. If more than one of the subpatterns are matched, the or is matched more than once Jess> (defrule or-example-1 (or (a) (b) (c)) =>) Jess> (assert (a) (b) (c)) Jess> (printout t (run) crlf) 3 Restituisce il numero di regole accese La regola è attivata tre volte B1 JESS Paolo Salvaneschi 13 B1 JESS Paolo Salvaneschi 13

KB in clausole di Horn Subrule generation and the 'or' conditional element. A rule containing an 'or' conditional element with n branches is precisely equivalent to n rules, each of which has one branch as its left hand side. In fact, this is how the or conditional element is implemented: Jess imternally generates one new rule for each branch. Each of these generated rules is a subrule. Note that if the right hand side of a rule uses a variable defined by matching on the left hand side of that rule, and the variable is defined by one or more branches of an or pattern but not all branches, then a runtime error may occur. B1 JESS Paolo Salvaneschi 14 B1 JESS Paolo Salvaneschi 14

KB in clausole di Horn Come si traduce in clausole definite di horn Caso 3 non si può scrivere in Jess A B C A B C eliminazione dell implicazione Non è una clausola di Horn (Disgiunzione di letterali di cui al massimo uno è positivo) B1 JESS Paolo Salvaneschi 15 B1 JESS Paolo Salvaneschi 15

Il problema della negazione Il problema della negazione Ogni clausola di Horn può essere scritta come una implicazione la cui premessa è una congiunzione di letterali positivi e la cui conclusione è un unico letterale positivo A B C NonPiove PuoiUscire Modo scomodo: sarebbe più comodo usare la negazione in modo esplicito not (piove) PuoiUscire B1 JESS Paolo Salvaneschi 16 B1 JESS Paolo Salvaneschi 16

Il problema della negazione 2.8.6. The 'not' conditional element. Any single pattern can be enclosed in a list with not as the head. In this case, the pattern is considered to match if a fact (or set of facts) which matches the pattern is not found. B1 JESS Paolo Salvaneschi 17 B1 JESS Paolo Salvaneschi 17

Mantenimento della verità Il problema della monotonicità, retract e TMS Cosa accade se la base di conoscenza è non monotona? Ad esempio è retracted un fatto dalla cui verità dipendevano altri fatti (ora non più veri) Non è possibile utilizzare algoritmi forward e backward corretti e completi B1 JESS Paolo Salvaneschi 18 B1 JESS Paolo Salvaneschi 18

Mantenimento della verità ;; ;; Esercizio TMS1 ;; (reset) (watch all) (deffunction change-baby () (printout t "Baby is now dry" crlf)) (defrule sethelp-baby-if-wet (baby-is-wet) => (assert (sethelp))) (defrule change-baby-if-wet?wet <- (baby-is-wet) => (change-baby) (retract?wet)) (assert (baby-is-wet)) (run) A => C B1 JESS Paolo Salvaneschi 19 B1 JESS Paolo Salvaneschi 19 A C A => B B Es_TMS1 A non è più vero B resta vero anche se non lo dovrebbe essere più

Mantenimento della verità Jess> ( batch appoggio/es_tms1.clp ) ==> Focus MAIN ==> f-0 (MAIN::initial-fact) MAIN::sethelp-baby-if-wet: =1=1=1+t MAIN::change-baby-if-wet: =1=1=1+t ==> f-1 (MAIN::baby-is-wet) ==> Activation: MAIN::sethelp-baby-if-wet : f-1 ==> Activation: MAIN::change-baby-if-wet : f-1 FIRE 1 MAIN::sethelp-baby-if-wet f-1 ==> f-2 (MAIN::sethelp) FIRE 2 MAIN::change-baby-if-wet f-1 Baby is now dry <== f-1 (MAIN::baby-is-wet) <== Focus MAIN 2 Jess> (facts) f-0 (MAIN::initial-fact) f-2 (MAIN::sethelp) For a total of 2 facts. Jess> B1 JESS Paolo Salvaneschi 20 B1 JESS Paolo Salvaneschi 20

Mantenimento della verità TMS Truth Maintenance System Sistema che garantisce la coerenza della base di conoscenza ritrattando tutte le implicazioni che dipendevano da un fatto che viene ritrattato. Jess non fornisce un TMS ma un meccanismo di base che deve essere gestito manualmente B1 JESS Paolo Salvaneschi 21 B1 JESS Paolo Salvaneschi 21

Mantenimento della verità The 'logical' conditional element. The logical conditional element lets you specify logical dependencies among facts. All the facts asserted on the RHS of a rule become dependent on the matches to the logicalpatterns on that rule's LHS. If any of the matches later become invalid, the dependent facts are retracted automatically. B1 JESS Paolo Salvaneschi 22 B1 JESS Paolo Salvaneschi 22

Mantenimento della verità ;; ;; Esercizio TMS2-- logical ;; (reset) (watch all) (deffunction change-baby () (printout t "Baby is now dry" crlf)) (defrule sethelp-baby-if-wet (logical(baby-is-wet)) => (assert (sethelp))) (defrule change-baby-if-wet?wet <- (baby-is-wet) => (change-baby) (retract?wet)) (assert (baby-is-wet)) (run) A => C B1 JESS Paolo Salvaneschi 23 B1 JESS Paolo Salvaneschi 23 A C A non è più vero B è ritrattato A => B B Es_TMS2

Mantenimento della verità Jess> (batch appoggio/es_tms2.clp) ==> Focus MAIN ==> f-0 (MAIN::initial-fact) MAIN::sethelp-baby-if-wet: =1=1=1+t MAIN::change-baby-if-wet: =1=1=1+t ==> f-1 (MAIN::baby-is-wet) ==> Activation: MAIN::sethelp-baby-if-wet : f-1 ==> Activation: MAIN::change-baby-if-wet : f-1 FIRE 1 MAIN::sethelp-baby-if-wet f-1 ==> f-2 (MAIN::sethelp) FIRE 2 MAIN::change-baby-if-wet f-1 Baby is now dry <== f-1 (MAIN::baby-is-wet) <== f-2 (MAIN::sethelp) <== Focus MAIN 2 Jess> (facts) f-0 (MAIN::initial-fact) For a total of 1 facts. Jess> B1 JESS Paolo Salvaneschi 24 B1 JESS Paolo Salvaneschi 24