340 likes | 579 Views
Alejandro Ramírez A44310 José Sáurez A44994. Agentes Basados en Reglas: Drools y Drools4JADE. Agenda. Introducción. Algoritmo Rete. Algoritmo ReteOO . Drools . Encadenamiento hacia adelante. Reglas. Base de Conocimiento. Manipulación de Hechos. Agenda ( cont ).
E N D
Alejandro Ramírez A44310 José Sáurez A44994 Agentes Basados en Reglas: Drools y Drools4JADE
Agenda • Introducción. • Algoritmo Rete. • Algoritmo ReteOO. • Drools. • Encadenamiento hacia adelante. • Reglas. • Base de Conocimiento. • Manipulación de Hechos.
Agenda (cont) • Activación de Reglas. • Drools4JADE. • Behaviours. • Creación de un Agente. • Creación de Reglas GUI.
Introducción • Conforme se incrementa la dificultad de los problemas se incrementa el manejo de las reglas de negocio. • Esto produce software más complejo y susceptible a fallas.
Introducción (cont) • Regla de Negocio "Las reglas de negocio describen las políticas, normas, operaciones, definiciones y restricciones presentes en una organización y que son de vital importancia para alcanzar sus objetivos. Las reglas de negocio especifican en detalle lo que una organización puede hacer."
Introducción (cont) • El trabajar con reglas permite: • Estabilidad: Un motor de reglas puede manejar miles de hechos automáticamente siendo más estable que validaciones realizadas manualmente. • Escalabilidad: Con un motor de reglas se pueden agregar reglas en tiempo dinámico cuanto sea necesario, haciendo escalable el sistema.
Introducción (cont) • El trabajar con reglas permite: • Mantenimiento: El mantenimiento de las reglas de negocio se hace más fácil, separando el qué? Del cómo?. • Repositorio central de reglas: Manipulación y evaluación de reglas se realiza en un mismo lugar, bajo los mismos parámetros y con toda la información disponible.
Algoritmo Rete • Charles Forgy – Rete: A Fast Algorithm for the Many Pattern / Many Object Pattern Match Problem – 1982. • Basado en un grafo donde se encuentra la información de las reglas a utilizar. • Sacrifica memoria para incrementar la velocidad de procesamiento de las reglas. • Rendimiento independiente de número de reglas del sistema.
Algoritmo ReteOO • Es la adaptación del algoritmo Rete para que interactúe con lenguajes orientados a objetos. • Los hechos son objetos Java. • Existen relaciones entre objetos en lugar de tuplas como en Rete.
Drools • Motor open source de manejo de reglas • Bussiness Rule Management System (BRMS) • Manejado por Jboss • Utiliza como base el algorimoReteOO • Mejor integración con objetos (ObjectOriented). • Hechos son objetos comunes. • Utiliza encadenamiento hacia adelante.
Encadenamiento hacia adelante • Es un método de razonamiento utilizando inferencia. • Se basa en datos para inferir más datos hasta alcanzar una meta.
Encadenamiento hacia adelante • Ejemplo - Reglas Base: • Si X come mozcas, entonces X es una rana. • Si X canta, entonces X es un canario. • Si X es una rana, entonces X es color verde. • Si X es un canario, entonces X es color amarillo. • Averiguar el color de un animal que canta: • Se activa regla 2 y se obtiene que es un canario. • Con la información obtenida de 2 se activa la regla 4, determinando que el color es amarillo.
Reglas • Se declaran utilizando sintaxis y lenguaje DRL. • Archivos con extensión .drl
Reglas (cont) • Semántica Base (o general): • rule-set: Declara exactamente un elemento, el cual lleva un nombre único para el conjunto de reglas. • import: Importa namespaces para clases utilizadas en las reglas. • rule: Representa una regla. Debe contener un nombre único y al menos un parámetro (aunque sea vacío).
Reglas (cont) • Semántica Base (o general): • parameter: Parámetro de una regla. Debe inluir una clase, la cual representa el tipo del parámetro. • class: La clase de la regla. Puede ser una clase con namespace completo o una clase dentro de un namespace importado.
Reglas (cont) • Semántica para Java: • namespace: Se dede indicar el namespacexmlns:java=http://drools.org/semantics/java parautilizarsemántica Java. • Condition: Determina si una condición existe. Pertenece a una regla y si se evalúa con True, la condición se ejecuta. • consequence: Código Java que altera la base de conocimiento cuando se dispara la regla que la contiene.
Base de Conocimiento • Llamado WorkingMemory. • También llamado Espacio de Hechos. • Lugar donde se almacena todo el conocimiento del sistema. • Cada elemento del conocimiento se llama hecho. • El conocimiento se puede manipular mediante la manipulación de hechos.
Manipulación de Hechos • assertObject: • Agregar un nuevo hecho a la base de conocimiento. • Hace que el algoritmo Rete actualice el grafo pues nuevas condiciones son verdaderas. • Se agregan simples objetos Java.
Manipulación de Hechos (cont) • modifyObject: • Modifica un hecho guardado actualmente en la base de conocimiento.
Manipulación de Hechos (cont) • retractObject: • Utilizado para retractar o eliminar un hecho de la base de conocimiento. • Una vez eliminado, el hecho no se puede usar para satisfacer ninguna parte de la condición de activación de una regla.
Manipulación de Hechos (cont) • Se pueden manipular en código o por ejecución de alguna regla.
Activación de Reglas • Conforme se manipula la base de conocimiento, las reglas no se ejecutan automáticamente. • Simplemente quedan activadas: Listas para ser ejecutadas.
Activación de Reglas (cont) • fireAllRules: • Ejecuta todas las activaciones de reglas pendientes. • El ejecutar activaciones puede manipular la base de conocimiento, generando nuevas activaciones. • Modificar hechos puede hacer que la regla que se ejecuta se vuelva a activar Atributo no-loop
Drools4Jade • Como su nombre lo indica: Drools + JADE • Esto implica: • Uso del motor de reglas Drools • Uso de la plataforma de Agentes JADE • Creación de agentes inteligentes con razonamiento basado en reglas.
Behaviours • Son el enlace fundamental entre el motor de reglas de Drools y la plataforma JADE. • Existen 2 tipos: • OneShotDroolsBehaviour: Permite hacer asserts una sola vez antes de validarlos contra el motor de reglas • CyclicDroolsBehavour: Permite hacer asserts, validarlos y hacer nuevos asserts, haciendo unn ciclo de validaciones.
Creación de un Agente • Crear una clase que herede de jade.core.Agent y reimplementar el método setup(). • Crear las reglas que el agente seguirá • Instanciar un Behaviour (OneShoot o Cyclic). • Agregar las reglas al Behaviour. • Agregar hechos al Espacio de Hechos por medio de asserts. • Manejar los resultados del motor de reglas.
Creación de Reglas GUI • Drools 4 JADE contiene un agente especial creado para manejar reglas. • Se pueden crear nuevas reglas • Se pueden guardar conjuntos de reglas en formato de mensajes ACL, objeto Java o arhivo XML de Drools (.drl).
Referencias • http://www.drools.org • http://legacy.drools.codehaus.org/ • Extending JADE forAgentGridApplications. Poggi, Tomaiuolo, Turci. http://etngrid.diit.unict.it/2004/presentations/poggi.pdf • Drools4Jade User Manual.