integraciÓn objetos - reglas
DESCRIPTION
INTEGRACIÓN OBJETOS - REGLAS. EL CASO DEL ASCENSOR. David Portolés Rodríguez. ÍNDICE. Integración Java - Jess El caso del ascensor Paquete ISBC_Jess. JAVA - JESS. ¿ Qué es Jess ?. JESS (Java Expert System Shell). Diseñado para integrar fácilmente Clips y Java. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/1.jpg)
INTEGRACIÓN
OBJETOS - REGLAS
David Portolés Rodríguez
EL CASO DEL ASCENSOR
![Page 2: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/2.jpg)
ÍNDICE
• Integración Java - Jess
• El caso del ascensor
• Paquete ISBC_Jess
![Page 3: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/3.jpg)
JAVA - JESS
![Page 4: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/4.jpg)
¿ Qué es Jess ?
• JESS (Java Expert System Shell).• Diseñado para integrar fácilmente Clips y
Java.• Originalmente (1995) era un clon de Clips,
programado en Java.• Hoy es mucho más. (versión actual: 6.0)• Acepta casi cualquier fichero que funciona
con Clips.• Objetivo: Aplicaciones Java + razonamiento
de un sistema experto (reglas).
![Page 5: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/5.jpg)
Características
• Utiliza el algoritmo de Rete para procesar las reglas.
• Puede obtener mayor rapidez que CLIPS.
• Incluye encadenamiento hacia atrás (5.0)
• Permite manipulación directa de objetos Java (incluso scripts de Java)
• Incluye lógica difusa en la 5.0 (FuzzyJess): http://ai.iit.nrc.ca/IR_public/fuzzyJToolKit.html
![Page 6: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/6.jpg)
Interacción con Jess
• Jess es una librería para programadores.
• Posee 3 interfaces: mediante línea de comandos, consola o applets.
• Permite ampliarlo con otros interfaces. Para ello, provee un lenguaje de programación de scripts.
![Page 7: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/7.jpg)
Interacción con Jess (2)
• Jess provee un interfaz de línea de comandos a través de la clase “jess.Main”
c:\jdk> java jess.Main jess> ...
• Si se usa “jess.Console” se tiene un interfaz en modo gráfico (consola).
![Page 8: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/8.jpg)
Interacción con Jess (3)
• Jess está diseñado para integrarse en applets.
• Esta posibilidad sólo incorpora lo esencial de Jess para minimizar el tamaño de las páginas (no incorpora funciones opcionales).
• La clase “jess.ConsoleApplet” proporciona la posibilidad de incorporar un interfaz como el anterior en páginas web.
![Page 9: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/9.jpg)
Comunicación de valores:Store & Fetch
• Jess provee dos funciones “store” y “fetch” que almacenan y recogen valores.jess>(store RESULT (+ 2 3))
jess>(fetch RESULT)
5
• Java provee las mismas funciones y comparte el espacio de almacenamiento de dichos valores con Jess.
Rete rete_engine = new Rete(nd); rete_engine.fetch("RESULT");
![Page 10: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/10.jpg)
Comunicación de valores:Store & Fetch (2)
• La correspondencia entre los tipos de datos que manejan Java y Jess los da la clase “jess.Value”.
• Si se almacena un valor que ya existía, éste se sobreescribe y esta acción devuelve el valor que existía anteriormente.
• Cada motor de inferencia (objeto jess.Rete) tiene asociado un espacio separado de almacenamiento de este tipo.
![Page 11: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/11.jpg)
Clases de Jess
• Jess está programado en Java; sus clases se usan como cualquier otra.
• La clase “jess.Rete” es el motor de inferencia e implementa el algoritmo de rete.
• Existen clases para todo lo que se maneja con un lenguaje de reglas:Hechos, reglas, plantillas, clases, instancias,
átomos, strings, agendas, funciones, ....
• Además de otras clases interesantes (heredadas de la POO):Excepciones, routers, parser, estruct. de datos...
![Page 12: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/12.jpg)
Extender Jess
• Se pueden añadir nuevas funciones a Jess programadas en Java (Userfunction)
• También se puede añadir paquetes de funciones (Userpackage)
![Page 13: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/13.jpg)
Acceso a objetos Java
• Desde Jess se puede crear una instancia de cualquier clase de Java y acceder a sus métodos y atributos públicos:(defglobal ?*str-buf* = (new java.lang.StringBuffer
100))
(call ?*str-buf* append "Some String Data To Append")
• El orden de los argumentos es el que realiza el enlace entre la llamada y el método, y la equivalencia de tipos es la contemplada en la clase “jess.Value”.
![Page 14: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/14.jpg)
Jess en la WWW
• El sitio oficial de Jess en Internet se encuentra en: http://herzberg.ca.sandia.gov/jess/
• Se permite el uso libre en ámbitos educativos, sin fines comerciales.
• En esa página se puede descargar Jess, aceptando los términos de su licencia.
• Es la página con información relevante sobre Jess
![Page 15: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/15.jpg)
EL CASO DEL ASCENSOR
![Page 16: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/16.jpg)
Descripción
• Se trata de implementar una parte del ejercicio que se propone en el apéndice F del libro de Deitel & Deitel “Cómo programar en Java”.
• El ejercicio propone una aproximación incremental a la implementación de un simulador de un edificio con ascensores.
• El ejercicio completo toca todos los aspectos interesantes de la programación en Java (threads,excepciones,clases....).
![Page 17: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/17.jpg)
Historia del trabajo
• Se realiza una primera versión del problema del ascensor controlado por reglas.
• Dicha implementación posee una interfaz gráfica estática y un conjunto de reglas básico .
• Posteriormente, se realiza una nueva versión ampliando y mejorando diferentes aspectos.
![Page 18: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/18.jpg)
Primera versión
• La situación inicial era una implementación parcial del problema del ascensor.
• Objetivo: hacer funcionar un motor de inferencia conjuntamente con el ascensor.
• Se pretende que la política de movimientos del ascensor sea configurable mediante ficheros de reglas Clips.
![Page 19: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/19.jpg)
Ampliaciones realizadas (1)
• Se rediseña la GUI de la aplicación para facilitar el seguimiento de la ejecución de una forma más intuitiva.
• Se revisa el conjunto de reglas para eliminar o unificar reglas.
• Objetivo: desarrollar clases genéricas para simplificar al máximo la integración Java - Jess (paquete ISBC_Jess)
![Page 20: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/20.jpg)
Ampliaciones realizadas (2)
• Se amplía a múltiples ascensores.
• La aplicación es más genérica y fácilmente parametrizable.
• Se corrigen errores detectados.
![Page 21: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/21.jpg)
Comparación entre versiones (1)
![Page 22: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/22.jpg)
Comparación entre versiones (2)
![Page 23: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/23.jpg)
Comparación entre versiones (3)
![Page 24: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/24.jpg)
Comparación entre versiones (4)
![Page 25: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/25.jpg)
El motor de inferencia
![Page 26: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/26.jpg)
Control del edificio
![Page 27: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/27.jpg)
¿ Dónde interviene Jess ?
• El programa contiene una clase llamada “Controlador” que se ocupa de decidir la dirección del ascensor y su parada.
• Se trata de sustituir el engorroso código que contiene, por una base de conocimiento y un motor de inferencia en Jess.
![Page 28: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/28.jpg)
¿ Dónde interviene Jess ? (2)
• Se intentará que el programa al arrancar lea unos ficheros Clips en el que aparecen las reglas que usará para estas decisiones.
• Para ello, se utilizarán las clases desarrolladas para facilitar la integración Java - Jess (ISBC_Jess)
![Page 29: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/29.jpg)
Objetivos
• Aprender a enlazar el lenguaje Java con otro diferente (en este caso, Jess)
• Utilizar la interfaz gráfica de forma más sofisticada.
• Desarrollar la capacidad de análisis de código desarrollado anteriormente con el fin de optimizarlo y/o detectar errores.
• Manejo de Threads y excepciones en Java.
![Page 30: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/30.jpg)
Posibles ampliaciones
•Revisión de las reglas Clips con el objetivo de optimizarlas y dotarlas de mayor “inteligencia” (algoritmo del elevador).
•Intentar reducir el número de hechos que se asertan desde el código Java, para simplificarlo.
•Permitir que la interfaz gráfica no esté limitada a un número máximo de elementos (pisos, ascensores…) en la pantalla.
![Page 31: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/31.jpg)
Posibles ampliaciones (2)
• Incluir limitaciones físicas: ascensores con capacidad máxima…
• Generación de pasajeros más realista: en lugar de generarlos periódicamente y con destino aleatorio, establecer unas probabilidades de origen y destino.
![Page 32: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/32.jpg)
Paquete ISBC_Jess
![Page 33: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/33.jpg)
Problemas con Jess
• El código que se genera al integrar Jess es muy enrevesado.
•Jess no provee de métodos para realizar funcionalidades “comunes”.
•Se necesita un conocimiento algo profundo y detallado sobre Jess para utilizarlo.
![Page 34: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/34.jpg)
Descripción
• Desarrollo del paquete ISBC_Jess como envoltura de Jess.
•Se sitúa en un nivel intermedio entre Java y Jess.
•Contiene clases que provee de funcionalidades de interés habituales.
![Page 35: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/35.jpg)
Objetivos (1)
• El conocimiento necesario para utilizarlo sea mínimo, ocultando los detalles de Jess.
• El número de clases sea reducido.
•Automatizar al máximo las funcionalidades útiles (apertura y parseado de ficheros, control de excepciones…)
![Page 36: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/36.jpg)
Objetivos (2)
• Proveer una interfaz gráfica genérica para interaccionar con el sistema experto.
• En resumen: que el usuario únicamente tenga que preocuparse de desarrollar las reglas.
![Page 37: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/37.jpg)
Interfaz gráfica (1)
![Page 38: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/38.jpg)
Interfaz gráfica (2)
![Page 39: INTEGRACIÓN OBJETOS - REGLAS](https://reader036.vdocumento.com/reader036/viewer/2022062422/56813a55550346895da24c47/html5/thumbnails/39.jpg)
Interfaz gráfica (3)