INTEGRACIÓN OBJETOS - REGLAS EL CASO DEL ASCENSOR

Slides:



Advertisements
Presentaciones similares
Internet y tecnologías web
Advertisements

Arquitectura de Sistema de E/S
Lenguaje Unificado de Modelado
Curso de Java Capitulo 7: Continuación Poo Profesor:
Hosting Antonio Damea Núñez.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
TEMA: SMTP – POP3 - IMAP.
Base de Datos Distribuidas FUNDAMENTOS DE BASES DE DATOS DISTRIBUIDAS
Servicios Web.
Tema 5 SRI Vicente Sánchez Patón I.E.S Gregorio Prieto
INTRODUCCION A CSS.
Programación Visual de Sistemas
¿QUÉ SON LAS BASES DE DATOS?
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Programación Orientada a Objetos
Javier López García OBJETIVOS DEL PROYECTO Diseñar una nueva arquitectura para SERVIVOX que le proporcione mayor modularidad y flexibilidad. Reestructurar.
RMI Remote Method Invocation
Aplicación del paradigma orientado a objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
PROGRAMACION ORIENTADA
Evaluación de Productos
Integracion clips + java
Cristina Porras Nicole Gargurevich Jose Pablo Porras Jose Daniel Fallas.
Con fines prácticos se puede clasificar al software en tres tipos: Software de sistema Software de programación Software de aplicación.
Universidad de La Coruña Escuela Universitaria Politécnica Control de Procesos por Computador Diego Cabaleiro 24 de Noviembre 2009.
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Un wiki o una wiki (del hawaiano wiki, 'rápido') es un sitio web cuyas páginas pueden ser editadas por múltiples voluntarios a través del navegador web.
Creando un conjunto de materiales para los medios de comunicación
TRADUCTOR DE UN PROGRAMA
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Weka.
 El primer navegador Web incluía un lenguaje de estilo interno que utilizaba dicho navegador para mostrar las páginas HTML.  Sin embargo estos primeros.
Programación Orientada a Aspectos (POA)
InfoPath Ventajas y Uso.
DISEÑO DE SOFTWARE 1ª. Parte
Fundamentos de programación
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Programación orientada a objetos
DATA WAREHOUSE Equipo 9.
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
SISTEMA DE EXPERTO SISTEMA DE EXPERTO.
Publicación de bases de datos Access en la web
WEBQUEST. ¿QUÈ ES UNA WEBQUEST?  Webquest significa indagación, investigación a través de la Web.  Consiste en presentarle al alumnado un problema,
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
INTRODUCCIÓN A GRETL Diana Ruiz Tinajero..
Aplicación y uso de la herramienta
Programación orientada a objetos Capítulo 6 Diseño de clases.
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Facultad de Ingeniería
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
TEMA 9: DIAGRAMA DE CLASE EN UML
SISTEMAS EXPERTOS (SE) Coronel Jaramillo Ricardo
Introducción a UML Departamento de Informática Universidad de Rancagua
Jorge De Nova Segundo. SSH File Transfer Protocol (también conocido como SFTP o Secure File Transfer Protocol) es un protocolo del nivel de aplicación.
UNIDAD V Bibliotecas de Funciones L.I. & M.S.C. OSCAR RAMÍREZ CORTÉS PROGRAMACIÓN DE SISTEMAS.
Luis Villalta Márquez Servicios SFTP/SCP. SFTP SSH File Transfer Protocol (también conocido como SFTP o Secure File Transfer Protocol) es un protocolo.
¿Qué es un ? El correo electrónico o fue una de las primeras aplicaciones creadas para Internet y de las que más se utilizan. Éste medio.
Ramas de I.A. ROBOTICA SISTEMAS DE VISION SISTEMAS EXPERTOS
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
Herencias Conceptos básicos i
Diccionario/Directorio de Datos
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Entregables del Proyecto
Sistemas de Comunicación Magistral Nro. 6 Capa 3: Red La Capa de Red provee principalmente los servicios de envío, enrutamiento (routing) y control de.
Transcripción de la presentación:

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

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

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.

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

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.

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

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.

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

Extender Jess Se pueden añadir nuevas funciones a Jess programadas en Java (Userfunction) 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 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

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.

Paquete ISBC_Jess

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.

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.

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

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.

Interfaz gráfica (1)

Interfaz gráfica (2)

Interfaz gráfica (3)