Sistemas de producción: Introducción a CLIPS

27
Sistemas de producci´on: CLIPS Francisco J. Mart´ ın Mateos Dpto. Ciencias de la Computaci´on e Inteligencia Artificial Universidad de Sevilla Ingenier´ ıa del Conocimiento Sistemas de producci´ on: CLIPS

Transcript of Sistemas de producción: Introducción a CLIPS

Page 1: Sistemas de producción: Introducción a CLIPS

Sistemas de produccion: CLIPS

Francisco J. Martın Mateos

Dpto. Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 2: Sistemas de producción: Introducción a CLIPS

Sistemas de produccion: Ejemplo

Reglas para identificar un animal

Si el animal tiene pelos entonces es mamıferoSi el animal produce leche entonces es mamıferoSi el animal es mamıfero y tiene pezunas entonces es unguladoSi el animal es mamıfero y rumia entonces es unguladoSi el animal es ungulado y tiene el cuello largo entonces es unajirafaSi el animal es ungulado y tiene rayas negras entonces es unacebra

¿Como identificamos un animal que tiene pelos, pezunas yrayas negras?

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 3: Sistemas de producción: Introducción a CLIPS

Sistemas de produccion

Un sistema de produccion es un mecanismo computacionalbasado en reglas de produccion de la forma: “Si se cumplenlas condiciones entonces se ejecutan las acciones”

El conjunto de las reglas de produccion forma la base deconocimiento que describe como evoluciona un sistema

Las reglas de produccion actuan sobre una memoria de trabajo

o base de datos que describe el estado actual del sistemaSi la condicion de una regla de produccion se satisfaceentonces dicha regla esta activa

El conjunto de reglas de produccion activas en un instanteconcreto forma el conjunto de conflicto o agenda

La estrategia de resolucion selecciona una regla del conjuntode conflicto para ser ejecutada o disparada modificando ası lamemoria de trabajo

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 4: Sistemas de producción: Introducción a CLIPS

Ciclo de ejecucion

Reglas

Equiparacion de patrones

Agenda

Hechos

Disparo

Resolucion de conflictos

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 5: Sistemas de producción: Introducción a CLIPS

Sistemas de produccion

Componentes:

Base de hechos (memoria de trabajo). Elemento dinamicoBase de reglas (base de conocimiento). Elemento estaticoMotor de inferencia (produce los cambios en la memoria detrabajo)

Elementos adicionales:

Algoritmo de equiparacion de patrones: Algoritmo paracalcular eficientemente la agendaEstrategia de resolucion de conflictos: Proceso para decidir encada momento que regla de la agenda debe ser disparada

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 6: Sistemas de producción: Introducción a CLIPS

Resolucion de conflictos

Una activacion solo se produce una vez

Estrategias mas comunes:

Tratar la agenda como una pilaTratar la agenda como una colaEleccion aleatoriaRegla mas especıfica (numero de condiciones)Activacion mas reciente (en funcion de los hechos)Regla menos utilizadaMejor (pesos)

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 7: Sistemas de producción: Introducción a CLIPS

Reglas de produccion

Modelo de regla:<Condiciones> => <Acciones>

Condiciones

Existencia de cierta informacionAusencia de cierta informacionRelaciones entre datos

Acciones

Incluir nueva informacionEliminar informacionPresentar informacion en pantalla

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 8: Sistemas de producción: Introducción a CLIPS

CLIPS

CLIPS ≡ C Language Integrated Production Systems

http://clipsrules.sourceforge.net/

Lenguaje basado en reglas de produccion.

Desarrollado en el Johnson Space Center de la NASA.

Relacionado con OPS5 y ART

Caracterısticas:

Conocimiento: Reglas, objetos y procedimentalPortabilidad: implementado en CIntegracion y Extensibilidad: C, Java, FORTRAN, ADADocumentacionBajo coste: software libre

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 9: Sistemas de producción: Introducción a CLIPS

Hechos en CLIPS

Estructura de un hecho simple(<simbolo> <datos> * )

Ejemplos:

(conjunto a b 1 2 3)

(1 2 3 4) no es un hecho valido

Conjunto de hechos iniciales(deffacts <nombre>

<hecho> * )

Accion: Anadir hechos(assert <hecho> * )

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 10: Sistemas de producción: Introducción a CLIPS

Reglas en CLIPS

Estructura de una regla (I):(defrule <nombre>

<condicion> *=><accion> * )

Ejemplo:(defrule mamifero-1

(tiene-pelos)=>(assert (es-mamifero)))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 11: Sistemas de producción: Introducción a CLIPS

Interaccion con CLIPS

Cargar el contenido de un archivo:(load <archivo>)

