CLIPS Module Intelligence artificielle Principes Langage de description

  • Slides: 20
Download presentation
CLIPS Module Intelligence artificielle

CLIPS Module Intelligence artificielle

Principes • • Langage de description de S. E. Faits et règles typés Assertion

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 Base de règles Type de faits règles réfraction Agenda activation Règles « activables

Principe Base de règles Type de faits règles réfraction Agenda activation Règles « activables » Faits cycle production appariement

Mots clés CLIPS Base de règles defrule deftemplate règles refresh Agenda réfraction Type de

Mots clés CLIPS Base de règles defrule deftemplate règles refresh Agenda réfraction Type de faits assert/modify duplicate/retract/deffacts/reset activation Règles « activables » Faits run<n> production appariement

Types faits et règles exemple 1 (deftemplate objet (slot nom) (slot position) (slot couleur))

Types faits et règles exemple 1 (deftemplate objet (slot nom) (slot position) (slot couleur)) (deftemplate posseder (slot objet)) (deftemplate liste-nombres (multislot values)) (defrule prendre (objet (nom ? un. Nom)) => (assert(posseder (objet ? un. Nom))

Types faits et règles exemple 1 ; faits initiaux en ligne : assert (assert(objet

Types faits et règles 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 scene 1 "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 (load <file-name>) (reset) (run <n>) (agenda) assertion des deffacts lance n cycles visualise

Execution (load <file-name>) (reset) (run <n>) (agenda) assertion des deffacts lance n cycles visualise l’agenda les faits et règles sont numérotés (assert <fact>) (retract <nb-fact>) (refresh <rule>) (undef <rule>) ré-injection

Exemple d’exécution exemple 1 {deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V 6. 21 06/15/03) CLIPS> (load "cours.

Exemple d’exécution exemple 1 {deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V 6. 21 06/15/03) CLIPS> (load "cours. Example 1. CLP") Defining deftemplate: objet Defining deftemplate: posseder Defining deftemplate: liste-nombres Defining defrule: prendre +j Defining deffacts: scene 1 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)) 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 • Enumération (des constructeurs) (list-defrules) (list-deftemplate) (liste-deffacts) • Inspection (ppdefrule <defrule-name>) (ppdeftemplate<deftemplate-name>) (ppdeffacts

Debug • Enumération (des constructeurs) (list-defrules) (list-deftemplate) (liste-deffacts) • Inspection (ppdefrule <defrule-name>) (ppdeftemplate<deftemplate-name>) (ppdeffacts <deffacts-name>)

Debug Visualisation durant l’exécution (watch) (watch all) (watch rules) (watch statistics) (unwatch)

Debug Visualisation durant l’exécution (watch) (watch all) (watch rules) (watch statistics) (unwatch)

Appariement • Variables en tête de règle – Première rencontre = affectation

Appariement • Variables en tête de règle – Première rencontre = affectation

Appariement • Adressage des faits

Appariement • Adressage des faits

Exemple 2 (deftemplate vehicule (slot nom) (slot position) (slot vitesse)) (defrule sortir. Parking ?

Exemple 2 (deftemplate vehicule (slot nom) (slot position) (slot vitesse)) (defrule sortir. Parking ? f 1 <- (vehicule (position parking)) => (modify ? f 1 (position route) (vitesse 40 km/heures))) {deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V 6. 21 06/15/03) CLIPS> (load "cours. Exemple 2. CLP") Defining deftemplate: vehicule Defining defrule: sortir. Parking +j TRUE CLIPS> (assert (vehicule (nom trotinette) (position parking) (vitesse 0))) <Fact-0> CLIPS> (assert (vehicule (nom kart) (position route) (vitesse 12 km/h))) <Fact-1> CLIPS> (facts) f-0 (vehicule (nom trotinette) (position parking) (vitesse 0)) f-1 (vehicule (nom kart) (position route) (vitesse 12 km/h)) For a total of 2 facts. CLIPS> (agenda) 0 sortir. Parking: f-0 For a total of 1 activation. CLIPS> (run) CLIPS> (facts) f-1 (vehicule (nom kart) (position route) (vitesse 12 km/h)) f-2 (vehicule (nom trotinette) (position route) (vitesse 40 km/heures)) For a total of 2 facts. CLIPS> (agenda) CLIPS>

Exemple 3 • Une variable référencée dans 2 faits en tête de règle •

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 (V 6. 21

• • • • • • • {deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V 6. 21 06/15/03) CLIPS> (load "cours. Exemple 2. CLP") Defining deftemplate: vehicule Defining deftemplate: sur. Route Defining defrule: sortir. Parking +j TRUE CLIPS> (assert (vehicule (nom trotinette) (position parking) (vitesse 0))) <Fact-0> CLIPS> (assert (vehicule (nom kart) (position route) (vitesse 12 km/h))) <Fact-1> CLIPS> (facts) f-0 (vehicule (nom trotinette) (position parking) (vitesse 0)) f-1 (vehicule (nom kart) (position route) (vitesse 12 km/h)) For a total of 2 facts. CLIPS> (agenda) 0 sortir. Parking: f-0 For a total of 1 activation. CLIPS> (run) CLIPS> (facts) f-1 (vehicule (nom kart) (position route) (vitesse 12 km/h)) f-2 (vehicule (nom trotinette) (position route) (vitesse 40 km/heures)) For a total of 2 facts. CLIPS> (agenda) CLIPS>

Suppression de constructeurs • • (undefrule <nom_de _regle>) (undeftemplate <nom_de_template>) (undeffacts <nom_de_liste_de_faits>) On ne

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é

Debug • (set-break <nom_de_regle>) • (show-break) • (remove break <nom_de_regle>)

Debug • (set-break <nom_de_regle>) • (show-break) • (remove break <nom_de_regle>)

Execution • Une règle activée est mise dans l’agenda • Lorsqu’elle est exécutée elle

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

Types faits et règles (deftemplate(objet (slot usage) (slot position) (slot couleur)) (deftemplate(posseder (multislot liste.

Types faits et règles (deftemplate(objet (slot usage) (slot position) (slot couleur)) (deftemplate(posseder (multislot liste. Objets))