introduccion clips
TRANSCRIPT
![Page 1: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/1.jpg)
INTELIGENCIA ARTIFICIAL
Introducción a CLIPS
Oscar Mauricio Salazar Ospina.
Correo: [email protected]
![Page 2: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/2.jpg)
¿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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/3.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/4.jpg)
VENTAJAS
Portable Bajo Costo Integración con otros lenguajes
![Page 5: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/5.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/6.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/7.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/8.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/9.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/10.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/11.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/12.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/13.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/14.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/15.jpg)
CONSTRUCTORES (3/3)Para definir objetos:
defclass definstances defmessage-handler defgeneric defmethod
![Page 16: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/16.jpg)
COMANDOS (1/2)Realizan acciones con efectos colaterales sin devolver valor alguno y son llamados entre paréntesis
![Page 17: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/17.jpg)
COMANDOS (2/2)Ejemplos:
• (exit)• (assert ...)• (watch ...)• (run)• (reset)• (clear)
![Page 18: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/18.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/19.jpg)
HECHOS (2/4) Ejemplos:
(assert (casa blanca)) (assert (calidad impresora “aceptable”))
(assert (amigo Juan Maria))
![Page 20: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/20.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/21.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/22.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/23.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/24.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/25.jpg)
PLANTILLAS (4/6)
Ejemplos Multislots
![Page 26: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/26.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/27.jpg)
PLANTILLAS (6/6)
(deftemplate carro(slot color
(type STRING))(slot marca
(type STRING)(default "Renault")
))
![Page 28: Introduccion clips](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/28.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/29.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/30.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/31.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062300/55c6ea03bb61ebf2298b4681/html5/thumbnails/32.jpg)
BIBLIOGRAFÍA
Curso de construcción de sistemas expertos usando CLIPS – Clase 1