SlideShare una empresa de Scribd logo
1 de 32
INTELIGENCIA ARTIFICIAL 
Introducción a CLIPS 
Oscar Mauricio Salazar Ospina. 
Correo: omsalazaro@gmail.com
¿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.
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
VENTAJAS 
Portable 
 Bajo Costo 
 Integración con otros 
lenguajes
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.
COMPONENTES 
BÁSICOS 
 Base de Hechos: Lista de datos 
introducidos e inferidos. 
 Base de Conocimiento: Reglas, 
funciones, ... 
 Mecanismo de Inferencias: 
Controla la ejecución.
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
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
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”
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).
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.
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)
CONSTRUCTORES (1/3) 
Permite al programador añadir 
elementos a la base de hechos 
y a la base de conocimiento 
(funciones, reglas, hechos, 
clases).
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
CONSTRUCTORES (3/3) 
Para definir objetos: 
 defclass 
 definstances 
 defmessage-handler 
 defgeneric 
 defmethod
COMANDOS (1/2) 
Realizan acciones con efectos 
colaterales sin devolver valor 
alguno y son llamados entre 
paréntesis
COMANDOS (2/2) 
Ejemplos: 
• (exit) 
• (assert ...) 
• (watch ...) 
• (run) 
• (reset) 
• (clear)
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>)
HECHOS (2/4) 
 Ejemplos: 
(assert (casa blanca)) 
(assert (calidad impresora 
“aceptable”)) 
(assert (amigo Juan Maria))
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
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)
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>)
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>])
PLANTILLAS (3/6) 
(deftemplate persona (slot nombre) (slot 
apellido)) 
(assert (persona (nombre "Helenita") (apellido 
"Vargas"))) 
(assert (persona (nombre "Vicente") (apellido 
"Fernandez")))
PLANTILLAS (4/6) 
Ejemplos Multislots
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)
PLANTILLAS (6/6) 
(deftemplate carro 
(slot color 
(type STRING) 
) 
(slot marca 
(type STRING) 
(default "Renault") 
) 
)
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>
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") 
) 
)
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
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) 
) 
)
BIBLIOGRAFÍA 
Curso de construcción de 
sistemas expertos usando 
CLIPS – Clase 1

Más contenido relacionado

La actualidad más candente

Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en javaTeresa Freire
 
Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)José Toro
 
Estadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión IntroductoriaEstadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión IntroductoriaLuis Fernando Aguas Bucheli
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++ernestre
 
Tema V: Funciones
Tema V: FuncionesTema V: Funciones
Tema V: Funcionesrasave
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)José Toro
 
PL SQL Diplomado Oracle
PL SQL Diplomado OraclePL SQL Diplomado Oracle
PL SQL Diplomado OracleUzziel Chaidez
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresEdwin Romero
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005pabloesp
 

La actualidad más candente (20)

NOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVANOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVA
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en java
 
Fila,pila y cola ..
Fila,pila y cola ..Fila,pila y cola ..
Fila,pila y cola ..
 
Presentacion
PresentacionPresentacion
Presentacion
 
Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)
 
Estadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión IntroductoriaEstadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión Introductoria
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++
 
Tema V: Funciones
Tema V: FuncionesTema V: Funciones
Tema V: Funciones
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)
 
PL SQL Diplomado Oracle
PL SQL Diplomado OraclePL SQL Diplomado Oracle
PL SQL Diplomado Oracle
 
Apunfun
ApunfunApunfun
Apunfun
 
Manual hp2
Manual hp2Manual hp2
Manual hp2
 
Estructura c
Estructura c Estructura c
Estructura c
 
Sql
SqlSql
Sql
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursores
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Programación Java
Programación JavaProgramación Java
Programación Java
 

Similar a Introduccion clips

Presentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BPresentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BJoselyn Serrano
 
Clips parte4 resumen
Clips parte4 resumenClips parte4 resumen
Clips parte4 resumennorma8avila
 
Introducción a Swift
Introducción a SwiftIntroducción a Swift
Introducción a Swiftbetabeers
 
Guia de Algoritmos del profesor Victor Gavidia -UNEFM - CAES
Guia de Algoritmos del profesor Victor Gavidia -UNEFM - CAESGuia de Algoritmos del profesor Victor Gavidia -UNEFM - CAES
Guia de Algoritmos del profesor Victor Gavidia -UNEFM - CAESwww.unefm.edu.ve
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaAna Ruth G H
 
Conceptos básicos sobre algortimia
Conceptos básicos sobre algortimiaConceptos básicos sobre algortimia
Conceptos básicos sobre algortimiaIEO Santo Tomás
 
Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasyguiAlbert Page
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpAna Ruth G H
 
