CLIPS CLIPS
Module Intelligence artificielle
Module Intelligence artificielle
Principes Principes
• Langage de description de S.E.
• Faits et règles typés
• Assertion et délétion
• Chaînage avant
• Hiérarchie des règle « salience »
• Règles actives à un instant : agenda
• Réfraction
• www.
Principe Principe
Agenda Base de règles
règles Type de faits
appariement
Règles « activables »
Faits
activation réfraction
production
cycle
Mots clés CLIPS Mots clés CLIPS
Agenda Base de règles
règles Type de faits
assert/modify
duplicate/retract/deffacts/reset
appariement
defrule
run<n>
Règles « activables »
Faits
deftemplate
activation réfraction
refresh
production
Types faits et règles Types faits et règles
exemple 1 exemple 1
(deftemplate objet (slot nom)
(slot position) (slot couleur)) (deftemplate posseder
(slot objet))
(deftemplate liste-nombres (multislot values))
(defrule prendre (objet (nom ?unNom))
=>
(assert(posseder (objet ?unNom))
Types faits et règles Types faits et règles
exemple 1 exemple 1
; faits initiaux en ligne : assert (assert(objet (nom cafetiere)
(position 5-7) (couleur bleue)))
; faits initiaux en vrac : deffacts
; ils seront insérés suite à l'instruction (reset) (deffacts scene1 "Exemple de scene"
(objet (nom theiere) (position 4-4) (couleur verte)) (objet (nom chaise)
(position 1-1) (couleur jaune)) (objet (nom pomme)
(position 4-8)
(couleur rouge)))
Execution Execution
(load <file-name>)
(reset) assertion des deffacts
(run <n>) lance n cycles
(agenda) visualise l’agenda
les faits et règles sont numérotés
(assert <fact>)
(retract <nb-fact>)
(refresh <rule>) ré-injection
(undef <rule>)
Exemple d’exécution Exemple d’exécution
exemple 1 exemple 1
{deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V6.21 06/15/03)
CLIPS> (load "coursExample1.CLP") Defining deftemplate: objet
Defining deftemplate: posseder Defining deftemplate: liste-nombres Defining defrule: prendre +j Defining deffacts: scene1 TRUE
CLIPS> (assert (objet (nom cafetiere) (position 1-2) (couleur bleue)))
<Fact-0>
CLIPS> (facts)
f-0 (objet (nom cafetiere) (position 1-2) (couleur bleue)) For a total of 1 fact.
CLIPS> (agenda) 0 prendre: f-0 For a total of 1 activation.
CLIPS> (run) CLIPS> (facts)
f-0 (objet (nom cafetiere) (position 1-2) (couleur bleue)) f-1 (posseder (objet cafetiere))
For a total of 2 facts.
CLIPS> (agenda) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact)
f-1 (objet (nom theiere) (position 4-4) (couleur verte)) f-2 (objet (nom chaise) (position 1-1) (couleur jaune)) f-3 (objet (nom pomme) (position 4-8) (couleur rouge)) For a total of 4 facts.
CLIPS> (agenda) 0 prendre: f-3 0 prendre: f-2 0 prendre: f-1
For a total of 3 activations.
CLIPS> (run)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (objet (nom theiere) (position 4-4) (couleur verte))
f-2 (objet (nom chaise) (position 1-1) (couleur jaune))
f-3 (objet (nom pomme) (position 4-8) (couleur rouge))
For a total of 4 facts.
CLIPS> (agenda) 0 prendre: f-3 0 prendre: f-2 0 prendre: f-1
For a total of 3 activations.
CLIPS> (run) CLIPS> (facts)
f-0 (initial-fact)
f-1 (objet (nom theiere) (position 4-4) (couleur verte))
f-2 (objet (nom chaise) (position 1-1) (couleur jaune))
f-3 (objet (nom pomme) (position 4-8) (couleur rouge))
f-4 (posseder (objet pomme)) f-5 (posseder (objet chaise)) f-6 (posseder (objet theiere)) For a total of 7 facts.
CLIPS> (agenda) CLIPS>
Debug Debug
• Enumération (des constructeurs)
(list-defrules)
(list-deftemplate) (liste-deffacts)
• Inspection
(ppdefrule <defrule-name>)
(ppdeftemplate<deftemplate-name>)
(ppdeffacts <deffacts-name>)
Debug Debug
Visualisation durant l’exécution (watch)
(watch all)
(watch rules)
(watch statistics)
(unwatch)
• Variables en tête de règle
– Première rencontre = affectation
Appariement
Appariement
Appariement Appariement
• Adressage des faits
Exemple 2 Exemple 2
(deftemplate vehicule (slot nom)
(slot position) (slot vitesse))
(defrule sortirParking
?f1 <- (vehicule (position parking))
=>
(modify ?f1 (position route) (vitesse 40km/heures)))
{deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V6.21 06/15/03)
CLIPS> (load "coursExemple2.CLP") Defining deftemplate: vehicule Defining defrule: sortirParking +j TRUE
CLIPS> (assert (vehicule (nom trotinette) (position parking) (vitesse 0)))
<Fact-0>
CLIPS> (assert (vehicule (nom kart) (position route) (vitesse 12km/h)))
<Fact-1>
CLIPS> (facts)
f-0 (vehicule (nom trotinette) (position parking) (vitesse 0)) f-1 (vehicule (nom kart) (position route) (vitesse 12km/h)) For a total of 2 facts.
CLIPS> (agenda) 0 sortirParking: f-0 For a total of 1 activation.
CLIPS> (run) CLIPS> (facts)
f-1 (vehicule (nom kart) (position route) (vitesse 12km/h)) f-2 (vehicule (nom trotinette) (position route) (vitesse
40km/heures)) For a total of 2 facts.
CLIPS> (agenda) CLIPS>
Exemple 3 Exemple 3
• Une variable référencée dans 2 faits en tête de règle
• Une assertion/retraction -> activation d’autres règles.
• Plusieurs règles activées au même
moment
• {deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips
• CLIPS (V6.21 06/15/03)
• CLIPS> (load "coursExemple2.CLP")
• Defining deftemplate: vehicule
• Defining deftemplate: surRoute
• Defining defrule: sortirParking +j
• TRUE
• CLIPS> (assert (vehicule (nom trotinette) (position parking) (vitesse 0)))
• <Fact-0>
• CLIPS> (assert (vehicule (nom kart) (position route) (vitesse 12km/h)))
• <Fact-1>
• CLIPS> (facts)
• f-0 (vehicule (nom trotinette) (position parking) (vitesse 0))
• f-1 (vehicule (nom kart) (position route) (vitesse 12km/h))
• For a total of 2 facts.
• CLIPS> (agenda)
• 0 sortirParking: f-0
• For a total of 1 activation.
• CLIPS> (run)
• CLIPS> (facts)
• f-1 (vehicule (nom kart) (position route) (vitesse 12km/h))
• f-2 (vehicule (nom trotinette) (position route) (vitesse 40km/heures))
• For a total of 2 facts.
• CLIPS> (agenda)
• CLIPS>