Vous êtes sur la page 1sur 2

Licence MIASHS 2016-2017

Introduction à l’Intelligence Artificielle – aide-mémoire CLIPS

Dans cette annexe, les paramètres sont indiqués entre les symboles < et >. Par exemple, l’indication
(load <nom du programme>) peut s’implémenter comme (load monfichier.clp).
LHS et RHS correspondent respectivement à la partie gauche des règles et sa partie droite.

CLIPS (http ://clipsrules.sourceforge.net)

Les commandes de base de CLIPS :


— Pour tout effacer en mémoire (faits et règles) : (clear)
— Pour charger un programme : utiliser la commande Load du menu ou l’instruction (load
<nom du programme>) en ligne de commande.
— Pour initialiser la base de faits : (reset).
— Pour exécuter un programme grâce à l’algorithme RETE : (run).
— Pour sortir de CLIPS : (exit).
— Les commentaires en CLIPS sont identifiés par le caractère ; en début de ligne. Par
exemple :
; ceci est un commentaire non pris en compte

Les faits en CLIPS :

— Pour insérer un fait dans une base de faits :


(assert (duck)) : insère le fait duck dans la base de faits courante.
(assert (duck2 par1 par2)) : insère le fait duck2 dans la base de faits courante, associé
aux paramètres par1 et par2.
(assert (a) (b) (c 0 1)) : insère plusieurs faits simultanément (3 dans cet exemple,
le dernier étant paramétré).
Remarque : Si le fait inséré existe déjà dans la base de faits, alors le système retourne
“false”.
— Pour enlever un fait de la base de faits :
(retract 1) : enlève le fait d’indice 1 de la base de faits.
— Pour lister les faits de la base de faits courante : (facts)
(facts 4) : affiche tous les faits depuis celui d’indice 4.
A savoir qu’il est conseillé d’ouvrir une fenêtre affichant la liste des faits grâce à l’interface
graphique.
— Pour nettoyer la base de faits : (clear).
— Pour afficher au fur et à mesure les ajouts et les retraits de la base de faits (mode trace) :
(watch facts) et (unwatch facts).
==> : symbolise l’ajout d’un fait de la base de faits.
<== : symbolise le retrait d’un fait de la base de fait.
— Pour préparer un paquet de faits initiaux, qui seront instanciés grâce à la commande reset :
(deffacts nom de la base de faits fait1 fait2 ...)
— Pour préparer un paquet de faits initiaux, qui seront instanciés après exécution du run :
(defrule initialisation "j initialise mes faits"
(initial-fact)
=>
(assert fait1 fait2 ...))

Chargé de cours : Julien Velcin. 1


Les variables en CLIPS :

— Une variable s’écrit en CLIPS : ?<nom de la variable>


(duck ?x)
Remarque : La variable ? correspond à une variable anonyme.
(duck ?)
— Pour affecter un fait, nommé (fait1), à une variable x dans la LHS :
?x <- (fait1)
En réalité, on affecte l’index du fait dans la base de faits (nécessaire pour, ensuite, le
supprimer).
— Pour affecter une valeur, nommée val, à une variable x dans la RHS :
(bind ?x val)

Les règles en CLIPS :


— Une règle en CLIPS est définie de la manière suivante :
(defrule nom de la regle "commentaires"
; LHS
(pattern1)
(pattern2)
...
=>
; RHS
(action1)
(action2)
. . .)
— Pour afficher la définition d’une règle : (ppdefrule nom de la regle)
— Pour avoir le nom de toutes les règles : (rules)
— Pour voir les appels de règles : (watch rules)

Les règles en CLIPS (suite) :


— Quelques exemples de patterns de conditions :
Existence d’un fait : (nom du prédicat param 1 param 2 ...)
Test sur les variables : (test (or...))
(test (and...))
(test (eq...)) ; pour les cha^ ınes de caractères
(test (=...)) ; pour les nombres
Il en y a d’autres. . .
Négation d’une condition : (not condition)
— Quelques exemples d’actions : (watch rules)
Ajout d’un fait : (assert (nom du prédicat param 1 param 2...))
Retrait d’un fait : (retract ind f1 ind f2)
Affichage : (printout t cha^ ıne de caractères crlf)

Chargé de cours : Julien Velcin. 2