Inicializacion:(reset)

Ejecucion:(run)

Limpiar la base de conocimiento:(clear)

Ayuda del sistema:(help)

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 12: Sistemas de producción: Introducción a CLIPS

Ejemplo

Reglas(defrule mamifero-1

(tiene-pelos)=>(assert (es-mamifero)))

(defrule ungulado-1(es-mamifero)(tiene-pezugnas)=>(assert (es-ungulado)))

(defrule jirafa(es-ungulado)(tiene-cuello-largo)=>(assert (es-jirafa)))

(defrule mamifero-2(da-leche)=>(assert (es-mamifero)))

(defrule ungulado-2(es-mamifero)(rumia)=>(assert (es-ungulado)))

(defrule cebra(es-ungulado)(tiene-rayas-negras)=>(assert (es-cebra)))

Conjunto de hechos iniciales(deffacts hechos-iniciales

(tiene-pelos)(tiene-pezugnas)(tiene-rayas-negras))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 13: Sistemas de producción: Introducción a CLIPS

Ejemplo: tabla de seguimiento

Hechos E Agenda D

f0 (initial-fact) 0f1 (tiene-pelos) 0 mamifero-1: f1 1f2 (tiene-pezugnas) 0f3 (tiene-rayas-negras) 0

f4 (es-mamifero) 1 ungulado-1: f4,f2 2

f5 (es-ungulado) 2 cebra: f5,f3 3

f6 (es-cebra)

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 14: Sistemas de producción: Introducción a CLIPS

Plantillas

Estructura de una plantilla (I):(deftemplate <nombre>

<campo>* )

<campo> := (slot <nombre-campo>)

Ejemplos:(deftemplate persona

(slot nombre)(slot ojos))

(persona (nombre Ana)(ojos verdes))

(persona (nombre Juan)(ojos negros))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 15: Sistemas de producción: Introducción a CLIPS

Variables simples y restriciones

Variables simples: ?x, ?y, ?gv32

Toman un valor simple (numero, sımbolo o cadena de texto)

Restricciones (I): Condiciones sobre las variables que secomprueban en el momento de verificar las condiciones de unaregla

Negativas:(dato ?x&˜a)

Disyuntivas:(dato ?x&a|b)

Conjuntivas:(dato ?x&˜a&˜b)

Accion: Presentar informacion en pantalla(printout t <dato> * )

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 16: Sistemas de producción: Introducción a CLIPS

Ejemplo

(deftemplate persona(slot nombre)(slot ojos))

(deffacts personas(persona (nombre Ana) (ojos verdes))(persona (nombre Juan) (ojos negros))(persona (nombre Luis) (ojos negros))(persona (nombre Blanca) (ojos azules)))

(defrule empareja(persona (nombre ?nombre1)

(ojos ?ojos1&azules|verdes))(persona (nombre ?nombre2&˜?nombre1)

(ojos negros))=>(printout t ?nombre1 " tiene los ojos " ?ojos1 crlf)(printout t ?nombre2 " tiene los ojos negros" crlf)(printout t "------------------------" crlf))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 17: Sistemas de producción: Introducción a CLIPS

Variables multiples y eliminaciones

Variables: $?x, $?y, $?gv32

Toman un valor multiple

Estructura de una regla (II):(defrule <nombre>

<condicion> *=><accion> * )

<condicion> := <patron> |(not <patron>) |<variable-simple> <- <patron>

Accion: Eliminar hechos:(retract <identificador-hecho> * )

<identificador-hecho> := <variable-simple>

Variables mudas: Toman un valor que no es necesario recordar

Simple: ?

Multiple: $?

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 18: Sistemas de producción: Introducción a CLIPS

Ejemplo

Union de conjuntos(deffacts datos-iniciales

(conjunto 1 a b)(conjunto 2 b c))

(defrule inicio=>(assert (union)))

(defrule union?union <- (union $?u)(conjunto ? $? ?e $?)(not (union $? ?e $?))=>(retract ?union)(assert (union ?e ?u)))

Ejercicio: Interseccion de conjuntos

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 19: Sistemas de producción: Introducción a CLIPS

Ejemplo: tabla de seguimiento

Hechos E S Agenda D S

f0 (initial-fact) 0 inicio: f0 1f1 (conj-1 a b) 0f2 (conj-2 b c) 0

f3 (union) 1 2 union: f3,f1, 2union: f3,f1, 2union: f3,f2, 2union: f3,f2, 2

f4 (union b) 2 3 union: f4,f1, 3union: f4,f2, 3

f5 (union c b) 3 4 union: f5,f1, 4f6 (union a c b) 4

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 20: Sistemas de producción: Introducción a CLIPS

Plantillas y reglas

