2. ¿QUÉ ES CLIPS?
Herramienta para la
construcción de sistemas
expertos.
Creado en 1984 en el centro
de Investigaciones Espaciales
Johnson de la Nasa en USA.
3. CLIPS
La versión mas reciente es la
6.30
Desde la versión 6.21 soporta
paradigmas de programación:
Basado en reglas
Procedural
Orientado a objetos
5. CARACTERÍSTIC
AS
Diseñado para facilitar
integración con otros
lePnugeudaeje lsla.marse desde otros
lenguajes.
Puede llamar a funciones
externas, que devuelven la salida y
el control a CLIPS.
6. COMPONENTES
BÁSICOS
Base de Hechos: Lista de datos
introducidos e inferidos.
Base de Conocimiento: Reglas,
funciones, ...
Mecanismo de Inferencias:
Controla la ejecución.
7. NOTACIÓN
Las palabras claves y las
funciones propias de CLIPS van
en minúsculas
Distingue mayúsculas y
minúsculas. Ej: jUAN, Juan,
JUAN
8. CARACTERES
DELIMITADORES
CARACTE
R
USO
; COMENTARIO
“ INICIO O FINAL DE UN STRING
( INICIO DE UNA EXPRESIÓN
) FINAL DE UNA EXPRESIÓN
? INICIO DE UNA VARIABLE
COMODÍN
$ INICIO DE UNA VARIABLE
MULTICAMPO
9. TIPOS DE DATOS
Numéricos
Reales (FLOAT): Ej.: 1.5, -0.7, 3.5e-10
Enteros (INTEGER): Ej.: 1, -1, +3, 65
Simbólicos
Símbolos (SYMBOL): Cualquier
secuencia de caracteres que no siga el
formato de un número, excluyendo
ciertos caracteres. Ej: casa, arbol, perro
Cadenas (STRING): Cualquier
secuencia de caracteres entre comillas.
Ej: “Juan Molina”, “Casa del árbol”
10. VALORES UNICAMPO Y
MULTICAMPO
Valor Unicampo: Cualquier valor de
los tipos de datos anteriores.
Valor Multicampo: Secuencia de
cero o más valores Unicampo entre
paréntesis.
Ejemplos de Valores Multicampo:
( )
(x)
(hola)
(hola “rojo” 23)
No es lo mismo el valor Unicampo
hola que el valor Multicampo (hola).
11. FUNCIÓN
Algoritmo identificado con un
nombre que puede o no devolver
valores (Unicampo o Multicampo) a
otras partes del programa
Funciones internas: Definidas en
CLIPS.
Funciones externas: Escritas en
un lenguaje distinto a CLIPS.
12. FUNCIONES
MATEMÁTICAS
+, -, *, /, div, max, min, abs, float,
integer.
Ejemplos de llamadas a las
funciones + y *:
(+ 34 5 1.3)
(* 2 3)
(+ 3 (* 5 2) 10)
13. CONSTRUCTORES (1/3)
Permite al programador añadir
elementos a la base de hechos
y a la base de conocimiento
(funciones, reglas, hechos,
clases).
14. CONSTRUCTORES (2/3)
Los más importantes son:
deffunction: Para definir
funciones
defglobal: Para definir variables
globales
deftemplate: Para definir
plantillas
deffacts: Para definir hechos
18. HECHOS (1/4)
Un hecho (fact) es una pieza de
información que se almacena en la
llamada lista de hechos (fact-list)
Adicionar Hechos a la base de
conocimiento
(assert <hecho>)
20. HECHOS (3/4)
A cada hecho en la lista se le asocia un
identificador (fact identifier) de la forma f-XXX,
donde el entero XXX es un índice de hecho
(fact index), que indica la posición del hecho
21. HECHOS (4/4)
Mirar los hechos insertados
• Ver los hechos entre dos índices:
(facts ini fin)
Donde:
o ini es el índice del hecho de
Inicio
o fin es el índice del hecho de
Terminación
• Ver todos los hechos: (facts)
22. PLANTILLAS (1/6)
Son estructuras de datos.
(deftemplate
<nombre-relacion>[comentario]
<definición-slot>
)
donde:
<definición-slot> puede ser:
• (slot <nombre-slot>)
• (multislot <nombre-slot>)
23. PLANTILLAS (2/6)
Para mostrar las plantillas definidas con un
constructor deftemplate se utiliza el
comando:
(ppdeftemplate [<nombre-de-la-plantilla>])
Para mostrar todos los nombres de las
plantillas almacenadas en un módulo se
utiliza el comando:
(list-deftemplates [<nombre-del-modulo>])
26. PLANTILLAS (5/6)
Deftemplate: Permite definir atributos para
cada slot:
• Tipo de datos
• Valor por defecto
• Valores permitidos
• Rango de valores numéricos
• Cardinalidad (para multislot)
28. SLOTS (1/4)
Restricciones sobre los valores para los
slots:
allowed-symbols <palabras de caracteres
sin comillas>
allowed-strings <cadenas de caracteres
entre comillas>
allowed-numbers <números enteros, reales
y exponenciales>
allowed-integers <números enteros>
allowed-floats <números reales>
allowed-values <cualquier tipo de valor>