![Page 1: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/1.jpg)
Sistemi a Regole di Produzione
Stefano Bragaglia
Fondamen( di Intelligenza Ar(ficiale M 4 Giugno 2013
![Page 2: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/2.jpg)
Sommario
1. Sistemi a regole 2. Sistemi a regole di produzione • JBoss Drools • Un caso d’uso
3. Pa9ern matching: l’algoritmo RETE 4. Risoluzione dei confliC & Esecuzione 5. RiferimenF 6. Informazioni
4 Giugno 2013 Sistemi a Regole di Produzione 2
![Page 3: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/3.jpg)
SISTEMI A REGOLE FondamenF di Intelligenza ArFficiale M
![Page 4: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/4.jpg)
Sistemi a Regole
• Le regole sono il principale modo di esprimere la conoscenza in molF campi dell’I.A.
• I Fpi di regole più comuni sono: – i programmi logici (es.: Prolog) – le regole di produzione (es.: Drools)
• Entrambi i Fpi sono molto comuni, basate su principi simili ma realizzate in modo duale
4 Giugno 2013 Sistemi a Regole di Produzione 4
![Page 5: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/5.jpg)
Sistemi a Regole • Il Modus Ponens, anche de9o Principio di disgiunzione, Affermazione dell’antecedente o Ragionamento direFo, prevede che:
se è vero che p(X) implica q(Y) e p(x) è vero, allora q(y) è ugualmente vero
• Es.: Se piove, allora la strada si bagna. Qui piove. Dunque questa strada è bagnata.
q(y)
, p(x) p(X) q(Y)
4 Giugno 2013 Sistemi a Regole di Produzione 5
![Page 6: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/6.jpg)
Sistemi a Regole • Il Modus Ponens, anche de9o Principio di disgiunzione, Affermazione dell’antecedente o Ragionamento direFo, prevede che:
se è vero che p(X) implica q(Y) e p(x) è vero, allora q(y) è ugualmente vero
• Es.: Se piove, allora la strada si bagna. implicazione Qui piove. premessa Dunque questa strada è bagnata. conseguenza
implicazione premessa
conseguenza q(y)
, p(x) p(X) q(Y)
4 Giugno 2013 Sistemi a Regole di Produzione 6
![Page 7: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/7.jpg)
Sistemi a Regole
Programmi logici • Backward-‐chaining • Dal goal ai faC, applicando le regole all’indietro
• Generalmente conservaFvi
• Unificazione • Backtracking
Regole di produzione • Forward-‐chaining • I faC aCvano le regole che generano nuovi faC
• Potenzialmente distruCve
• Pa9ern matching • Parallelismo
4 Giugno 2013 Sistemi a Regole di Produzione 7
![Page 8: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/8.jpg)
Sistemi a Regole
Programmi logici Regole di produzione
4 Giugno 2013 Sistemi a Regole di Produzione 8
![Page 9: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/9.jpg)
Sistemi a Regole
Programmi logici Regole di produzione
4 Giugno 2013 Sistemi a Regole di Produzione 9
![Page 10: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/10.jpg)
Sistemi a Regole
Programmi logici Regole di produzione
4 Giugno 2013 Sistemi a Regole di Produzione 10
![Page 11: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/11.jpg)
Sistemi a Regole
Programmi logici Regole di produzione
4 Giugno 2013 Sistemi a Regole di Produzione 11
![Page 12: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/12.jpg)
Sistemi a Regole
Programmi logici Regole di produzione
4 Giugno 2013 Sistemi a Regole di Produzione 12
![Page 13: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/13.jpg)
Sistemi a Regole
Programmi logici Regole di produzione
4 Giugno 2013 Sistemi a Regole di Produzione 13
![Page 14: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/14.jpg)
Sistemi a Regole
Programmi logici Regole di produzione
4 Giugno 2013 Sistemi a Regole di Produzione 14
![Page 15: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/15.jpg)
SISTEMI A REGOLE DI PRODUZIONE FondamenF di Intelligenza ArFficiale M
![Page 16: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/16.jpg)
Sistemi a Regole di Produzione
• I sistemi a regole di produzione, o ProducCon Rule Systems (PRS): – sono sistemi a regole, Rule Based Systems (RBS), – basaF sul principio deduCvo del Modus Ponens, – che ado9ano un approccio reaHvo/generaCvo.
4 Giugno 2013 Sistemi a Regole di Produzione 16
![Page 17: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/17.jpg)
Sistemi a Regole di Produzione
Agenda
PM
WM
Pattern Matching!
Conflict Resolution! Execution!
Patterns "+ Actions!
triples "(now beans)!
Output!
Productions:!a
1 2 3
Facts:!
Schema archite9urale e principio di funzionamento
4 Giugno 2013 Sistemi a Regole di Produzione 17
![Page 18: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/18.jpg)
Sistemi a Regole di Produzione
Agenda
PM
WM
Pattern Matching!
Conflict Resolution! Execution!
Patterns "+ Actions!
triples "(now beans)!
Output!
Productions:!a
1 2 3
Facts:!
ELABORAZIONE SUDDIVISA IN 3 STADI
Schema archite9urale e principio di funzionamento
4 Giugno 2013 Sistemi a Regole di Produzione 18
![Page 19: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/19.jpg)
Sistemi a Regole di Produzione
Agenda
PM
WM
Pattern Matching!
Conflict Resolution! Execution!
Patterns "+ Actions!
triples "(now beans)!
Output!
Productions:!a
1 2 3
Facts:!
ELABORAZIONE SUDDIVISA IN 3 STADI
3 MEMORIE
Schema archite9urale e principio di funzionamento
4 Giugno 2013 Sistemi a Regole di Produzione 19
![Page 20: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/20.jpg)
JBOSS DROOLS FondamenF di Intelligenza ArFficiale M
![Page 21: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/21.jpg)
JBoss Drools
Expert (rule engine) Fusion (event processing)
jBPM (workflow) Guvnor (rule repo)
Planner (constraints)
• AlternaCve – OPS5, CLIPS, Jess, ILOG, Jrules, BizTalk, …
• Sistema di riferimento – JBoss Drools (h9p://www.jboss.org/drools)
• Perchè? – Open source, Java-‐based, integrato con Eclipse
• Parte di una piaRaforma integrata
4 Giugno 2013 Sistemi a Regole di Produzione 21
![Page 22: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/22.jpg)
JBoss Drools
Expert (rule engine) Fusion (event processing)
jBPM (workflow) Guvnor (rule repo)
Planner (constraints)
• AlternaCve – OPS5, CLIPS, Jess, ILOG, Jrules, BizTalk, …
• Sistema di riferimento – JBoss Drools (h9p://www.jboss.org/drools)
• Perchè? – Open source, Java-‐based, integrato con Eclipse
• Parte di una piaRaforma integrata
4 Giugno 2013 Sistemi a Regole di Produzione 22
![Page 23: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/23.jpg)
JBoss Drools • Sintassi del linguaggio Drools: regole rule "ID_regola" /* IMPLICAZIONE */ // attributi when /* premessa */ // pattern (composito) then /* conseguenza */ // azioni logiche // effetti collaterali end
4 Giugno 2013 Sistemi a Regole di Produzione 23
![Page 24: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/24.jpg)
JBoss Drools • Sintassi del linguaggio Drools: regole rule "Cancella gli Stefano" /* IMPLICAZIONE */ salience 5 when /* premessa */ $p: Person ( name == "Stefano" ) then /* conseguenza */ retract($p); System.out.println($p); end
4 Giugno 2013 Sistemi a Regole di Produzione 24
![Page 25: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/25.jpg)
JBoss Drools • Sintassi del linguaggio Drools: queries query "ID_query" /* premessa */ // pattern (composito) end
4 Giugno 2013 Sistemi a Regole di Produzione 25
![Page 26: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/26.jpg)
JBoss Drools • Sintassi del linguaggio Drools: queries query "Trova gli Stefano" /* premessa */ $p: Person ( name == "Stefano" ) end
4 Giugno 2013 Sistemi a Regole di Produzione 26
![Page 27: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/27.jpg)
JBoss Drools • Sintassi del linguaggio Drools: oggeH declare ID_Class /* dichiarazione */ // dichiarazione di campo // dichiarazione di campo end
4 Giugno 2013 Sistemi a Regole di Produzione 27
![Page 28: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/28.jpg)
JBoss Drools • Sintassi del linguaggio Drools: oggeH declare Person /* dichiarazione */ name: String address: Address = new Address(...) end
Person -‐ name: String -‐ address: Address ...
Address -‐ street: String -‐ zip: long -‐ city: String ...
4 Giugno 2013 Sistemi a Regole di Produzione 28
![Page 29: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/29.jpg)
JBoss Drools • Sintassi del linguaggio Drools: evenC declare ID_Event /* dichiarazione */ // annotazioni // annotazioni // dichiarazioni di campo // dichiarazioni di campo end
4 Giugno 2013 Sistemi a Regole di Produzione 29
![Page 30: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/30.jpg)
JBoss Drools • Sintassi del linguaggio Drools: evenC declare Alarm /* dichiarazione */ @role( event ) @timestamp( time ) message: String time: long end
4 Giugno 2013 Sistemi a Regole di Produzione 30
![Page 31: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/31.jpg)
JBoss Drools
• Sintassi del linguaggio Drools: – Operatori relazionali: == != >= > <= < – Operatori logici: && , || – Negazione: not – Operatori funzionali: min, max, count, accumulate
– Dot notaCon: name == "…" o $p.getName().equals("…")
4 Giugno 2013 Sistemi a Regole di Produzione 31
![Page 32: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/32.jpg)
JBoss Drools • Caso d’uso: sistema marcatempo aziendale – Ogni dipendente ha un badge con RFID – Quando passa a9raverso un gate, la WM riceve un evento “passed” (marcato temporalmente) a9raverso l’entry-‐point corrispondente al dipendente • Filtrando il primo e l’ulFmo evento “passed” di ogni giorno per ogni dipendente, si determina quante ore ha lavorato
• Se non ci sono evenF “passed” per un dato dipendente in un dato giorno e non è in vacanza/malato, allora è assente
• Accumulando il numero di ore lavorate in un mese da un dipendente si può calcolare in proporzione la sua busta paga
• Sapendo che un dipendente è assegnato a un proge9o, l’azienda può calcolare i mesi/uomo dedicaF a quel proge9o
4 Giugno 2013 Sistemi a Regole di Produzione 32
![Page 33: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/33.jpg)
PATTERN MATCHING: L’ALGORITMO RETE
FondamenF di Intelligenza ArFficiale M
![Page 34: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/34.jpg)
1A REGOLA DI ESEMPIO Pa9ern Matching: l’algoritmo RETE
4 Giugno 2013 Sistemi a Regole di Produzione 34
![Page 35: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/35.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
4 Giugno 2013 Sistemi a Regole di Produzione 35
![Page 36: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/36.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
4 Giugno 2013 Sistemi a Regole di Produzione 36
![Page 37: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/37.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
4 Giugno 2013 Sistemi a Regole di Produzione 37
![Page 38: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/38.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 38
![Page 39: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/39.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
NB: I faH contenuC in un (Alfa) Memory Node fanno match con un paRern semplice!
4 Giugno 2013 Sistemi a Regole di Produzione 39
![Page 40: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/40.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 40
![Page 41: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/41.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 41
![Page 42: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/42.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 42
![Page 43: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/43.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
_ Person[Stefano, <null>] Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]]
WM
p1: Person("Stefano", null) a1: Address("Via Po 2", 40068, ���
"San Lazzaro") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
4 Giugno 2013 Sistemi a Regole di Produzione 43
![Page 44: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/44.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes p1
Person[Stefano, <null>] _ Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]]
WM
p1: Person("Stefano", null) a1: Address("Via Po 2", 40068, ���
"San Lazzaro") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
4 Giugno 2013 Sistemi a Regole di Produzione 44
![Page 45: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/45.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes p1
Person[Stefano, <null>] _ Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]]
WM
p1: Person("Stefano", null) a1: Address("Via Po 2", 40068, ���
"San Lazzaro") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
4 Giugno 2013 Sistemi a Regole di Produzione 45
![Page 46: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/46.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes p1, p2
Person[Stefano, <null>] Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]] _
WM
p1: Person("Stefano", null) a1: Address("Via Po 2", 40068, ���
"San Lazzaro") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
4 Giugno 2013 Sistemi a Regole di Produzione 46
![Page 47: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/47.jpg)
rule "Trova gli Stefano" when $p: Person( name == "Stefano" ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Person[Stefano, <null>] Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]] _
WM
Memory nodes
p1: Person("Stefano", null) a1: Address("Via Po 2", 40068, ���
"San Lazzaro") p2: Person("Stefano", a1) p3: Person("Giacomo", a1) p1, p2
4 Giugno 2013 Sistemi a Regole di Produzione 47
![Page 48: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/48.jpg)
2A REGOLA DI ESEMPIO Pa9ern Matching: l’algoritmo RETE
4 Giugno 2013 Sistemi a Regole di Produzione 48
![Page 49: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/49.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
4 Giugno 2013 Sistemi a Regole di Produzione 49
![Page 50: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/50.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
4 Giugno 2013 Sistemi a Regole di Produzione 50
![Page 51: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/51.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 51
![Page 52: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/52.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 52
![Page 53: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/53.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 53
![Page 54: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/54.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 54
![Page 55: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/55.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 55
![Page 56: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/56.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
NB: I Beta Nodes fanno il prodoRo cartesiano degli oggeH filtraC dagli Alfa padre!
4 Giugno 2013 Sistemi a Regole di Produzione 56
![Page 57: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/57.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 57
![Page 58: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/58.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
NB: Le tuple contenute in un (Beta) Memory Node fanno match con un paRern composito!
4 Giugno 2013 Sistemi a Regole di Produzione 58
![Page 59: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/59.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 59
![Page 60: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/60.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 60
![Page 61: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/61.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
NB: Introduco la regola precedente: I nodi della RETE vengono condivisi quando possibile! 4 Giugno 2013 Sistemi a Regole di Produzione 61
![Page 62: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/62.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 62
![Page 63: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/63.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 63
![Page 64: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/64.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 64
![Page 65: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/65.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 65
![Page 66: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/66.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
_ Person[p1, -‐]/Address[a1] Person[p1, -‐]/Address[a2] Person[p2, -‐]/Address[a1] Person[p2, a1]/Address[a2]
WM
4 Giugno 2013 Sistemi a Regole di Produzione 66
![Page 67: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/67.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
_ Person[p1, -‐]/Address[a1] Person[p1, -‐]/Address[a2] Person[p2, -‐]/Address[a1] Person[p2, a1]/Address[a2]
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1���
4 Giugno 2013 Sistemi a Regole di Produzione 67
![Page 68: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/68.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
Person[p1, -‐]/Address[a1] _ Person[p1, -‐]/Address[a2] Person[p2, -‐]/Address[a1] Person[p2, a1]/Address[a2]
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1
p1
p1-a1
NB: Stampa semplificata e output prima regola omesso! 4 Giugno 2013 Sistemi a Regole di Produzione 68
![Page 69: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/69.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
Person[p1, -‐]/Address[a1] Person[p1, -‐]/Address[a2] _ Person[p2, -‐]/Address[a1] Person[p2, a1]/Address[a2]
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1���a2
p1
p1-a1 p1-a2���
NB: Stampa semplificata e output prima regola omesso! 4 Giugno 2013 Sistemi a Regole di Produzione 69
![Page 70: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/70.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
Person[p1, -‐]/Address[a1] Person[p1, -‐]/Address[a2] Person[p2, -‐]/Address[a1] Person[p2, a1]/Address[a2] _
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1���a2
p1���p2
p1-a1 p1-a2���p2-a1 p2-a2
NB: Stampa semplificata e output prima regola omesso! 4 Giugno 2013 Sistemi a Regole di Produzione 70
![Page 71: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/71.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
Person[p1, -‐]/Address[a1] Person[p1, -‐]/Address[a2] Person[p2, -‐]/Address[a1] Person[p2, a1]/Address[a2] _
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1���a2
p1���p2
p1-a1 p1-a2���p2-a1 p2-a2
NB: Stampa semplificata e output prima regola omesso! 4 Giugno 2013 Sistemi a Regole di Produzione 71
![Page 72: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/72.jpg)
rule "Trova gli Stefano e indirizzi" when $a: Address() $p: Person( name == "Stefano" ) then System.out.println($p+"/"+$a+" "); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Memory nodes
Beta nodes
Person[p1, -‐]/Address[a1] Person[p1, -‐]/Address[a2] Person[p2, -‐]/Address[a1] Person[p2, a1]/Address[a2] _
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1���a2
p1���p2
p1-a1 p1-a2���p2-a1 p2-a2
NB: Stampa semplificata e output prima regola omesso!
NB: WM = insieme delle memories (distribuita); oggeH ripetuC (ricondante): spazio vs tempo. 4 Giugno 2013 Sistemi a Regole di Produzione 72
![Page 73: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/73.jpg)
3A REGOLA DI ESEMPIO Pa9ern Matching: l’algoritmo RETE
4 Giugno 2013 Sistemi a Regole di Produzione 73
![Page 74: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/74.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
4 Giugno 2013 Sistemi a Regole di Produzione 74
![Page 75: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/75.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
NB: Questo Alfa node conCene un riferimento incrociato che non si può ancora risolvere.
4 Giugno 2013 Sistemi a Regole di Produzione 75
![Page 76: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/76.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
4 Giugno 2013 Sistemi a Regole di Produzione 76
![Page 77: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/77.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
NB: Il precedente Alfa node è inserito qui perchè può risolvere il riferimento incrociato.
4 Giugno 2013 Sistemi a Regole di Produzione 77
![Page 78: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/78.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
4 Giugno 2013 Sistemi a Regole di Produzione 78
![Page 79: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/79.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
NB: I nodi della RETE vengono condivisi quando possibile! Questa è la prima regola… 4 Giugno 2013 Sistemi a Regole di Produzione 79
![Page 80: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/80.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
NB: I nodi della RETE vengono condivisi quando possibile! Questa è la seconda… 4 Giugno 2013 Sistemi a Regole di Produzione 80
![Page 81: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/81.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
NB: I nodi della RETE vengono condivisi quando possibile! Questa è l’ulCma regola! 4 Giugno 2013 Sistemi a Regole di Produzione 81
![Page 82: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/82.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
4 Giugno 2013 Sistemi a Regole di Produzione 82
![Page 83: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/83.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
_ Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]]
WM
4 Giugno 2013 Sistemi a Regole di Produzione 83
![Page 84: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/84.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1
_ Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]]
4 Giugno 2013 Sistemi a Regole di Produzione 84
![Page 85: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/85.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
a1���
_ Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]]
p1���
NB: L’output delle prime due regole è stato omesso!
p1,a1���
4 Giugno 2013 Sistemi a Regole di Produzione 85
![Page 86: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/86.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
NB: L’output delle prime due regole è stato omesso!
a1���a2
p1���
p1,a1���p1,a2 _
Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]]
4 Giugno 2013 Sistemi a Regole di Produzione 86
![Page 87: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/87.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]] _
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
NB: L’output delle prime due regole è stato omesso!
a1���a2
p1���p2
p1,a1���p1,a2 p2,a1 p2,a2
p1,a1���
4 Giugno 2013 Sistemi a Regole di Produzione 87
![Page 88: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/88.jpg)
rule "Trova Stefano col suo indirizzo" when $a: Address() $p: Person( name == "Stefano", address == $a ) then System.out.println($p); end
Pa9ern matching: l’algoritmo RETE
Terminal nodes
Memory nodes
ALFA
NETWORK
BE
TA NETWORK
Root node
Entry Point nodes
Object Type nodes
Alfa nodes
Dummy nodes
Memory nodes
Beta nodes
Delayed nodes
Person[Stefano, Address[Via Po 2, 40068, San Lazzaro]] _
WM
a1: Address("Via Po 2", 40068, ��� "San Lazzaro")
p1: Person("Stefano", null) a2: Address("Via Roma 5", 40128, "Bologna") p2: Person("Stefano", a1) p3: Person("Giacomo", a1)
NB: L’output delle prime due regole è stato omesso!
a1���a2
p1���p2
p1,a1���p1,a2 p2,a1 p2,a2
p1,a1���
4 Giugno 2013 Sistemi a Regole di Produzione 88
![Page 89: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/89.jpg)
RISOLUZIONE DEI CONFLITTI ED ESECUZIONE
FondamenF di Intelligenza ArFficiale M
![Page 90: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/90.jpg)
Risoluzione dei ConfliC & Esecuzione
ai
ai ai ai ai ai ai ai ai ai ai
E X E C
FIFO
ai ai
a i
!
AGENDA
4 Giugno 2013 Sistemi a Regole di Produzione 90
![Page 91: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/91.jpg)
Risoluzione dei ConfliC & Esecuzione
ai
ai ai ai ai ai ai ai ai ai ai
E X E C
ai • oggeC filtraF • rif. regola -‐ salience -‐ codice
FIFO
ai ai
a i
!
AGENDA
4 Giugno 2013 Sistemi a Regole di Produzione 91
![Page 92: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/92.jpg)
Risoluzione dei ConfliC & Esecuzione
ai
ai ai ai ai ai ai ai ai ai ai
E X E C
ai • oggeC filtraF • rif. regola -‐ salience -‐ codice
FIFO
ai ai
a i
!
AGENDA
4 Giugno 2013 Sistemi a Regole di Produzione 92
NB: In verità, una Map<Integer, Queue<Ac(va(on>> ordinata per chiavi decrescen(!
![Page 93: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/93.jpg)
Risoluzione dei ConfliC & Esecuzione
ai
ai ai ai ai ai ai ai ai ai ai
E X E C
ai • oggeC filtraF • rif. regola -‐ salience -‐ codice
FIFO
ai ai
a i
Codice: -‐ Azioni logiche (pot. distruave) -‐ Effea collaterali (non rever(bili!)
!
AGENDA
4 Giugno 2013 Sistemi a Regole di Produzione 93
![Page 94: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/94.jpg)
Risoluzione dei ConfliC & Esecuzione
PM
r1 r2
WM
f
Agenda a1 a2
rule "r1" when F() then assert(new G()); end
rule "r2" when $f: F() then retract($f); end ?!?
4 Giugno 2013 Sistemi a Regole di Produzione 94
![Page 95: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/95.jpg)
Risoluzione dei ConfliC & Esecuzione
PM
r1 r2
WM
f
Agenda a1 a2
rule "r1" when F() then assert(new G()); end
rule "r2" when $f: F() then retract($f); end ?!?
a1 < a2
PM
Agenda WM
PM
Agenda WM
a2 < a1 r1 < r2
rule "r1" salience 10 ...
rule "r2" salience 5 ...
Prima inserisco G, poi elimino F.
Prima elimino F, a1 non sussiste più, G mai asserito.
Stabilisco un ordine di precedenza tra r1 e r2 (fisso).
4 Giugno 2013 Sistemi a Regole di Produzione 95
![Page 96: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/96.jpg)
RIFERIMENTI FondamenF di Intelligenza ArFficiale M
![Page 97: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/97.jpg)
RiferimenF • Charles L. Forgy, “RETE: A Fast Algorithm for the Many PaFer/
Many Object Match Problem”, ArFficial Intelligence, 19, pp. 17-‐37, 1982
• R.B. Doorenbos, “Produc(on Matching for Large Learning Systems”, Ph.D. Thesis, 1995
• Schmit, Struhmer and Stojanovic, “Blending Complex Event Processing with the RETE algorithm”, in Proceedings of iCEP2008, 2008
• h9p://en.wikipedia.org/wiki/Rete_algorithm • h9p://en.wikipedia.org/wiki/Complex_event_processing
4 Giugno 2013 Sistemi a Regole di Produzione 97
![Page 98: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/98.jpg)
INFORMAZIONI FondamenF di Intelligenza ArFficiale M
![Page 99: Sistemia Regoledi’ Produzione’lia.disi.unibo.it/Courses/AI/fundamentalsAI2012-13/esercitazioni/PRS… · Sommario(1. Sistemi(a regole(2. Sistemi(a regoledi produzione(• JBossDrools](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccac5749692773bc36b9ee/html5/thumbnails/99.jpg)
Informazioni
• Domani esercitazione in laboratorio
• Possibilità di svolgere aCvità proge9uali o tesi – Drools, Event Calculus, Expecta(ons, MS-‐Kinect, Android SDK, SOA/Cloud, …
• Per domande, dubbi, richieste: [email protected]
4 Giugno 2013 Sistemi a Regole di Produzione 99