Sistemia Regoledi’...

99
Sistemi a Regole di Produzione Stefano Bragaglia Fondamen( di Intelligenza Ar(ficiale M 4 Giugno 2013

Transcript of Sistemia Regoledi’...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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