0% encontró este documento útil (0 votos)
83 vistas13 páginas

Introducción a la Programación en CLIPS

Este documento introduce CLIPS, una herramienta para desarrollo de sistemas expertos creada por la NASA. Describe los componentes básicos de representación de conocimiento en CLIPS como bases de reglas, hechos, motor de inferencia y memoria de trabajo. También explica comandos básicos, tipos de hechos, reglas, variables, entrada y salida en CLIPS.

Cargado por

Bryan Herrera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
83 vistas13 páginas

Introducción a la Programación en CLIPS

Este documento introduce CLIPS, una herramienta para desarrollo de sistemas expertos creada por la NASA. Describe los componentes básicos de representación de conocimiento en CLIPS como bases de reglas, hechos, motor de inferencia y memoria de trabajo. También explica comandos básicos, tipos de hechos, reglas, variables, entrada y salida en CLIPS.

Cargado por

Bryan Herrera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción a la

Programación en CLIPS
CLIPS
• Es una herramienta para el desarrollo de sistemas expertos diseñada por el
centro espacial Johnson (NASA), esta programado en C y existen versiones
de CLIP programadas en ADA y en JAVA.
• Los componentes básicos para representar el conocimientos en un sistema
basado en reglas como CLIP son:

• BASE DE CONOCIMIENTO: base de reglas


• BASE DE HECHOS: (lista de hechos) instancias o datos de entrada
• MOTOR DE INFERENCIA: controla la ejecución de las reglas (encadenamiento hacia
adelante)
• MEMORIA DE TRABAJO: contiene los datos que representan el estado, y sobre los
cuales se van hacer inferencias.
CLIPS en Windows
Comandos básicos de CLIPS
• Todos los comando se escriben entre paréntesis.
• Algunos comandos pueden ejecutarse desde los menús.

➢ (exit) salir de CLIPS


➢(clear) borra de CLIPS todos los hechos, reglas y definiciones.
Equivale a cerrar CLIPS y abrirlo de nuevo.
➢(reset) pone el sistema en su estado inicial. (Borra todos los hechos;
coloca un hecho inicial (initial_fact) así como todos los que el
usuario defina por defecto. Debe efectuarse antes de
ejecutar cualquier programa.
➢(run) ejecuta el programa cargado en CLIPS
➢(load “nombrefichero.clp”
carga un programa CLIPS a partir del fichero nombrefichero.clp
Hechos en CLIPS
• Representa la información en CLIPS y son las unidades de datos
fundamentales usadas por las reglas.
• Todos los hechos se almacenan en la memoria de trabajo
denominada lista de hechos (fact-list), cada hecho tiene un
identificador único y se incrementa cuando se añade o cambia un
hecho. Si se ejecuta un comando reset o clear, este valor se reinicia a
0.
• Para añadir datos a la lista de hechos (fact-list) se utiliza el comando
assert:
CLIPS> (assert (velocidad))
• La lista de hechos se muestra utilizando el comando facts.
CLIPS>(facts)
• Para eliminar los hechos de la lista se utiliza el comando clear.
Tipos de Hechos en CLIPS
• HECHOS ORDENADOS
• Codifican la información posicionalmente, es decir, en función de la posición
que ocupan dentro de la secuencia. Para acceder a esa información un
usuario debe saber no solo que datos están almacenados en un hecho sino
también las posiciones de los campos que contienen los datos, puesto que no
se ponen nombres a los campos.
• Cuando se definen hechos ordenados, al tratarse de hechos donde la posición
importa CLIPS considera 2 hechos diferentes:
(hijo-de Luis Daniel) ;Luis es hijo de Daniel
(hijo-de Daniel Luis) ;Daniel es hijo de Luis
• Los comentarios en CIPS se escriben con punto y coma -> ;
• HECHOS NO ORDENADOS
• Proporciona al usuario la posibilidad de abstraer la estructura de un hecho
asignando nombres a cada campo de hecho.
Reglas en CLIPS
• Las Reglas representan el conocimiento sobre la resolución de un problema de
un dominio específico.
• Una regla es una colección de condiciones junto con las acciones a realizar si
se cumplen dichas condiciones.
• Las reglas se ejecutan basándose en la existencia o no-existencia de hechos o
instancias de clases definidas por el usuario.
• Para definir una regla se usa el constructor defrule, la cual se carga cuando se
hace un reset y cuya sintaxis es la siguiente:
nombre de la regla
(defrule regla_perro “la regla del perro”
(animal_es perro)  Antecedente
=>
(assert (sonido_es guau)))  Consecuente
Reglas en CLIPS
• CLIPS intenta emparejar los patrones de las reglas (antecedentes) frente a los hechos
de la lista de hechos (fact-list). Si todos los patrones están emparejados con los
hechos de la lista de hechos, la regla se activa y se añade a la agenda
• AGENDA
• Es el conjunto de reglas que pueden activarse (se cumplen sus antecedentes)

CLIPS> (assert (animal_es perro))


==> f-1(animal_es perro)
<Fact-1>
CLIPS> (defrule regla_perro "la regla del perro"
(animal_es perro)
=>
(assert (sonido_es guau)))
CLIPS> (agenda)
0 regla_perro: f-1
For a total of 1 activation.
Variables
• Una variable almacena información dinámica, esto es, los valores que toma
pueden cambiar (a diferencia de un hecho que siempre es estático)
• Permite la escritura de reglas más generales y complejas.
• El nombre de la variable se compone del símbolo ? Y de uno o mas
caracteres. ?nombre ?apellido ?edad
• Uno de los usos más comunes de las variables es el de tomar un valor en el
antecedente de una regla y usarlo en el consecuente.
• El proceso de tomar valores en el antecedente se llama emparejamiento de
patrones
• Las reglas se activan para todos los valore de las variables que cumplen el
antecedente.
Ejemplo del uso de Variables y Reglas
Ejemplos complejos del uso de Variable y
Reglas
• Cuando hay varias condiciones en los antecedentes deben cumplirse todas las
condiciones para poder aplicar la regla
CLIPS> (defrule hacer_tortilla
(hay aceite) (hay huevos) (hay sal)
=>
(assert (hacer tortilla)))
• Cuando hay varias apariciones de la misma variable en el antecedente, para
activar la regla la variable debe tomar un valor único que haga cumplir todos los
hechos.
CLIPS> (defrule parking “la regla del parking”
(es_alumno ?nombre ?facultad) (tiene ?nombre coche)
=>
(assert (puede_aparcar_en ?nombre ?facultad)))
Entrada y Salida
• Imprimir información se utiliza
(printout dispositivos elementos_a_imprimir)
• El valor de dispositivo para el monitor es t.
• Los elementos a imprimir se separan por espacios.
• Para separar líneas se pone crlf

CLIPS> (defrule buscar_persona (es_abuelo ?nombre) =>


(printout t "tiene nombre" ?nombre crlf))
CLIPS> (run)
tiene nombreJuan
• Leer información se utiliza
(read dispositivo)
• Si el dispositivo es teclado la lectura se hace con (read)
CLIPS> (defrule leer_persona (es_abuelo Juan)
=>
(printout t "¿Es abuelo Juan? (si/no)")
(assert (es_abuelo (read))))
• Descargar CLIPS
http://clipsrules.sourceforge.net/

También podría gustarte