También se puede añadir paquetes de funciones (Userpackage)
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”.
Jess en la WWW 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
EL CASO DEL ASCENSOR
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….).
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.
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.
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)
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.
Comparación entre versiones (1)
Comparación entre versiones (2)
Comparación entre versiones (3)
Comparación entre versiones (4)
El motor de inferencia
Control del edificio
¿ 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.
¿ 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)
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.
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.
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.
Página anterior | Volver al principio del trabajo | Página siguiente |