View
10
Download
0
Category
Preview:
Citation preview
Práctica IV
Introducción a CLIPS
Contenido
1. Introducción2. Elementos básicos: hechos ordenados y reglas3. Interacción con CLIPS
2
1. Introducción
3
CLIPS
Historia Inspirado en OPS5 (Official Production System 5) y ART
(Automated Reasoning Tool, Inference Corporation) Implementado en C por eficiencia y portabilidad Desarrollado por NASA (1986) Licencia: public domain
Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel Interprete sistema de producción Programación orientad a objetos COOL Lenguaje operacional sintaxis tipo LISP
4
Sobre CLIPS
clipsrules.sourceforge.net
Documentación en línea CLIPS user guide
Introducción a la programación en CLIPS CLIPS reference manual
Vol I: programación básica Vol II programación avanzada Vol III: interfaces
J. Giarrantano, G. Riley. EXPERT SYSTEMS, Principlesand Programming, Third Edition. PWS Publishing Company, Boston 1998. ISBN 0-534-95053-1
5
Intérprete sistema de producción
Memoria de trabajo: hechos (instancias) Base de reglas Motor de inferencias: adelante, RETE
Programa CLIPS Hechos y reglas ( constructores de) (tb. Objetos,
funciones) Los hechos que alcanzan la memoria de trabajo
determinan que reglas se pueden disparar El motor de inferencias determina que reglas y cuando se
disparan Actividad guiada por datos
6
2. Elementos básicos:hechos ordenados y reglas
7
Hechos ordenados
Hechos ordenados: (status walking) (persona nombre "Luis Prieto" edad 53 altura 1.83) (persona "Luis Prieto" 53 1.83)
No hay que definir su estructura Hechos iniciales mediante constructor deffacts Añadir dinamicamente mediante función assert
8
Operaciones con hechos (1)
Añadir un hecho a la memoria de trabajoCLIPS> (assert (persona "Luis Prieto" hombre 53))<Fact-1>
Examinar hechos en la memoria de trabajoCLIPS> (facts)f-0 (initial-fact) f-1 (persona "Luis Prieto" hombre 53)For a total of 2 facts.
Eliminar un hecho de la memoria de trabajoCLIPS> (retract 1)CLIPS> (facts)
9
Operaciones con hechos (2)
Definir hechos iniciales en base de conocimiento
(deffacts amigos "algunos amigos"(persona "Luis Prieto" 53 1.83)(persona "Ana Perez" 56 1.70)
)
10
Reglas
Definir reglas en base de conocimiento
(defrule nombre-amigos "Encontrar el nombre de los amigos"(declare (salience 0))(persona ?x ? ?)
=>(assert (encontrado ?x))
)
11
3. Interacción con CLIPS
12
Base de conocimiento: extensión .clp
; Ejemplo inicial: AMIGOS
; Hechos iniciales
(deffacts amigos "algunos amigos"(persona "Luis Prieto" 53 1.83)(persona "Ana Perez" 56 1.70)
)
; Única regla
(defrule nombre-amigos "Encontrar el nombre de los amigos"(declare (salience 0))(persona ?x ? ?)
=>(assert (encontrado ?x))
)
13
Invocando clips
14
15
Examinando el entorno
Ventanas: Dialog: interfaz comandos, entrada/salida por defecto Facts: Hechos en la memoria de trabajo Agenda: reglas activadas, ordenadas según estrategia
resolución conflictos, pendientes de disparo En menú Window
16
17
Preparar el entorno (1)
(clear) Eliminar base de conocimiento y limpiar memoria de
trabajo En menú Execution
(load) Leer base de conocimiento Evaluar constructores
Crear red Rete (compilación incremental) En menú File
18
19
Prepara el entorno (2)
(reset) Limpia la memoria de trabajo Procesa los hechos de los constructores deffacts con la red
Rete Determina las reglas activadas y aplica la estrategia de
resolución de conflictos En menú Execution
20
21
Examinar reglas y equiparación
DefruleManager Acceso a la lista de reglas, por nombre Observación, manipulación, trazado de reglas,
equiparación de patrones y activaciones Menú Browse
22
23
24
25
26
Estrategia de resolución de conflictos
Por defecto: depth Las nuevas particularizaciones activadas se sitúan sobre
todas las reglas con igual prioridad (salience) Se dispara la primera particularización entre las de mayor
prioridad
En el ejemplo Primero activación f-2 Segundo activación f-1
27
Puesta en marcha del motor de inferencias
(run) Repetición del ciclo básico, hasta que no haya reglas
activadas
(step) Dispara la primera regla de la agenda y realiza la fase de
reconocimiento del siguiente ciclo
(reset) Limpia la memoria de trabajo y evalúa deffacts
Todos en menú Execution
28
29
30
; Segundo ejemplo: AMIGOS y AMIGAS; Hechos iniciales(deffacts amigos "algunos amigos“
(persona nombre "Luis Prieto" sexo varon) (persona nombre "Ana Perez" sexo mujer))
; Tres reglas(defrule nombre-amigos "Encontrar el nombre de los amigos"
(persona nombre ?x ? ?) => (assert (encontrado ?x)))
(defrule registrar-amigo "Solo para los varones"(encontrado ?x)(persona nombre ?x sexo varon)
=>(assert (amigo ?x))
)
(defrule registrar-amiga "solo para las mujeres"(encontrado ?x)(persona nombre ?x sexo mujer)
=>(assert (amiga ?x))
)
Ejercicio 1
Determinar el orden de disparo de las reglas, el contenido de la memoria de trabajo y el índice de cada hecho cuando el motor de inferencias se para, SIN utilizar CLIPS.
Comprobar el resultado con CLIPS
31
Ejercicio 2
La figura 1 muestra un fragmento de una red causal que modela conocimientodel dominio para la tarea de diagnosis en el dominio de los automóviles. Lared asocia posibles causas de fallo –fusible fundido, batería baja o depósitode combustible vacío–con estados intermedios –potencia, combustible enmotor– y síntomas –comportamiento motor, inspección fusible, indicadorbatería... –. Se puede observar que la red refleja la dirección causal: lacausa “Depósito de combustible vacio” tiene como efecto “Combustible enmotor falso” que a su vez es causa de “Comportamiento motor se para”.
32Figura 1
fusiblefundido
bateríabaja
inspección fusibleroto
depósito combustiblevacío
indicador bateríacero
indicador combustiblecero
potenciadesconectada
combustible en motorfalso
comportamiento motorno arranca
comportamiento motorse para
Ejercicio 2
a) A partir de la Red de la figura 1, elaborar una base de conocimiento basada en reglas utilizando al formalismo objeto-atributo-valor y un lenguaje proposicional (sin variables). Sugerencia: modelar en la dirección anti causal, de forma que las reglas permitan generar las causas originales a partir de los síntomas observables (los valores de los indicadores y el comportamiento del motor).
b) Codificar la base de reglas elaborada en a) en CLIPS, utilizando patrones ordenados.
c) Probar los siguientes escenarios:1. Se observa que el motor no arranca y que el indicador de batería marca cero.2. Se observa que el motor se para y que el indicador de combustible marca cero
33
Ejercicio 3
Considerar el asistente al diagnostico propuesto por Pool y Mackworth.
a)Elaborar una base de conocimiento basada en reglas utilizando el formalismo Objeto-Atributo-Valor con variables en los objetos y en los atributos.
b) Implementar la base anterior en CLIPS, utilizando patrones ordenados y reglas con variables.
34
Dominio: asistente al diagnóstico
35David Poole, Alan Mackworth. Artificial Intelligence: Foundations of Computational Agents, Cambridge University Press, 2010
Recommended