32
INTELIGENCIA ARTIFICIAL Introducción a CLIPS Oscar Mauricio Salazar Ospina. Correo: [email protected]

Introduccion clips

Embed Size (px)

Citation preview

Page 1: Introduccion clips

INTELIGENCIA ARTIFICIAL

Introducción a CLIPS

Oscar Mauricio Salazar Ospina.

Correo: [email protected]

Page 2: Introduccion clips

¿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.

Page 3: Introduccion clips

CLIPS La versión mas reciente es la 6.30

Desde la versión 6.21 soporta paradigmas de programación:

Basado en reglasProceduralOrientado a objetos

Page 4: Introduccion clips

VENTAJAS

Portable Bajo Costo Integración con otros lenguajes

Page 5: Introduccion clips

CARACTERÍSTICAS

Diseñado para facilitar integración con otros lenguajes.

Puede llamarse desde otros lenguajes.

Puede llamar a funciones externas, que devuelven la salida y el control a CLIPS.

Page 6: Introduccion clips

COMPONENTES BÁSICOS

Base de Hechos: Lista de datos introducidos e inferidos.

Base de Conocimiento: Reglas, funciones, ...

Mecanismo de Inferencias: Controla la ejecución.

Page 7: Introduccion clips

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

Page 8: Introduccion clips

CARACTERES DELIMITADORES

CARACTER

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

Page 9: Introduccion clips

TIPOS DE DATOSNumé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”

Page 10: Introduccion clips

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).

Page 11: Introduccion clips

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.

Se definen con el constructor: deffunction

Page 12: Introduccion clips

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)

Page 13: Introduccion clips

CONSTRUCTORES (1/3)Permite al programador añadir elementos a la base de hechos y a la base de conocimiento (funciones, reglas, hechos, clases).

Page 14: Introduccion clips

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 defrule: Para definir reglas defmodule: Para definir módulos

Page 15: Introduccion clips

CONSTRUCTORES (3/3)Para definir objetos:

defclass definstances defmessage-handler defgeneric defmethod

Page 16: Introduccion clips

COMANDOS (1/2)Realizan acciones con efectos colaterales sin devolver valor alguno y son llamados entre paréntesis

Page 17: Introduccion clips

COMANDOS (2/2)Ejemplos:

• (exit)• (assert ...)• (watch ...)• (run)• (reset)• (clear)

Page 18: Introduccion clips

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>)

Page 19: Introduccion clips

HECHOS (2/4) Ejemplos:

(assert (casa blanca)) (assert (calidad impresora “aceptable”))

(assert (amigo Juan Maria))

Page 20: Introduccion clips

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 en la lista.

Page 21: Introduccion clips

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)

Page 22: Introduccion clips

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>)

Page 23: Introduccion clips

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>])

Page 24: Introduccion clips

PLANTILLAS (3/6)

(deftemplate persona (slot nombre) (slot apellido))(assert (persona (nombre "Helenita") (apellido "Vargas")))(assert (persona (nombre "Vicente") (apellido "Fernandez")))

Page 25: Introduccion clips

PLANTILLAS (4/6)

Ejemplos Multislots

Page 26: Introduccion clips

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)

Page 27: Introduccion clips

PLANTILLAS (6/6)

(deftemplate carro(slot color

(type STRING))(slot marca

(type STRING)(default "Renault")

))

Page 28: Introduccion clips

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>

Page 29: Introduccion clips

SLOTS (2/4)(deftemplate carro(slot color(type STRING)(allowed-strings “rojo” “azul” “negro” “gris”))(slot marca(type STRING)(allowed-strings “Renault” “Mazda” “Toyota” “Fiat”)(default "Renault")))

Page 30: Introduccion clips

SLOTS (3/4) Rangos y Cardinalidad

(range <inicio> <fin>) <inicio> y <fin> son valores numéricos

(cardinality <limite-inferior> <limite-superior>)

<limite-inferior> y <limite-superior> son valores numéricos positivos

Page 31: Introduccion clips

SLOTS (4/4)(deftemplate persona

(multislot nombres (type STRING) (cardinality 1 2)

) (multislot apellidos

(type STRING) (cardinality 2 2)

) (slot edad

(type NUMBER) (range 10 30)

) )

Page 32: Introduccion clips

BIBLIOGRAFÍA

Curso de construcción de sistemas expertos usando CLIPS – Clase 1