Advertisement
Guest User

lisp

a guest
Dec 12th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.98 KB | None | 0 0
  1. Ex 1
  2. 1) Etude des règles merepere et ancetre
  3. a) Que fait la règle merepere ?
  4. -> La regle va vérifier que 4 premisses sont satisfaites :
  5. Elle va récupérer un humain ?x et avec 0 ou plus ancetre,
  6. qui a un pere ou une mere deja la BR, et dont le nom du pere ou de la mere n'est pas deja dans le multislot ancetre ; et l'ajouter dans ce multislot.
  7.  
  8. c) Pourquoi faut-il préciser ?y&~nil ?
  9. -> Sinon, on peut récupérer des NIL et les ajouter aux ancetres (ce qui n'a aucun sens puisque rien ne peut pas ertre un ancetre).
  10.  
  11. d) Que signifie la prémisse suivante ?
  12. (or (humain (nom ?x)(pere ?y&~nil)) (humain (nom ?x)(mere ?y&~nil)) )
  13. -> récupère les candidats qui ont un pere ou une mere
  14.  
  15. e) A quoi sert la prémisse contrainte (test (not (member ?y $?l)) ) ?
  16. -> Elle permet de ne pas prendre en compte les peres/meres deja present dans ancetre
  17.  
  18. f) Que fait la règle ancetre ?
  19. -> La regle ancetre va prendre un ancetre d'une personne ?a, regarder dans ses ancetres, et vérifier que le pere/la mere de l'ancetre n'est pas deja dans la liste des ancetres de la personne ?a.
  20. Ensuite, elle ajoute l'ancetre de l'ancetre de ?a dans la liste des ancetre de ?a.
  21.  
  22. g) Que fait la base de règles ?
  23. -> Pas compris
  24.  
  25. ----------------------------------------------------------------
  26. 2) Première exécution (Saturation de la base de règles)
  27. a) Mettre en mémoire les bases de faits initiales en tapant (reset).
  28. b) Visualiser les faits initiaux (facts).
  29. -> Pas d'ancetres pour chaque humain
  30. c) Visualiser les règles en attente (agenda).
  31. -> 16 activations
  32. d) Lancer l’exécution (run).
  33. e) Examiner les faits finaux (facts).
  34. -> Les ancetres ont été ajoutés pour chaque humain
  35.  
  36. ----------------------------------------------------------------
  37. 3) Deuxième exécution (Pas à pas)
  38. a) Réinitialiser la base de faits à la base de faits initiaux (reset).
  39. b) Demander la trace des faits ajoutés et supprimés (watch facts) et celle des règles déclenchées (watch rules).
  40. c) Refaire une exécution en mode pas à pas (run 1) jusqu’au dernier délenchement.
  41. d) Après chaque déclenchement examiner les règles en attente (agenda) et les faits (facts) .
  42. e) Vérifier que chaque déclenchement correspond à la règle qui se trouve au sommet de la pile de l’agenda et préciser les instanciations des variables des 5 premiers déclenchements.
  43. 8 - nina dans ancetre de Jules
  44. 9 - nino dans ancetre de Jules
  45. 7 - jules dans ancetre de Arthur
  46. 11 - julie dans ancetre de Jules
  47.  
  48. f) Au bout de combien de déclenchements la règle ancetre est-elle candidate (présente dans l’agenda) ? Pourquoi ?
  49. -> Au bout de 4 declenchements, car on a ajouté 2 ancetres (les parents d'un humain ?x), on en ajoute 2 autres, et on voit que un des ancetres de ce nouveau humain est ?x, on va donc regarder dans ses ancetres et les recopier.
  50.  
  51. g) Au bout de combien de déclenchements la règle ancetre se déclenche-t-elle ? Pourquoi ?
  52. -> Au bout du 5e, car CLIPS met les nouveaux faits candidats en haut de l'agenda
  53.  
  54. h) Pourquoi se déclenche-t-elle avant la fin de tous les déclenchements de la règle peremere ?
  55. -> car CLIPS met les nouveaux faits candidats en haut de l'agenda
  56.  
  57. i) Combien y a-t-il de déclenchements des règles ancetre et peremere ? Pourquoi ?
  58. -> Je ne sais plus
  59.  
  60. ----------------------------------------------------------------
  61. 4) Récriture des règles
  62. Avant de lancer une exécution avec une autre base de règles, il faut vider la mémoire en tapant (clear).
  63.  
  64. a) Récrire la premisse (test (not (member ?y $?l)) de la règle peremere avec une prémisse négative.
  65. -> (not( humain(nom ?x)(ancetre $? ?y $?) ))
  66.  
  67. b) Remplacer la règle ancetre par deux règles ancetrepere et ancetremere qui expriment respectivement le fait que le père ou la mère d’un ancêtre est un ancêtre.
  68. c) Faire une exécution pas à pas avec la trace des faits et des règles de la nouvelle base de règles.
  69. d) Les deux règles ancetrepere et ancetremere sont identiques à une prémisse près. Ecrire une règle ancetreperemere qui exprime le fait que le père ou la mère d’un ancêtre est un ancêtre. On utilisera une prémisse or comme dans la règle merepere.
  70. e) Relancer une exécution avec la trace des faits et des règles. La récriture des règles change-t-elle le résultat ?
  71.  
  72. ----------------------------------------------------------------
  73.  
  74. Exercice 2 : Calcul de tous les ancêtres d’un individu de nom entré au clavier
  75.  
  76.  
  77. 1) Ecrire une règle lectureNom sans prémisse qui demande le nom ?nom de la personne qui fait l’objet de la recheche de ses ancêtres et qui ajoute un fait (recherche ?nom) à la base de faits.
  78.  
  79. 2) Modifier la base de règles précédente de manière à ce qu’elle ne calcule que les ancêtres de l’humain dont le nom a été entré au clavier.
  80.  
  81. 3) Exécuter cette nouvelle base de règles avec pour première recherche Luc et pour deuxième recherche Charlotte.
  82.  
  83. 4) Après chaque (reset) quelles sont les règles candidates ? Pourquoi ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement