1 / 39

INTEGRACIÓN OBJETOS - REGLAS

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.

gilda
Télécharger la présentation

INTEGRACIÓN OBJETOS - REGLAS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INTEGRACIÓN OBJETOS - REGLAS EL CASO DEL ASCENSOR David Portolés Rodríguez

  2. ÍNDICE • Integración Java - Jess • El caso del ascensor • Paquete ISBC_Jess

  3. JAVA - JESS

  4. ¿ 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).

  5. 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

  6. 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.

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

  8. 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.

  9. 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");

  10. 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.

  11. 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...

  12. Extender Jess • Se pueden añadir nuevas funciones a Jess programadas en Java (Userfunction) • También se puede añadir paquetes de funciones (Userpackage)

  13. 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”.

  14. Jess en la WWW • El sitio oficial de Jess en Internet se encuentra en: http://herzberg.ca.sandia.gov/jess/ (ejfried@ca.sandia.gov) • 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

  15. EL CASO DEL ASCENSOR

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

  17. 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.

  18. 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.

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

  20. 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.

  21. Comparación entre versiones (1)

  22. Comparación entre versiones (2)

  23. Comparación entre versiones (3)

  24. Comparación entre versiones (4)

  25. El motor de inferencia

  26. Control del edificio

  27. ¿ 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.

  28. ¿ 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)

  29. 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.

  30. 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.

  31. 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.

  32. Paquete ISBC_Jess

  33. 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.

  34. 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.

  35. 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…)

  36. 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.

  37. Interfaz gráfica (1)

  38. Interfaz gráfica (2)

  39. Interfaz gráfica (3)

More Related