• Aucun résultat trouvé

CLIPS CLIPS

N/A
N/A
Protected

Academic year: 2022

Partager "CLIPS CLIPS"

Copied!
20
0
0

Texte intégral

(1)

CLIPS CLIPS

Module Intelligence artificielle

Module Intelligence artificielle

(2)

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.

(3)
(4)

Principe Principe

Agenda Base de règles

règles Type de faits

appariement

Règles « activables »

Faits

activation réfraction

production

cycle

(5)

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

(6)

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))

(7)

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)))

(8)

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>)

(9)

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>

(10)

Debug Debug

• Enumération (des constructeurs)

(list-defrules)

(list-deftemplate) (liste-deffacts)

• Inspection

(ppdefrule <defrule-name>)

(ppdeftemplate<deftemplate-name>)

(ppdeffacts <deffacts-name>)

(11)

Debug Debug

Visualisation durant l’exécution (watch)

(watch all)

(watch rules)

(watch statistics)

(unwatch)

(12)

• Variables en tête de règle

– Première rencontre = affectation

Appariement

Appariement

(13)

Appariement Appariement

• Adressage des faits

(14)

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>

(15)

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

(16)

• {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>

(17)

Suppression de constructeurs Suppression de constructeurs

• (undefrule <nom_de _regle>)

• (undeftemplate <nom_de_template>)

• (undeffacts <nom_de_liste_de_faits>)

• On ne peut supprimer un élément utilisé

par un autre qui n’est pas supprimé

(18)

Debug Debug

• (set-break <nom_de_regle>)

• (show-break)

• (remove break <nom_de_regle>)

(19)

Execution Execution

• Une règle activée est mise dans l’agenda

• Lorsqu’elle est exécutée elle est retirée de l’agenda : « refraction »

• Au prochain pas, elle ne sera pas réactivée

• Sauf si c’est par de nouveaux faits

• Une régle peut être mise en plusieurs

exemplaires dans l’agenda si elle est activée par plusieurs faits

• La fonction (refresh <règle>) remet la règle dans

l’agenda comme si elle n’avait pas été activée

(20)

Types faits et règles Types faits et règles

(deftemplate(objet (slot usage)

(slot position) (slot couleur)) (deftemplate(posseder

(multislot listeObjets))

Références

Documents relatifs

Comprise dans son sens littéral, toute disposition d'une loi doit être conséquente avec les autres dispositions de la loi l05 de même qu'avec l'ensemble de la législation in

Toute utilisation commerciale ou impression systématique est constitutive d’une infraction pénale. Toute copie ou impression de ce fichier doit contenir la présente men- tion

Afin d’éviter que les panneaux bougent, nos clips anti- soulèvement maintiennent le panneau en place tout en. préservant l’acoustique

Afin d’éviter d’exposer la pièce à la poussière du plénum et à diverses salissures, nos clips anti-soulèvement génèrent une résistance sur la face arrière du panneau

Les nouvelles mesures légales ou règlementaires (i) devraient autant que possible être testées et comparées à des solutions alternatives avant d’être adoptées, (ii) les

Si les décisions de la Banque centrale sont en partie fondées sur les évolutions du change, comme celles-ci sont elles-mêmes déterminées par l’orien- tation courante et à venir de

Cette valeur de retour peut être soit récupérée dans une variable avec la commande bind , soit directement utilisée pour insertion dans un fait. Exemple

En cas de polypectomie, à titre de pré- vention de l’hémorragie ou pour l’hémostase post résection, les mé- thodes mécaniques comme la pose de clips ou la mise en place