Estructura de una plantilla (II):(deftemplate <nombre>

<campo>* )

<campo> := (slot <nombre-campo>) |(multislot <nombre-campo>)

Estructura de una regla (III):(defrule <nombre>

<condicion> *=><accion> * )

<condicion> := <patron> |(not <patron>) |<variable-simple> <- <patron> |(test <llamada-a-una-funcion>)

Funciones matematicas:

Basicas: +, - , * , /

Comparaciones: =, != , <, <=, >, >=

Exponenciales: ** , sqrt , exp , log

Trigonometricas: sin , cos , tan

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 21: Sistemas de producción: Introducción a CLIPS

Ejemplo

Clasificacion de elementos(deftemplate triangulo

(slot nombre)(multislot lados))

(deffacts triangulos(triangulo (nombre A) (lados 3 4 5))(triangulo (nombre B) (lados 6 8 9))(triangulo (nombre C) (lados 6 8 10)))

(defrule inicio=>(assert (triangulos-rectangulos)))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 22: Sistemas de producción: Introducción a CLIPS

Ejemplo

Clasificacion de elementos(defrule almacena-triangulo-rectangulo

?h1 <- (triangulo (nombre ?n) (lados ?x ?y ?z))(test (= ?z (sqrt (+ ( ** ?x 2) ( ** ?y 2)))))?h2 <- (triangulos-rectangulos $?a)=>(retract ?h1 ?h2)(assert (triangulos-rectangulos $?a ?n)))

(defrule elimina-triangulo-no-rectangulo?h <- (triangulo (nombre ?n) (lados ?x ?y ?z))(test (!= ?z (sqrt (+ ( ** ?x 2) ( ** ?y 2)))))=>(retract ?h))

(defrule fin(not (triangulo))(triangulos-rectangulos $?a)=>(printout t "Lista de triangulos rectangulos: " $?a crlf))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 23: Sistemas de producción: Introducción a CLIPS

Problemas de terminacion

Una misma regla se puede activar con distinto conjunto dehechos dando lugar a una iteracion infinita en el proceso dededuccion(deftemplate rectangulo

(slot nombre)(slot base)(slot altura))

(deffacts informacion-inicial(rectangulo (nombre A) (base 9) (altura 6))(rectangulo (nombre B) (base 7) (altura 5))(rectangulo (nombre C) (base 6) (altura 8))(rectangulo (nombre D) (base 2) (altura 5))(suma 0))

(defrule suma-areas-de-rectangulos(rectangulo (base ?base) (altura ?altura))?suma <- (suma ?total)=>(retract ?suma)(assert (suma (+ ?total ( * ?base ?altura)))))

Ejercicio: Corregir ejemplo anterior

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 24: Sistemas de producción: Introducción a CLIPS

Restricciones evaluables

Restricciones (II):

Evaluables:(dato ?x&:<llamada-a-un-predicado>)

Ejemplo:(defrule maximo

(vector $? ?x $?)(not (vector $? ?y&:(> ?y ?x) $?))=>(printout t "El maximo es " ?x crlf))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 25: Sistemas de producción: Introducción a CLIPS

Ejemplo

Ordenacion de los elementos de un vector(defrule inicial

(vector $?x)=>(assert (vector-aux ?x)))

(defrule ordena?f <- (vector-aux $?b ?m1 ?m2&:(< ?m2 ?m1) $?e)=>(retract ?f)(assert (vector-aux $?b ?m2 ?m1 $?e)))

(defrule final(not (vector-aux $?b ?m1 ?m2&:(< ?m2 ?m1) $?e))(vector $?x)(vector-aux $?y)=>(printout t "La ordenacion de " ?x " es " ?y crlf))

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 26: Sistemas de producción: Introducción a CLIPS

Restricciones evaluables

Hechos E S Agenda D S

f0 (initial-fact) 0f1 (vector 3 2 1 4) 0 inicial: f1 1

f2 (vector-aux 3 2 1 4) 1 2 ordena: f2 2ordena: f2 - 2

f3 (vector-aux 2 3 1 4) 2 3 ordena: f3 3

f4 (vector-aux 2 1 3 4) 3 4 ordena: f4 4

f5 (vector-aux 1 2 3 4) 4 final: f0,,f1,f5 5

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS

Page 27: Sistemas de producción: Introducción a CLIPS

Bibliografıa

Giarratano, J.C. y Riley, G. “Expert Systems Principles andProgramming (2nd ed.)” (PWS Pub. Co., 1994)

Cap. 7: “Introduction to Clips”

Giarratano, J.C. “CLIPS 6.0 User’s Guide”

Ingenierıa del Conocimiento Sistemas de produccion: CLIPS