Está en la página 1de 34

1

CLIPS v6.1 Resumen


Raquel Fuentetaja Piz an raquel.fuentetaja@uc3m.es Susana Fern andez Arregui susana.fernandez@uc3m.es

Universidad Carlos III de Madrid Departamento de Inform atica http://galahad.plg.inf.uc3m.es/docweb/

CLIPS v6.1 Resumen


1. 2. 3. 4. 5. Introducci on Hechos Reglas Funciones Marcos

Introducci on

Clips

CLIPS: C Language Integrated Production System Programado en C Comunicaci on con otros lenguajes: C y Ada Similitudes con LISP y C Desarrollado por Software Technology Branch (STB) NASA desde 1986 Combina elementos de los paradigmas de lenguajes declarativos, funcionales y orientados a objetos

Introducci on

Int erprete de comandos

$ clips $ clips -f nombrechero, nombrechero chero con comandos CLIPS Recomendaci on: Utilizar emacs o xemacs, hacer dos buers en uno tener el chero .clp y en el otro abrir un shell con clips Cuando aparece el prompt CLIP S > introducir comandos para evaluar Distingue entre may usculas y min usculas Clips tiene muchos comandos implementados: (load nombrechero), (reset), (run), (clear) . . .

Introducci on

Expresiones
La sintaxis de las expresiones es preja Una expresi on es una serie de campos delimitados por par entesis Ejemplo: (+ 1 (* 2 3)) En modo interactivo CLIPS eval ua las expresiones: CLIP S > (+ 1 2 (* 3 4 )) 15 CLIP S > Algunas funciones y operadores matem aticos disponibles: + - / * mod div sqrt round integer

Introducci on

Tipos de datos
NUMBER - INTEGER - FLOAT STRING. Ejemplo: Esto es un string - Para incluir comillas en una cadena hay que usar \ - Para incluir \ en una cadena hay que usar \\ SYMBOL. Ejemplo: luis, luis-gil, EXTERNAL-ADDRESS FACT-ADDRESS INSTANCE-NAME INSTANCE-ADDRESS

CLIPS v6.1 Resumen


1. 2. 3. 4. 5. Introducci on Hechos Reglas Funciones Marcos

Hechos

Facts
Elementos b asicos de conocimiento Pueden tener un campo o varios. El primer campo suele representar una relaci on entre los restantes: (hola) (alumnos Juan Pedro Luis) (edad 14) (color silla verde) Campos sin valor: nil. Ej. (color silla nil) Ordenados y no ordenados (plantillas o templates) A cada hecho CLIPS asigna autom aticamente un identicador u nico (fact-index). Por ejemplo f-10

Hechos

Comandos sobre hechos


(facts) : Para ver el contenido de la base de hechos (fact-list) (assert hecho) : Para a nadir hechos a la base de hechos (retract indice-hecho) : Para eliminar hechos de la base de hechos (reset) : Elimina todos los hechos de la memoria de trabajo, elimina las activaciones de la agenda y restaura las condiciones iniciales: - A nade initial-fact e initial-object - A nade los hechos y ejemplares iniciales, denidos con deacts y denstances - A nade las variables globales con su valor inicial (clear) : Elimina todos los hechos y construcciones de la memoria de trabajo

Hechos

10

Hechos iniciales
deacts: Para denir los hechos iniciales Los hechos iniciales se a naden a la base al hacer (reset)
- CLIP S > (deacts padres padres iniciales (padre-de Luis Antonio) (padre-de Luis Maria) (padre-de Antonio Juan)) - CLIP S > (reset) - CLIP S > (facts) f-0 (initial-fact) f-1 (padre-de Luis Antonio) f-2 (padre-de Luis Maria) f-3 (padre-de Antonio Juan)

Hechos

11

Plantillas o templates
Permiten asignar un nombre a cada campo. El orden de los slots no tiene importancia Se declaran con deftemplate (deftemplate <nombre-plantilla> [<comentario>] <descripcion-de-slot1> ... <descripcion-de-slotN>) Los slots se denen por un nombre y sus atributos (facetas). Por defecto CLIPS les asigna un valor.
(deftemplate robot (slot bandeja (type SYMBOL) (allowed-values LLENA VACIA) (default VACIA)) )

Pueden almacenar un u nico valor slot o varios multislot

Hechos

12

Atributos o facetas
Los atributos de un slot pueden ser de dos tipos - De restricci on type tipo : determina el tipo de datos del slot allowed-values valores: limita al conjunto de valores los que se pueden asignar range rango : limita los valores posibles al rango indicado - De valor default valor: valor por omisi on al slot Se puede forzar al usuario a que indique un valor (?NONE) Se puede indicar que sea CLIPS quien determine el valor por omisi on de un slot en funci on de las restricciones aplicadas siguiendo una serie de reglas con el atributo ?DERIVE Adem as de assert y retract se pueden modicar con modify (modify direccion-hecho (nombre-atributo nuevo-valor)* )

Hechos

13

Ejemplo
(deftemplate chado (slot nombre (type STRING) (default ?NONE)) (slot edad (type INTEGER) (range 1 100) (default ?NONE)) (slot condicion (type SYMBOL) (allowed-values inocente sospechoso imputado condenado antecedentes) (default inocente)) (slot clase (type SYMBOL) (allowed-values media baja alta) (default ?DERIVE)) )

Hechos

14

Ejemplo
Insertar hechos diferentes de tipo chado:
(assert (chado (assert (chado (assert (chado (assert (chado FALSE (nombre (nombre (nombre (nombre Carlos) (edad 28) (condicion sospechoso))) Pepe) (edad 18) (clase alta))) Juan))) Juan)))

CLIPS>(facts)
f-0 (initial-fact) f-1 (chado (nombre Carlos) (edad 28) (condicion sospechoso) (clase media)) f-2 (chado (nombre Pepe) (edad 18) (condicion inocente) (clase alta)) f-3 (chado (nombre Juan) (edad 1) (condicion inocente) (clase media)) For a total of 4 facts

CLIPS>(assert (chado))
[TMPLTRHS1] Slot nombre requires a value because of its (default ?NONE) attribute.

15

CLIPS v6.1 Resumen


1. 2. 3. 4. 5. Introducci on Hechos Reglas Funciones Marcos

Reglas

16

Sintaxis
(defrule <nombre-regla> [<documentacion-opcional>] [(declare (salience <numero>))] <premisa-o-elemento-de-condicion>* <accion>* Ejemplo: (defrule ascendencia detecta los antepasados obvios (padre-de Luis Pedro) (assert (antepasado-de Luis Pedro))) Si no hay elementos de condici on se usa initial-fact: (defrule regla-inicial (assert (antepasado-de Luis Pedro)))

Reglas

17

Variables
El uso de variables ?<nombre-variable>, ?$<nombre-variable> hace las reglas m as generales (defrule ascendencia detecta los antepasados obvios (declare (salience 2)) (padre-de ?x ?y) (assert (antepasado-de ?x ?y)) ) (defrule genera-escenas (declare (salience 20)) (lista $?l) (assert (un-hecho-de-la-lista (nth$ 1 $?l))) )

Reglas

18

Elementos de condici on (LHS)


Patrones: Consulta a la fact-list preguntando por la existencia de hechos determinados
(dato 1 azul rojo) (persona (nombre ?N) (amigos $?A) (edad 30))

Direcciones de hechos: Almacenar direcciones de hechos en variables


?P(persona (nombre ?N) (amigos $?A) (edad 30))

Test: Comprobar el cumplimiento de alguna condici on


(test (>= (abs (- ?y ?x)) 3))

Not: Preguntar por la NO existencia de determinados hechos en la fact-list


(not (dato rojo ?x ?x))

Reglas

19

Acciones o efectos (RHS)


assert: Para incorporar un hecho en la fact-list
(assert dato 1 azul rojo))

retract: Para eliminar un hecho de la fact-list


(defrule eliminar-estado-valvula ?f1 (estado (valvula ?X)) (retract ?f1) )

modify: Para modicar un hecho de la fact-list. Equivalente a hacer un retract y un assert. S olo para plantillas
(defrule cambiar-estado-valvula ?f1 (estado (valvula abierta)) (modify ?f1 (valvula cerrada)))

Reglas

20

Acciones

Parada: Para parar la ejecuci on del sistema: (halt) bind: Asignaci on de valor a variables (bind ?X (* ?Y 2)) Funciones de entrada/salida: open, close, printout, read, readline Otras funciones

Reglas

21

Comandos para reglas

Al denir reglas ya existentes, la primera regla se borra (list-defrules): Para ver las reglas denidas (ppdefrule <nombre-de-regla>): Para ver la denici on de una regla (undefrule <nombre-de-regla>): Para eliminar una regla (undefrule *): Para eliminar todas las reglas

Reglas

22

Ejecuci on de reglas

Las activaciones de reglas se mantienen en la agenda La colocaci on de una regla en la agenda se realiza seg un su prioridad y la estrategia de resoluci on de conictos denida (agenda): Para ver el contenido de la agenda (run): Para ejecutar las reglas seguidas (run <veces>): Para ejecutar <veces> reglas (matches <nombre-regla>): Para ver que hechos se equiparan con los patrones de una regla

Reglas

23

Depuraci on de programas
(watch <item>) : Observaci on de la evoluci on de los componentes del sistema all compilations statistic messages deunctions rules facts activations (unwatch <item>): Para desactivar el modo de observaci on (dribble-on/o <nombre-chero>): Para grabar en un chero la evoluci on del di alogo usuario-CLIPS set-break y remove-break: Para poner y quitar un breakpoint en la regla que se les pasa como argumento (run <numero-de-reglas-a-disparar>): Ejecutar paso a paso (matches <nombre-regla>): Para ver que hechos se equiparan con los patrones de una regla

Reglas

24

Estrategias de resoluci on de conictos


Se seleccionan con el comando: (set-strategy <estrategia>) depth: (Profundidad). Las nuevas activaciones se sit uan por encima de las de igual prioridad. Es la estrategia por omisi on breadth: (Amplitud). Las nuevas activaciones se sit uan por debajo de las de igual prioridad simplicity: Las nuevas activaciones se sit uan por encima de las activaciones con igual o mayor especicidad complexity: Las nuevas activaciones se sit uan por encima de las activaciones con igual o menor especicidad random: Aleatoria. A cada activaci on se le asigna un n umero aleatorio para determinar su orden en la agenda.

25

CLIPS v6.1 Resumen


1. 2. 3. 4. 5. Introducci on Hechos Reglas Funciones Marcos

Funciones

26

Funciones de Entrada/Salida
Abrir un chero: open (open nombre-chero nombre-canal-asignado modo-acceso) Cerrar un chero: close (close nombre-canal) Modos de acceso: r s olo lectura w s olo escritura r+ lectura y escritura a escritura al nal de chero (append) Canales predenidos: stdin, stdount, werror Leer de un canal: read. Devuelve el primer s mbolo que encuentre (read <nombre-canal>)

Funciones

27

Escritura
Por pantalla: (printout t texto literal ?v1 m as texto ?v2 crlf) En chero:
(defglobal ?*le* = ) (defrule estado-inicial (declare (salience 3000)) (unwatch all) (set-strategy random) (open cuento.txt ?*le* a) (printout ?*le* EMPIEZA EL CUENTO crlf))

Funciones

28

Funciones de comparaci on y l ogicas


Las siguientes funciones comparan sus argumentos y devuelven un valor l ogico TRUE o FALSE eq TRUE si los valores de las expresiones argumento son iguales en valor y tipo neq TRUE si alguno de los valores de las expresiones argumento es distinto Las funciones =, <>, <, >, <=, >= presuponen argumentos num ericos Las funciones l ogicas usan argumentos l ogicos y devuelven un valor l ogico and TRUE si todos los valores de las expresiones argumento son TRUE or TRUE si alguno de los valores de las expresiones argumento es TRUE not TRUE si el valor de la expresi on argumento es TRUE

29

CLIPS v6.1 Resumen


1. 2. 3. 4. 5. Introducci on Hechos Reglas Funciones Marcos

Marcos

30

Denici on
Se declaran con defclass: (defclass <nombre-plantilla> (is-a <clase-padre>) <propiedades de la clase> <descripcion-de-slot1> ... <descripcion-de-slotN>) Slot igual que en las plantillas. Algunos atributos propios (create-accesor read-write). Para poder modicarlo (source composite). Hereda todas las facetas del mismo slot que el padre. Redenir slots Propiedades de la clase: (role abstract/concrete), (pattern-match non-reactive/reactive) CLIPS tiene 17 clases denidas. Todas abstractas (no se pueden crear instancias directas) menos INITIAL-OBJECT

Marcos

31

Ejemplo1
;; Denicion de la clases SECUENCIA (defclass SECUENCIA (is-a INITIAL-OBJECT) (slot id (type INTEGER) (create-accessor read-write)) (slot gliterario (type SYMBOL) (default CUENTO) (create-accessor read-write)) (multislot lista (type SYMBOL) (create-accessor read-write))) (denstances secuencias ([sec1] of SECUENCIA (id 1) (gliterario cuento) (lista INTRODUCCION PROBLEMA MANDATO ALEJAMIENTO)))

Marcos

Ejemplo2
;; Denici on de la clase abstracta (no se pueden generar instancias de ella) ESCENA (defclass ESCENA (is-a INITIAL-OBJECT) (role abstract) (pattern-match non-reactive) (slot orden (create-accessor read-write) (range 1 10) (type INTEGER))) ;; Denici on de las claeses hijas de ESCENA (defclass INTRODUCCION (is-a ESCENA) (role concrete) (pattern-match reactive) (slot primitiva (create-accessor read-write) (type SYMBOL)) (slot orden (source-composite) (default 8)))

32

Marcos

33

Comandos
make-instance: a nade una instancia a la base de hechos (make-instance of INTRODUCCION (primitiva ESTAR)) unmake-instance: quita la instancia de la base de hechos (unmake-instance ?ins) modify-instance: borra y crea instancias de la base de hechos (modify-instance ?ins (orden 7)) instances: muestra las instancias de la base de hechos [gen1] of INTRODUCCION (send [gen1] print): para ver valor de los slots

Marcos

34

Reglas
(defrule genera-escenas ?control (control (paso 1) (secuencia ?id) (total-escenas ?tot&0) (escena ?es&:(<= ?es ?tot))) ?secuencia (object (is-a SECUENCIA) (lista $?lista) (id ?id)) (bind ?clase (nth$ ?es $?lista)) (printout t Escena ?es clase, ?clase crlf) (make-instance of ?clase (orden ?es)) (modify-instance ?secuencia (id 0)) (unmake-instance ?secuencia) (modify ?control (escena (+ 1 ?es))))

También podría gustarte