práctica iv - uvacalonso/ingenieria conocimiento... · 2011-01-18 · herramienta para el...

35
Práctica IV Introducción a CLIPS

Upload: others

Post on 08-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

Práctica IV

Introducción a CLIPS

Page 2: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

Contenido

1. Introducción2. Elementos básicos: hechos ordenados y reglas3. Interacción con CLIPS

2

Page 3: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

1. Introducción

3

Page 4: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 5: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 6: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 7: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

2. Elementos básicos:hechos ordenados y reglas

7

Page 8: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 9: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 10: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 11: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 12: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

3. Interacción con CLIPS

12

Page 13: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 14: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

Invocando clips

14

Page 15: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

15

Page 16: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 17: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

17

Page 18: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 19: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

19

Page 20: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 21: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

21

Page 22: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 23: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

23

Page 24: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

24

Page 25: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

25

Page 26: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

26

Page 27: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 28: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 29: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

29

Page 30: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

)

Page 31: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 32: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 33: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 34: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

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

Page 35: Práctica IV - UVacalonso/Ingenieria Conocimiento... · 2011-01-18 · Herramienta para el desarrollo de Sistemas Expertos / SBC Interprete de alto nivel ... Codificar la base de

Dominio: asistente al diagnóstico

35David Poole, Alan Mackworth. Artificial Intelligence: Foundations of Computational Agents, Cambridge University Press, 2010