Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introducing PRSs and Drools (in Italian)

1,276 views

Published on

I presented these slides introducing Production Rules Systems in June 2013 to the students of the 'Fondamenti di Intelligenza Artificiale' course of the University of Bologna, Italy. I pass from the theory to the practice, showing the architecture and the components of PRSs. In the final part, an intuition of the operating principles are also given.

Published in: Education

Introducing PRSs and Drools (in Italian)

  1. 1. Sistemi  a     Regole  di  Produzione   Stefano  Bragaglia     Fondamen(  di  Intelligenza  Ar(ficiale  M   4  Giugno  2013    
  2. 2. Sommario   1.  Sistemi  a  regole   2.  Sistemi  a  regole  di  produzione   •  JBoss  Drools   •  Un  caso  d’uso   3.  4.  5.  6.  Pa9ern  matching:  l’algoritmo  RETE   Risoluzione  dei  confliC  &  Esecuzione   RiferimenF   Informazioni   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   2  
  3. 3. FondamenF  di  Intelligenza  ArFficiale  M   SISTEMI  A  REGOLE  
  4. 4. 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  
  5. 5. Sistemi  a  Regole   •  Il  Modus  Ponens,  anche  de9o  Principio  di  disgiunzione,   Affermazione  dell’antecedente  o  Ragionamento  direFo,   prevede  che:   p(x)   ,   p(X)   q(Y)   q(y)   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.   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   5  
  6. 6. Sistemi  a  Regole   •  Il  Modus  Ponens,  anche  de9o  Principio  di  disgiunzione,   Affermazione  dell’antecedente  o  Ragionamento  direFo,   prevede  che:   premessa   p(x)   ,   p(X)   q(Y)   implicazione   conseguenza   q(y)   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   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   6  
  7. 7. Sistemi  a  Regole   Programmi  logici   •  Backward-­‐chaining   •  Dal  goal  ai  faC,   applicando  le  regole   all’indietro   •  Generalmente   conservaFvi   •  Unificazione   •  Backtracking   4  Giugno  2013   Regole  di  produzione   •  Forward-­‐chaining   •  I  faC  aCvano  le  regole   che  generano  nuovi  faC   •  Potenzialmente   distruCve   •  Pa9ern  matching   •  Parallelismo   Sistemi  a  Regole  di  Produzione   7  
  8. 8. Sistemi  a  Regole   Programmi  logici   4  Giugno  2013   Regole  di  produzione   Sistemi  a  Regole  di  Produzione   8  
  9. 9. Sistemi  a  Regole   Programmi  logici   4  Giugno  2013   Regole  di  produzione   Sistemi  a  Regole  di  Produzione   9  
  10. 10. Sistemi  a  Regole   Programmi  logici   4  Giugno  2013   Regole  di  produzione   Sistemi  a  Regole  di  Produzione   10  
  11. 11. Sistemi  a  Regole   Programmi  logici   4  Giugno  2013   Regole  di  produzione   Sistemi  a  Regole  di  Produzione   11  
  12. 12. Sistemi  a  Regole   Programmi  logici   4  Giugno  2013   Regole  di  produzione   Sistemi  a  Regole  di  Produzione   12  
  13. 13. Sistemi  a  Regole   Programmi  logici   4  Giugno  2013   Regole  di  produzione   Sistemi  a  Regole  di  Produzione   13  
  14. 14. Sistemi  a  Regole   Programmi  logici   4  Giugno  2013   Regole  di  produzione   Sistemi  a  Regole  di  Produzione   14  
  15. 15. FondamenF  di  Intelligenza  ArFficiale  M   SISTEMI  A  REGOLE  DI  PRODUZIONE  
  16. 16. 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  
  17. 17. Sistemi  a  Regole  di  Produzione   Schema  archite9urale  e  principio  di  funzionamento   Productions:! Patterns" + Actions! a   PM 1 Pattern Matching! Facts:! triples " (now beans)! 2 Agenda Conflict Resolution! 3 Execution! WM Output! 4  Giugno  2013   Sistemi  a  Regole  di  Produzione   17  
  18. 18. Sistemi  a  Regole  di  Produzione   Schema  archite9urale  e  principio  di  funzionamento   Productions:! Patterns" + Actions! a   PM 1 Pattern Matching! Facts:! triples " (now beans)! Agenda Conflict Resolution! 3 Execution! WM Output! 4  Giugno  2013   2 ELABORAZIONE  SUDDIVISA  IN  3  STADI   Sistemi  a  Regole  di  Produzione   18  
  19. 19. Sistemi  a  Regole  di  Produzione   Schema  archite9urale  e  principio  di  funzionamento   3  MEMORIE   Productions:! Patterns" + Actions! a   PM 1 Pattern Matching! Facts:! triples " (now beans)! Agenda Conflict Resolution! 3 Execution! WM Output! 4  Giugno  2013   2 ELABORAZIONE  SUDDIVISA  IN  3  STADI   Sistemi  a  Regole  di  Produzione   19  
  20. 20. FondamenF  di  Intelligenza  ArFficiale  M   JBOSS  DROOLS  
  21. 21. JBoss  Drools   •  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   Fusion  (event  processing)   Expert  (rule  engine)   Guvnor  (rule  repo)   jBPM  (workflow)   Planner  (constraints)   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   21  
  22. 22. JBoss  Drools   •  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   Fusion  (event  processing)   Expert  (rule  engine)   Guvnor  (rule  repo)   jBPM  (workflow)   Planner  (constraints)   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   22  
  23. 23. 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  
  24. 24. 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  
  25. 25. JBoss  Drools   •  Sintassi  del  linguaggio  Drools:  queries     query  "ID_query"                                    /*  premessa  */      //  pattern  (composito)   end     4  Giugno  2013   Sistemi  a  Regole  di  Produzione   25  
  26. 26. 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  
  27. 27. 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  
  28. 28. JBoss  Drools   •  Sintassi  del  linguaggio  Drools:  oggeH     declare  Person                              /*  dichiarazione  */      name:  String      address:  Address  =  new  Address(...)   end   Person   -­‐  name:  String   -­‐  address:  Address   ...   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   Address   -­‐  street:  String   -­‐  zip:  long   -­‐  city:  String   ...   28  
  29. 29. 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  
  30. 30. 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  
  31. 31. 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  
  32. 32. 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  
  33. 33. FondamenF  di  Intelligenza  ArFficiale  M   PATTERN  MATCHING:     L’ALGORITMO  RETE  
  34. 34. Pa9ern  Matching:  l’algoritmo  RETE   A  REGOLA  DI  ESEMPIO   1 4  Giugno  2013   Sistemi  a  Regole  di  Produzione   34  
  35. 35. Pa9ern  matching:  l’algoritmo  RETE   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   Root  node   Entry  Point  nodes   35  
  36. 36. Pa9ern  matching:  l’algoritmo  RETE   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   Root  node   Entry  Point  nodes   Object  Type  nodes   36  
  37. 37. Pa9ern  matching:  l’algoritmo  RETE   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   Root  node   Entry  Point  nodes   Object  Type  nodes   Alfa  nodes   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   37  
  38. 38. Pa9ern  matching:  l’algoritmo  RETE   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   Root  node   Entry  Point  nodes   Object  Type  nodes   Alfa  nodes   Memory  nodes   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   38  
  39. 39. Pa9ern  matching:  l’algoritmo  RETE   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   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  
  40. 40. Pa9ern  matching:  l’algoritmo  RETE   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   Root  node   Entry  Point  nodes   Object  Type  nodes   Alfa  nodes   Memory  nodes   Terminal  nodes   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   40  
  41. 41. Pa9ern  matching:  l’algoritmo  RETE   Root  node   Entry  Point  nodes   Object  Type  nodes   Alfa  nodes   ALFA  NETWORK   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   Memory  nodes   Terminal  nodes   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   41  
  42. 42. Pa9ern  matching:  l’algoritmo  RETE   Root  node   Entry  Point  nodes   Object  Type  nodes   Alfa  nodes   ALFA  NETWORK   rule  "Trova  gli  Stefano"   when      $p:  Person(  name  ==  "Stefano"  )   then      System.out.println($p);   end   Memory  nodes   Terminal  nodes   4  Giugno  2013   Sistemi  a  Regole  di  Produzione   42  
  43. 43. Pa9ern  matching:  l’algoritmo  RETE   WM p1: Person("Stefano", null) a1: Address("Via Po 2", 40068,

×