Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ex 1
- 1) Etude des règles merepere et ancetre
- a) Que fait la règle merepere ?
- -> La regle va vérifier que 4 premisses sont satisfaites :
- Elle va récupérer un humain ?x et avec 0 ou plus ancetre,
- 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.
- c) Pourquoi faut-il préciser ?y&~nil ?
- -> 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).
- d) Que signifie la prémisse suivante ?
- (or (humain (nom ?x)(pere ?y&~nil)) (humain (nom ?x)(mere ?y&~nil)) )
- -> récupère les candidats qui ont un pere ou une mere
- e) A quoi sert la prémisse contrainte (test (not (member ?y $?l)) ) ?
- -> Elle permet de ne pas prendre en compte les peres/meres deja present dans ancetre
- f) Que fait la règle ancetre ?
- -> 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.
- Ensuite, elle ajoute l'ancetre de l'ancetre de ?a dans la liste des ancetre de ?a.
- g) Que fait la base de règles ?
- -> Pas compris
- ----------------------------------------------------------------
- 2) Première exécution (Saturation de la base de règles)
- a) Mettre en mémoire les bases de faits initiales en tapant (reset).
- b) Visualiser les faits initiaux (facts).
- -> Pas d'ancetres pour chaque humain
- c) Visualiser les règles en attente (agenda).
- -> 16 activations
- d) Lancer l’exécution (run).
- e) Examiner les faits finaux (facts).
- -> Les ancetres ont été ajoutés pour chaque humain
- ----------------------------------------------------------------
- 3) Deuxième exécution (Pas à pas)
- a) Réinitialiser la base de faits à la base de faits initiaux (reset).
- b) Demander la trace des faits ajoutés et supprimés (watch facts) et celle des règles déclenchées (watch rules).
- c) Refaire une exécution en mode pas à pas (run 1) jusqu’au dernier délenchement.
- d) Après chaque déclenchement examiner les règles en attente (agenda) et les faits (facts) .
- 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.
- 8 - nina dans ancetre de Jules
- 9 - nino dans ancetre de Jules
- 7 - jules dans ancetre de Arthur
- 11 - julie dans ancetre de Jules
- f) Au bout de combien de déclenchements la règle ancetre est-elle candidate (présente dans l’agenda) ? Pourquoi ?
- -> 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.
- g) Au bout de combien de déclenchements la règle ancetre se déclenche-t-elle ? Pourquoi ?
- -> Au bout du 5e, car CLIPS met les nouveaux faits candidats en haut de l'agenda
- h) Pourquoi se déclenche-t-elle avant la fin de tous les déclenchements de la règle peremere ?
- -> car CLIPS met les nouveaux faits candidats en haut de l'agenda
- i) Combien y a-t-il de déclenchements des règles ancetre et peremere ? Pourquoi ?
- -> Je ne sais plus
- ----------------------------------------------------------------
- 4) Récriture des règles
- Avant de lancer une exécution avec une autre base de règles, il faut vider la mémoire en tapant (clear).
- a) Récrire la premisse (test (not (member ?y $?l)) de la règle peremere avec une prémisse négative.
- -> (not( humain(nom ?x)(ancetre $? ?y $?) ))
- 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.
- c) Faire une exécution pas à pas avec la trace des faits et des règles de la nouvelle base de règles.
- 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.
- 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 ?
- ----------------------------------------------------------------
- Exercice 2 : Calcul de tous les ancêtres d’un individu de nom entré au clavier
- 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.
- 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.
- 3) Exécuter cette nouvelle base de règles avec pour première recherche Luc et pour deuxième recherche Charlotte.
- 4) Après chaque (reset) quelles sont les règles candidates ? Pourquoi ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement