El documento describe el sistema CLIPS, que es un entorno para desarrollar sistemas expertos. CLIPS define un lenguaje que permite la representación de conocimiento declarativo (marcos) y procedimental (reglas de producción). CLIPS también incluye un motor de inferencias con razonamiento hacia adelante.
2. El sistema CLIPS
CLIPS es un entorno para desarrollar
sistemas expertos.
Define un lenguaje que permite la
representación de:
Define un lenguaje que permite la
representación de:
conocimiento declarativo (marcos)
conocimiento procedimental (reglas de
producción)
Su base es un motor de inferencias
con razonamiento hacia adelante.
3. CLIPS
Lenguaje Integrado de Sistemas de
produccion C.
Herramienta para el desarrollo deHerramienta para el desarrollo de
Sistemas expertos
Entorno completo para construir SE
basados en reglas y/o objetos
Sensible a mayusculas y minusculas
5. Estructura de un programa en
CLIPS
Provee los elementos basicos de un
SE
Memoria Global de datos(MT):Memoria Global de datos(MT):
conocimiento factual
Base de conocimientos: Reglas
Motor de Inferencia: Controla la
ejecucion de reglas
Un programa consiste: reglas, hechos
y objetos).
6. PROGRAMACION BASICA
MEMORIA DE TRABAJO
Estructura
Elementos basicos de programacionElementos basicos de programacion
Abstraccion de datos
7. Estructura
Todos los elementos de MT son:
Hechos
Instancias de una clase de objetosInstancias de una clase de objetos
Hecho
Unidad de datos fundamental
Forma basica para representar
informacion
8. Elementos basicos de
programacion
Tres elementos
Tipos primitivos
Para representar informacionPara representar informacion
Funciones
Para manipular datos
Constructores
Para añadir conocimiento a la BC
9. Tipos primitivos
Son valores de unico campo
Informacion simbolica: SYMBOL,
STRINGSTRING
Informacion numerica: INTEGER,FLOAT
Direcciones: EXTERNAL-ADDRESS,
FACT-ADDRESS, INSTANCE-
ADDRESS.
10. Funciones
Fragmento de codigo ejecutable que
devuelve un valor o tiene efecto lateral
util.
TiposTipos
Funciones predefinidas
Funciones definidas por el usuario
Usan notacion prefija
(+ 4 (* 3 4) 2)
12. Comentarios
La mayoria sino todos los
constructores permiten incorporar un
comentario entre comilas(“).comentario entre comilas(“).
En otras partes se usa ;
13. Abstraccion de datos ….
Tres formas de representar
informacion en CLIPS
HechosHechos
Objetos
Variables globales
14. Definición de Hechos iniciales
(deffacts iniciales "Todos los hechos "
(puerta abierta)
(interruptor encendido)
(datos 5)
(valor 3)(valor 3)
(refrigerador (nom ref1) (tipo electrodomestico) (marca lg)
(precio 5))
(refrigerador (nom ref2) (tipo electrodomestico) (marca phi)
(precio 7))
(refrigerador (nom ref3) (tipo electrodomestico) (marca
brastem) (precio 10))
(refrigerador (nom ref4) (tipo electrodomestico) (marca lg)
(precio 8))
)
15. Hechos
Los dos elementos que permiten representar problemas
utilizando reglas de producción son los hechos y las reglas.
Los hechos en CLIPS pueden ser de dos tipos:
– ordered facts
– deftemplate facts– deftemplate facts
Los ordered facts tienen formato libre, por lo tanto no tienen
una estructura predefinida, siguen el esquema general:
(relación p1 p2 ... pn)
• relación ha de ser un símbolo; el resto de parámetros puede
ser de cualquier tipo, por ejemplo:
(padre Juan Pedro)
(num-hijos Juan 2)
17. Hechos no ordenados
(refrigerador (nom ref1) (tipo
electrodomestico) (marca lg) (precio
5))5))
(refrigerador (nom ref2) (tipo
electrodomestico) (precio 7) (marca
phi))
18. Hechos
La creación de hechos se realiza mediante la
sentencia assert (uno solo) o deffacts (un
conjunto), por ejemplo:
(assert (padre Pepe Juan))(assert (padre Pepe Juan))
(assert (persona (nombre "pedro") (edad 25)))
(deffacts mis-hechos
(casa roja)
(pelota verde)
(persona (nombre "luis”) (edad 33)))
20. Hechos
Los deftemplate facts tienen una estructura
predefinida; pueden asimilarse a
representaciones al estilo de las ontologías.
En estos hechos se define una serie de
campos (slots) que enmarcan su estructura.campos (slots) que enmarcan su estructura.
Cada campo puede tener una serie de
restricciones como:
tipo
cardinalidad
un valor por defecto que puede ser:
una constante
un función para calcularlo
22. Hechos
(facts) permite saber que hechos hay
definidos.
(clear) borra todos los hechos(clear) borra todos los hechos
definidos.
(retract <índice-hecho>) elimina el
hecho identificado por el índice dado.
(get-deftemplate-list) retorna la lista de
deftemplates definidos.
23. Reglas
Las reglas en CLIPS están formadas por:
Una parte izquierda (LHS) que define las
condiciones a cumplir
Una parte derecha (RHS) que define lasUna parte derecha (RHS) que define las
acciones a realizar
Sintaxis:
(defrule nombre-regla "comentario"
(condición-1) (condición-2) ...
=>
(acción-1) (acción-2) ...)
26. Variables
Para poder establecer patrones en las condiciones
de las reglas hacen falta variables
Las variables en CLIPS se denotan poniendo un
interrogante delante del nombre (?variable)
Existen variables anónimas (no importa su valor)
para un valor ? o para múltiples valores $?
Durante la ejecución de las reglas se buscan los
valores que instancien las variables y permitan
cumplir las condiciones
Las variables de las reglas son locales, si
queremos definir variables globales debemos usar
la construcción defglobal (las variables globales se
denotan ?*variable*)
27. Notación
square brackets [...]
contents are optional:
(example [test])
pointed brackets (less than / greater than signs) < ...
>>
replace contents by an instance of that type
(example <char>)
star *
replace with zero or more instances of the type
<char>*
plus +
replace with one or more instances of the type
<char>+ (is equivalent to <char> <char>* )
vertical bar |
choice among a set of items:
true | false
30. Reglas de CLIPS: LHS
En la parte izquierda de una regla pueden aparecer diferentes tipos
de condiciones:
Patrones constantes, con variables o con wildcards: se instancian
directamente con hechos en la base de hechos.
Expresiones not, and, or, exist y forall con patrones.
30
Tests de expresiones sobre las variables vinculadas.
Los patrones indican qué tipo de hechos deben instanciar las reglas
y se establecen a través de restricciones sobre variables o valores
constantes.
Estas restricciones se pueden combinar mediante conectivas
lógicas:
~ (no)
& (y)
| (o)
30
31. Ejemplos de LHS
Personas de nombre juan o pedro:
(persona (nombre juan|pedro))
Personas con nombres diferentes:
31
Personas con nombres diferentes:
(persona (nombre ?x)) (persona (nombre ?y&~?x))
Nadie se llama pedro:
(not (persona (nombre pedro)))
Todo el mundo es mayor de edad:
(forall (persona (nombre ?n) (edad ?x)) (test (> ?x 18)))
31
32. El lenguaje de reglas de
CLIPS
En la parte derecha de las reglas (RHS) podemos
poner cualquier sentencia válida en CLIPS
Podemos obtener la dirección de un hecho para
usarlo en la RHS mediante el operador <-, por
32
usarlo en la RHS mediante el operador <-, por
ejemplo:
(defrule mi-regla
?x <- (persona (nombre juan))
=>
(retract ?x)
)
32
33. Reglas de CLIPS: módulos
Las reglas de CLIPS se pueden agrupan/organizar
en módulos.
La ventaja principal es el poder estructurar el
conocimiento y poder enfocar la ejecución de las
33
conocimiento y poder enfocar la ejecución de las
reglas según su objetivo.
La definición de un módulo se realiza mediante la
construcción: (defmodule <nombre> "comentario"
<export-import>)
33
34. Reglas de CLIPS módulos
Nada de lo definido en un módulo es
visible salvo que lo exportemos.
Para utilizar construcciones de otroPara utilizar construcciones de otro
módulo también tenemos que
importarlas explícitamente.
Existe un módulo por defecto llamado
MAIN al que pertenece todo lo no
definido en otro módulo.
35. El lenguaje de programación
CLIPS incluye un lenguaje de
programación que permite definir nuevas
funciones o programar las acciones a
35
funciones o programar las acciones a
realizar en la parte derecha de las reglas.
Toda sentencia o estructura de control es
una función que recibe unos parámetros
y retorna un resultado (paradigma
funcional).
35