Taller SoraScript para HAEduc 1
Taller SoraScript para HAEduc 1Taller SoraScript para HAEduc 1
Taller SoraScript para HAEduc 1hsg2020
 
Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navisionpabloesp
 
Introducción Javascript.pdf
Introducción Javascript.pdfIntroducción Javascript.pdf
Introducción Javascript.pdfrhapetus
 
Lenguajes De Bajo Nivel
Lenguajes De Bajo NivelLenguajes De Bajo Nivel
Lenguajes De Bajo Nivelguestbf0046
 
Act. Individual.- Pseudocódigos y diagramas de flujo
 Act. Individual.- Pseudocódigos y diagramas de flujo Act. Individual.- Pseudocódigos y diagramas de flujo
Act. Individual.- Pseudocódigos y diagramas de flujoElizabeth Reyna
 
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfSesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfMarxx4
 

Similar a Introduccion clips (20)

Presentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BPresentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA B
 
Programación de código
Programación de códigoProgramación de código
Programación de código
 
Clips parte4 resumen
Clips parte4 resumenClips parte4 resumen
Clips parte4 resumen
 
Introducción a Swift
Introducción a SwiftIntroducción a Swift
Introducción a Swift
 
Guia de Algoritmos del profesor Victor Gavidia -UNEFM - CAES
Guia de Algoritmos del profesor Victor Gavidia -UNEFM - CAESGuia de Algoritmos del profesor Victor Gavidia -UNEFM - CAES
Guia de Algoritmos del profesor Victor Gavidia -UNEFM - CAES
 
Pascal
PascalPascal
Pascal
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y Java
 
Conceptos básicos sobre algortimia
Conceptos básicos sobre algortimiaConceptos básicos sobre algortimia
Conceptos básicos sobre algortimia
 
RPGLE MINICOMPUTADORAS
RPGLE MINICOMPUTADORASRPGLE MINICOMPUTADORAS
RPGLE MINICOMPUTADORAS
 
Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasygui
 
Java 8
Java 8Java 8
Java 8
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# Sharp
 
Curso c++
Curso c++Curso c++
Curso c++
 
Matlab
MatlabMatlab
Matlab
 
Taller SoraScript para HAEduc 1
Taller SoraScript para HAEduc 1Taller SoraScript para HAEduc 1
Taller SoraScript para HAEduc 1
 
Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navision
 
Introducción Javascript.pdf
Introducción Javascript.pdfIntroducción Javascript.pdf
Introducción Javascript.pdf
 
Lenguajes De Bajo Nivel
Lenguajes De Bajo NivelLenguajes De Bajo Nivel
Lenguajes De Bajo Nivel
 
Act. Individual.- Pseudocódigos y diagramas de flujo
 Act. Individual.- Pseudocódigos y diagramas de flujo Act. Individual.- Pseudocódigos y diagramas de flujo
Act. Individual.- Pseudocódigos y diagramas de flujo
 
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfSesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
 

Último

Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 

Último (7)

Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 

Introduccion clips

  • 1. INTELIGENCIA ARTIFICIAL Introducción a CLIPS Oscar Mauricio Salazar Ospina. Correo: omsalazaro@gmail.com
  • 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
  • 4. VENTAJAS Portable  Bajo Costo  Integración con otros lenguajes
  • 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
  • 15. CONSTRUCTORES (3/3) Para definir objetos:  defclass  definstances  defmessage-handler  defgeneric  defmethod
  • 16. COMANDOS (1/2) Realizan acciones con efectos colaterales sin devolver valor alguno y son llamados entre paréntesis
  • 17. COMANDOS (2/2) Ejemplos: • (exit) • (assert ...) • (watch ...) • (run) • (reset) • (clear)
  • 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>)
  • 19. HECHOS (2/4)  Ejemplos: (assert (casa blanca)) (assert (calidad impresora “aceptable”)) (assert (amigo Juan Maria))
  • 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>])
  • 24. PLANTILLAS (3/6) (deftemplate persona (slot nombre) (slot apellido)) (assert (persona (nombre "Helenita") (apellido "Vargas"))) (assert (persona (nombre "Vicente") (apellido "Fernandez")))
  • 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)
  • 27. PLANTILLAS (6/6) (deftemplate carro (slot color (type STRING) ) (slot marca (type STRING) (default "Renault") ) )
  • 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>
  • 29. 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") ) )
  • 30. 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
  • 31. 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) ) )
  • 32. BIBLIOGRAFÍA Curso de construcción de sistemas expertos usando CLIPS – Clase 1