Introducing PRSs and Drools (in Italian)

891 views
820 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
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
891
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
26
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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,

×