Anda di halaman 1dari 23

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Sistemas Expertos - CLIPS


Vernica E. Arriola-Rios
Inteligencia Artificial

8 de septiembre de 2015

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Temas
1

Conocimiento Procedimental
Definicin
CLIPS

Sintaxis

Estructuras de datos

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Conocimiento Procedimental

Una representacin procedimental, es aquella en la que la


informacin de control necesaria para utilizar el conocimiento se
encuentra embebida en el propio conocimiento.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Componentes de CLIPS

Lista de hechos.

Base de conocimento: reglas.

Mquina de inferencias: controla la ejecucin.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Hechos

Los hechos estn in tegrados por:


El nombre de la relacin
seguido de zero o ms campos con nombre o rendijas y sus
valores asociados (sin importar el orden).
( person ( name John Q . Public )
( age 23)
( eye - color blue )
( hair - color black ))

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Representacin de los hechos


Es posible definir plantillas para los hechos aadibles a la
memoria.
(deftemplate <relation-name> [<optional-comment>]
<slot-definition>*)
Por ejemplo:
(deftemplate person An example deftemplate
(multislot name) (slot age) (slot eye-color)
(slot hair-color))
Los hechos pueden ser aadidos (assert) o removidos
(retract) de la memoria. modify es una abreviatura que
remueve y luego aade un hecho, pero con el valor de una
rendija modificada.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Reglas

Si todos los patrones solicitados por la regla cazan con hechos


en la memoria, la regla se activa y es agregada a una agenda,
la coleccin de reglas activadas.
(defrule <rule-name> [<comment>]
<patterns>* ; Left-Hand Side
=>
<actions>*) ; Right-Hand Side
El RHS contiene la lista de acciones a ejecutar cuando la regla
sea disparada.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Mundo de bloques

A
B
C

Vernica E. Arriola-Rios

D
E
F

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Mundo de bloques: estado inicial


( deftemplate on - top - of
( slot upper )
( slot lower ))
( deffacts initial - state
( block A ) ( block B )
( block C ) ( block D )
( block E ) ( block F )
( on - top - of ( upper nothing ) ( lower A ))
( on - top - of ( upper A ) ( lower B ))
( on - top - of ( upper B ) ( lower C ))
( on - top - of ( upper C ) ( lower floor ))
( on - top - of ( upper nothing ) ( lower D ))
( on - top - of ( upper D ) ( lower E ))
( on - top - of ( upper E ) ( lower F ))
( on - top - of ( upper F ) ( lower floor ))
( goal ( move C ) ( on - top - of E ))
)
Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Regla: move-directly
( defrule move - directly
? goal <- ( goal ( move ? block1 ) ( on - top - of ? block2 ))
( block ? block1 )
( block ? block2 )
( on - top - of ( upper nothing ) ( lower ? block1 ))
? stack -1 <- ( on - top - of ( upper ? block1 )
( lower ? block3 ))
? stack -2 <- ( on - top - of ( upper nothing )
( lower ? block2 ))
=>
( retract ? goal ? stack1 ? stack2 )
( assert ( on - top - of ( upper ? block1 )
( lower ? block2 ))
( on - top - of ( upper nothing )
( lower ? block3 )))
( printout t ? block1 " moved on top of " ? block2 )
)

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Regla: move-to-floor

( defrule move - to - floor


? goal <- ( goal ( move ? block1 ) ( on - top - of floor ))
( block ? block1 )
( on - top - of ( upper nothing ) ( lower ? block1 ))
? stack <- ( on - top - of ( upper ? block1 )
( lower ? block2 ))
=>
( retract ? goal ? stack )
( assert ( on - top - of ( upper ? block1 )
( lower floor ))
( on - top - of ( upper nothing )
( lower ? block2 )))
( printout t ? block1 " moved on top of floor ")
)

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Regla: clear-upper-block

( defrule clear - upper - block


( goal ( move ? block1 ))
( block ? block1 )
( on - top - of ( upper ? block2 ) ( lower ? block1 ))
( block ? block2 )
=>
( assert ( goal ( move ? block2 ) ( on - top - of floor )))
)

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Regla: clear-lower-block

( defrule clear - lower - block


( goal ( on - top - of ? block1 ))
( block ? block1 )
( on - top - of ( upper ? block2 ) ( lower ? block1 ))
( block ? block2 )
=>
( assert ( goal ( move ? block2 ) ( on - top - of floor )))
)

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Ejecucin

CLIPS > ( run )


A moved on top
B moved on top
D moved on top
C moved on top

of
of
of
of

floor .
floor .
floor .
E.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Aplicacin de las reglas

En general, las reglas de una mquina de inferencias pueden


ser aplicadas:
Hacia adelante: de hechos a objetivos.
Hacia atrs: desde los objetivos.

CLIPS utiliza nicamente encadenamiento hacia adelante.


Cuando las precondiciones de una regla se satisfacen, la regla
dispara.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Temas
1

Conocimiento Procedimental
Definicin
CLIPS

Sintaxis

Estructuras de datos

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Sintaxis

CLIPS es sensitivo al uso de maysculas y minsculas.


Las llamadas a funciones van entre parntesis.
Ej:
CLIPS > (+ 3 4) \ entersymbol
7
CLIPS > ( exit ) \ entersymbol

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Comandos

CLIPS cuenta con varios comandos para seguir la evolucin de las


inferencias:
(facts) Lista los hechos en la base de conocimientos.
(watch <watch-item>) Donde los artculos a observar pueden
ser facts, rules, activations, statistics, compilations,
focus y all.
(run [<limit>]) Ejecuta el programa disparando las reglas en la
agenda. Es posible fijar el nmero mximo de reglas
a disparar.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Campos
CLIPS tiene siete tipos primitivos:
float
integer
symbol
string
external address
instance name
instance address
Los ltimos tres se utilizan cuando el usuario define funciones en C
para extender el sistema.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Refraccin
Despus de que una neurona transmite sus impulsos (dispara),
ningn tipo de estmulo provocar que dispare de nuevo
durante un tiempo.
En los sistemas expertos se define una regla anloga para
evitar caer en ciclos trivialmente.
CLIPS recuerda los identificadores de los hechos que
dispararon un regla y no volver a activarla con la misma
combinacin de identificadores.
Para que una regla vuelva a ser disparada con los mismos
hechos, se puede utilizar el comando (refresh
<rule-name>), que volver a colocar las activaciones en la
agenda.

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Temas
1

Conocimiento Procedimental
Definicin
CLIPS

Sintaxis

Estructuras de datos

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Pilas

( defrule push - value


? push - value <- ( push - value ? name ? value )
? stack <- ( stack ? name ? rest )
=>
( retract ? push - value ? stack )
( assert ( stack ? value $ ? rest ))
( printout t " Pushing value " ? value crlf ))

Vernica E. Arriola-Rios

CLIPS

Conocimiento Procedimental

Sintaxis

Estructuras de datos

Pilas (pop)

( defrule pop - value - valid


? pop - value <- ( pop - value ? name )
? stack <- ( stack ? name ? value $ ? rest )
=>
( retract ? pop - value ? name ? stack )
( assert ( stack ? name ? rest ))
( printout t " Popping value " ? value crlf ))
( defrule pop - value - invalid
? pop - value <- ( pop - value ? name )
( stack ? name )
=>
( retract ? pop - value ? name )
( printout t " Popping from empty stack " ? name crlf ))

Vernica E. Arriola-Rios

CLIPS

Anda mungkin juga menyukai