Algoritmo Rete y ReteOO
Download
Report
Transcript Algoritmo Rete y ReteOO
Algoritmo Rete y ReteOO
Sistemas Basados en Reglas
Ricardo Gang
Javier Fonseca
Allan Berrocal
TEIA Agentes Inteligentes
1
Contenidos
►
Reseña sobre Sistemas basados en reglas
► Encadenamiento hacia adelante
► Encadenamiento hacia atrás
► Algoritmo Rete
► Ejemplos Rete
► Algoritmo ReteOO
► Ejemplos ReteOO
► Heurística para reglas
► Mejoras a Rete
TEIA Agentes Inteligentes
2
Sistema Basado en Reglas
Es un sistema con los siguientes componentes:
Base de
Reglas
Datos
Permanentes
Base de
Conocimiento
Motor de
Inferencia
Procesos
Memoria de
Trabajo
Interfaz de
Usuario
Datos
Temporales
TEIA Agentes Inteligentes
3
Base de Reglas
►
Las reglas suelen ser de la forma
IF condición THEN acción
►
condición
se verifica contra la MT.
Pueden ser expresiones lógicas, predicados, etc.
►
acción
Agregar o quitar hechos de la MT.
Acciones con efectos externos al sistema.
TEIA Agentes Inteligentes
4
Memoria de Trabajo
► Conjunto
de hechos conocidos.
► ¿Qué forma tienen?
Literales que afirman una verdad sobre el mundo.
Predicados (como el Prolog).
Objetos complejos.
► ¿Para
qué sirven?
Permiten o impiden que una regla se dispare.
► ¿Qué
operaciones se permiten?
Agregar
Eliminar
Modificar (caso especial)
TEIA Agentes Inteligentes
5
Motor de Inferencia
► Aplica
las reglas a la MT.
► Mantiene una agenda.
► Resuelve conflictos (seleccionar la siguiente
regla a ejecutar).
► Ejecuta las acciones del lado derecho (LD) de
las reglas.
► Actualiza la agenda.
TEIA Agentes Inteligentes
6
Encadenamiento Hacia Adelante
► Razonamiento
de hechos a conclusiones.
► Cada nuevo hecho es comparado con los
antecedentes de las reglas.
► Ejemplo:
Si X está en tercer grado, entonces X necesita un trabajo.
Si X está en tercer grado, entonces X está vivo.
Si X necesita un trabajo, entonces X llegará a ser un contador.
Suponga…
Marco necesita un
trabajo
Marco llegará a ser
un contador
Marco está en
tercer grado.
Marco está vivo
TEIA Agentes Inteligentes
NULL
7
Encadenamiento Hacia Atrás
► Razonamiento
de conclusiones a hechos.
► Trabaja “por demanda”.
► Busca satisfacer las condiciones de una regla
► Ejemplo:
Si X está en tercer grado, entonces X necesita un trabajo.
Si X está en tercer grado, entonces X está vivo.
Si X necesita un trabajo, entonces X llegará a ser un contador.
Suponga… Marco está en tercer grado.
Marco
llegará a
ser un
contador
¿Está
alguien en
tercer
grado?
¿Necesita
alguien un
trabajo?
TEIA Agentes Inteligentes
¿Llegará
alguien a ser
un contador?
No hay
hechos
8
Panorama General
Rule-Based Expert Systems
Inference Engine
Pattern
Matching
Rete
Algorithm
Knowledge Base
Conflict
Resolution
Action
Execution
Markov
Algorithm
Facts
Rules
Post
Production
Rules
Dr. Franz J. Kurfess
TEIA Agentes Inteligentes
9
Algoritmo de Rete (Presentación)
‘rete’ es la palabra en latín para red.
► Algoritmo eficiente para correspondencia de patrones.
► Desarrollado por Dr. Charles L. Forgy en 1979.
►
►
Es una red donde todos los nodos (excepto las hojas)
representan un patrón del L. Izq. de una regla.
► Un camino entre la raíz y una hoja forma una regla.
► Cada nodo tiene una memoria.
► Cada nuevo hecho se propaga haciendo que los
nodos puedan cambiar sus memorias.
► Si la propagación alcanza una hoja se dispara una
regla.
TEIA Agentes Inteligentes
10
Algoritmo de Rete (Comparación)
Reglas
Memoria de Trabajo
1) A(x) B(x) C(y) add D(x)
2) A(x) B(y) D(x) add E(x)
3) A(x) B(x) E(z) delete A(x)
{A(1), A(2), B(2), B(3), B(4), C(5)}
Estructura
Estructuraooenfoque
enfoquetradicional
Rete
A(x)
B(x)
ADD D(x)
C(y)
A(x)
B(y)
D(x)
ADD E(x)
TEIA Agentes Inteligentes
A(x)
B(x)
E(z)
DEL A(x)
11
Algoritmo de Rete (Nodos)
►
Tipos de nodos
1 Entrada / 1 Salida (Tipo A)
► Son
reductores y únicamente permiten el paso de tuplas que
cumplen con la condición requerida.
2 Entradas / 1 Salida (Tipo B)
► Conectan
la salida de otros dos nodos (cualquier tipo).
► Mantienen una memoria con las tuplas que cumplen la
condición. Esto evita repetir comparaciones en vano.
►
Nodos tipo A forman la entrada de la red.
► Cada tupla tiene un tipo determinado.
► Una condición es un patrón que especifica las
características que una tupla debe cumplir.
TEIA Agentes Inteligentes
12
Algoritmo de Rete (ciclo básico)
Mientras se produzcan cambios en la MT.
IDENTIFICAR
Construir un conjunto con todos los pares (R,H) donde R es una regla y H
es un subconjunto de hechos que se unifican con las condiciones del lado
izquierdo de R.
RESOLVER CONFLICTOS
Seleccionar un par (R,H) del conjunto-conflicto para ejecución.
ACTUAR
Ejecutar las acciones relacionadas con el lado derecho de R.
TEIA Agentes Inteligentes
13
Algoritmo de Rete (conflictos)
►
Refracción
Una regla sólo puede utilizarse una vez para cada conjunto
de hechos vigente.
►
Nuevos hechos primero
Utilizar reglas que utilizan los hechos agregados más
recientemente.
►
Especificidad
Utilizar la regla más específica (i.e. la más “pequeña”)
►
Prioridades
Asignar prioridades a las reglas (e.g. MYCIN)
TEIA Agentes Inteligentes
14
Algoritmo de ReteOO (Presentación)
►
Adaptación de Rete para manejar objetos
Se usan tanto en los hechos como en las acondiciones
►
Se atribuye a Bob McWhirter dicha adaptación
►
Hay nodos 1/1 y 2/1
► Existen otros nodos cuya función es extraer atributos
y agregar columnas a las tuplas que se propagan
► Se usa el concepto de objeto raíz
Tiene tipo: igual al tipo de los nodos en Rete
Tiene nombre: introduce un tipo de nodos parmámetro
TEIA Agentes Inteligentes
15
Algoritmo de ReteOO (tipos de nodos)
►
Tipo de objeto
Clasifican los objetos aplicando filtros sobre los tipos
►
Parametro
Crean una tupla de entrada enlazando a cada objeto un nombre
►
Condición
Examinan una tupla contra una expresión booleana
►
Extractor
Extraen nuevos atributos, crean nuevas columnas en las tuplas y
almcenan los resultados
►
Unión
Unen la salida de dos nodos.
Permiten la propagación de tuplas consistentes
►
Terminal
Indican la activación de una regla
TEIA Agentes Inteligentes
16
Algoritmo de ReteOO (ejemplo de regla)
<rule name="AtoB">
<parameter identifier="a" salience="30">
<class-field field="name" value="A">State</class-field>
</parameter>
<parameter identifier="b">
<class-field field="name" value="B">State</class-field>
</parameter>
<java:condition>a.getState().equals("FINISHED")</java:condition>
<java:condition>b.getState().equals("NOTRUN")</java:condition>
<java:consequence>
System.out.println(b.getName() + " finished" );
b.setState("FINISHED");
</java:consequence>
</rule>
TEIA Agentes Inteligentes
17
Algoritmo de Rete
(Heurística al construir reglas)
►
Patrones específicos.
Deben tener preferencia en el lado izquierdo.
Variables sin ligar o comodines deben ir más a la derecha.
►
Patrones con pocas condiciones
se deben colocar al principio para minimizar
correspondencias parciales.
►
Patrones volátiles
Deben ser colocados de último en la lista.
TEIA Agentes Inteligentes
18
Algoritmo de Rete
(Mejoras de rendimiento)
Reglas:
R1
R2
XYZM
XYN
Red resultante
Tomado y modificado de la documentación de Jess
TEIA Agentes Inteligentes
19
Algoritmo de Rete
(Compartir Nodos-Patrón)
Reglas:
R1
R2
XYZM
XYN
Red resultante al
compartir nodos-patrón
Tomado y modificado de la documentación de Jess
TEIA Agentes Inteligentes
20
Algoritmo de Rete
(Compartir Nodos-Unión)
Reglas:
R1
R2
XYZM
XYN
Red resultante al
compartir nodos-unión
Tomado y modificado de la documentación de Jess
TEIA Agentes Inteligentes
21
Referencias
► Explore
Reasoning Systems:
http://www.ers.com/Html/rete.htm
► Dr. Franz J. Kurfess. Departamento de
Computación. Cal Poly 2002
► Drools Project http://www.drools.org
TEIA Agentes Inteligentes
22