Expert Systems on Database Architecture (ESDA) Gabriela García Velazco, gabriela.garcia@upt.edu.mx, Israel Villar Medina villar_israel@yahoo.com Universidad Politécnica de Tulancingo Resumen Este trabajo propone una arquitectura llamada ESDA para aplicar las tecnologías de inteligencia artificial (IA) que por medio de bases de datos resuelva problemas donde las tomas de decisiones son demasiado complejas y ayude a la simplificación del desarrollo de software. Se utilizan como elementos de la arquitectura los procedimientos almacenados, triggers y funciones que fungen como el motor de inferencia de tipo Forward chaining y la base de conocimientos es colocada en tablas que son definidas para tal fin y describe la forma en que deben ser utilizados. Al final la interacción entre estos elementos y sistemas de información existentes en cualquier ámbito ayudan a solucionar problemas donde solo un experto humano es convencionalmente utilizado. Palabras Claves Inteligencia Artificial, Sistemas expertos, Bases de datos Inteligentes, Procedimientos, Triggers, lógica difusa Estado del Arte En la última década ha surgido el concepto de base de datos inteligentes, tal es el caso de SQLf 2 que incluyen aspectos de Base de datos Activas, Bases de datos Deductivas, Bases de Datos Orientadas a Objetos y Restricciones de Integridad. Recientemente Goncalves y Tineo han desarrollado SQLfi que es un prototipo para aplicaciones Web, que usa lógica difusa con SQL, el cuál fue programado mediante Java y se emplea como una herramienta de Evaluación de cursos y Docentes. En el ámbito del software Educativo, Márquez se enfoca a la Enseñanza Inteligente Asistida por Ordenador (EIAO), mediante el uso de bases de datos, Sistemas Expertos e Inteligencia Artificial, buscando imitar la labor tutorial personalizada que realizan los profesores mediante un modelo de representación del conocimiento en consonancia con los procesos cognitivos que desarrollan los alumnos, así lo refiere también Monereo en su artículo “Internet Search and Navigation Strategies Used by Experts and Beginners” quien enfoca el constructivismo con la teoría de Aprende a aprender a través de sitios web. Otro ejemplo es Cañas quien aplica el desarrollo de mapas conceptuales, para colaborar en el aprendizaje mediante la construcción y crítica de conocimiento y la navegación a través de sistemas de multimedia en red creados por expertos. En el ámbito de software empotrado encontramos el software EXAUSTIF, que es una herramienta de inyección de fallos por software para sistemas empotrados heterogéneos, el cual usa una base de datos de SQL para almacenar resultados de los análisis después de la inyección En el área de desarrollo de arquitecturas de sistemas encontramos a Galindo quien en su trabajo “Sistemas Evolutivos: Nuevo paradigma de la informática”, plantea algunos métodos y algoritmos para resolver problemas en Informática involucrando áreas como el Desarrollo de Sistemas, la Ingeniería de Software, la Ingeniería de Conocimiento y el uso de reglas para explicar el funcionamiento de un analizador lingüístico. Introducción Los programas de IA que alcanzan la capacidad de un nivel experto del área en la solución de problemas aplicando un cuerpo del conocimiento sobre áreas específicas se llaman Sistemas Basados en Conocimiento o Sistemas Expertos. Los sistemas expertos tienen conocimientos específicos sobre un tema, dados por un experto humano en un área particular y son colocados dentro del programa junto con reglas heurísticas, los cuales son motivo de este trabajo, y por medio de un caso práctico se mostrará su utilización en un una arquitectura total de SQL server 2008 de tal forma en que se almacenara conocimiento e inferimos conocimiento para solucionar problemas y obtener resultados. Los sistemas expertos estudian la simulación de los procesos intelectuales de los expertos humanos como son la interpretación de datos, el diagnóstico, la corrección, la monitorización, el control, la predicción, la planificación, el diseño y la enseñanza Así existen expertos humanos en muchas áreas del conocimiento, que pueden resolver problemas específicos de un área en particular, un sistema de cómputo debe contener el saber y la lógica del experto para resolver el problema. Los sistemas expertos usarán esta base de conocimientos y mediante el procesamiento de este y de algunas reglas llegarán a un resultado deseado. Es decir llevarán un conocimiento declarativo y procesal. Partes de un sistema Experto A la construcción de un sistema experto se conoce como ingeniería de conocimiento. Los componentes de un sistema experto son: 1. El motor de inferencia 2. La Base de hechos 3. La Base de Conocimiento 4. Interfaz con el usuario En la base de conocimiento (knowledgebase) se guarda todo el saber del experto humano sobre el área en particular que se va a trabajar, esta información permanece invariable y se denomina hechos. Los hechos representan la estructura dinámica del conocimiento ya que su número puede verse incrementado a medida que se van relacionando las reglas. El conocimiento puede ser: Declarativo, es decir contener información específica de objetos, eventos o situaciones. Procesal, es decir que indica que hacer, este se usa para crear reglas de producción de tipo if- then o meta reglas. El motor de inferencia o de razonamiento, es el programa que se encarga de determinar cómo se van a usar las reglas de la base de conocimientos, accede a dichas reglas, las ejecuta y determina si ha llegado a una solución útil o no. El motor de inferencia es el motor de inferencia es el cerebro del sistema experto, La interfaz del usuario es el medio por el cual se comunican el usuario y el sistema experto. Base hechos de Motor de inferencia Interfaz con el usuario Interfaz con el experto Experto Base de conocimientos Ingeniería del conocimiento Ilustración I. Esquema de un sistema Experto Usuario Inferencias Las inferencias son el proceso por medio del cual el sistema experto reconoce que regla aplicar. La inferencia tiene dos metodologías principales: El encadenamiento progresivo. También se le conoce como foward chaining, esta metodología de inferencia permite corregir un problema denominado conflicto de reglas, este conflicto se genera cuando dos o más reglas que tenemos se cumplen. El encadenamiento progresivo tiene tres etapas: o En la primera se recorren las reglas y se ve cuáles cumplen con los valores, es decir ser disparadas. o En la segunda etapa se decide cuáles reglas pueden ser disparadas, mediante una metodología implementada, regla al azar, un sistema basado en pesos de acuerdo a su importancia, o mediante lógica difusa o redes neuronales. o En la tercera etapa se dispara la regla, es decir se ejecuta el procedimiento que tiene ligado a la regla o cambiar los valores correspondientes en la memoria de trabajo. El encadenamiento regresivo o backward chaining es inverso al encadenamiento progresivo, es decir se tendrá un resultado y se buscará cuáles son las reglas que al disparase crean ese resultado. Este tipo de inferencia es más difícil de programar, pero más efectiva. Desarrollo de la arquitectura ESDA Esta arquitectura será independiente de la base de datos y de la aplicación. La Arquitectura ESDA integrará todas las reglas del negocio de tal forma que si estas cambian o se actualizan no afecten su funcionamiento. Al existir cambios en las reglas de negocio, estos se reflejarán sobre la arquitectura ESDA, modificando solo el sistema experto y sus componentes. La arquitectura ESDA se integró mediante: 1. Procedimientos, Triggers y funciones que actuarán como el motor de inferencia en el gestor de base de datos he aquí el motor de inferencia. CREATE PROCEDURE [dbo].[Inferir] AS BEGIN Execute dbo.Inicializa_memoria_Trabajo Execute dbo.Asignar_HechosIniciales DECLARE @HASMORERULES BIT DECLARE @IDR VARCHAR(30), @VARDISP BIT , @SECUMPLE BIT SET @HASMORERULES=1 WHILE @HASMORERULES=1 BEGIN SET @HASMORERULES=0 DECLARE regla_cursor CURSOR FOR Select id_regla, VAR_DISPARADA, dbo.SeCumpleRegla(id_regla) AS SECUMPLE from reglas OPEN regla_cursor FETCH NEXT FROM regla_cursor INTO @IDR, @VARDISP, @SECUMPLE WHILE @@FETCH_STATUS = 0 BEGIN IF @SECUMPLE=1 AND @VARDISP=0 BEGIN PRINT @IDR SET @HASMORERULES=1 EXEC ASIGNAR_CONSECUENTE @ID END FETCH NEXT FROM regla_cursor INTO @IDR, @VARDISP, @SECUMPLE END CLOSE regla_cursor DEALLOCATE regla_cursor END UPDATE dbo.VAR_META SET valor = (SELECT VALOR FROM dbo.VARIABLES WHERE dbo.VAR_META.NOMBRE=dbo.VARIABLES.NOMBRE) END 2. Las tablas se usaron para registrar los hechos y las reglas que dieron la funcionalidad al motor de inferencia. 3. En las tablas también se registraron las variables del sistema experto, así como la variable meta. Ilustración II Tablas que integran la base de conocimiento de ESDA 4. La relación entre sus elementos permitió el funcionamiento del sistema experto a nivel de base de datos. 5. El sistema experto trabaja mediante un Forward chaining dados los hechos realiza las inferencias por medio de las reglas establecidas hasta llegar a alcanzar la variable meta o un estado en el que todas las reglas que los hechos dispararon no son suficientes para alcanzar la variable meta y por lo tanto no existe una inferencia útil. Ilustración III. Integración de la arquitectura ESDA Caso Práctico Dicha Arquitectura se implementó en una fábrica de ropa a la medida, donde sus clientes son de una gran cantidad de trabajadores y cada corte de prenda es único, debido a la persona , prenda, modelo, talla, y obviamente las medidas corporales de la persona. La problemática radicaba en que cada temporada se llamaba a los programadores para incorporar todos los detalles a considerar en cada prenda y modelo, lo era una adecuación al software para cada una de estas prendas, La fábrica permitió considerar el lenguaje de reglas en su haber y dichas reglas fueron colocadas en el ESDA sin modificar su software existente solo se empotro la Arquitectura ESDA a nivel de base de datos. Con las variables definidas se establecen las reglas, a continuación se encuentra una muestra de ellas: La Regla 1. Determina el aumento de centímetros que deberá hacerse en la cintura del pantalón al momento de cortarse en base a la prenda y el modelo cuando la diferencia entre la talla de la cintura estándar y la medida de la cintura de la persona es >=5, devolviendo la indicación de aumentar 2 cm. ID_RULE RULE_TYPE DESCRIPTION ANTECEDENT 1 F0001 AUMENTA LA CINTURA DEL PANTALÓN 0001 VARIABLE PRENDA MODELO CINTURAPANT OPERADOR = = >= VALOR FALDA 0001 5 CONSECUENT CINTURAPANT CONECTION SYMBOL END RULE_TYPE 2 AND La regla 2. Determina disminuir centímetros de la cintura en el caso que la diferencia entre la talla de la cintura estándar y la medida de la cintura de la persona sea <=5, devolviendo la indicación de disminuir 2 cm al corte. ID_RULE RULE_TYPE DESCRIPTION ANTECEDENT 2 F0001-2 DISMINUYE LA CINTURA DEL PANTALÓN 0001 VARIABLE PRENDA MODELO CINTURAPANT OPERADOR = = <= VALOR FALDA 0001 -5 CONSECUENT TALLERES CONECTION SYMBOL END RULE_TYPE -2 AND Resultados: La utilización de sistemas expertos en diferentes ámbitos complejos dejando al Sistema Gestor de Bas de Datos da la facilidad de separar la programación de aplicaciones y de la definición de la base de datos. En el caso práctico ha permitido administrar a los usuarios finales las reglas sin necesidad y/o dependencia a los programadores de sus aplicaciones. Por otro lado el caso práctico mostro que el usuario final tarda 5 minutos en la definición de una regla para cada uno de los sus modelos nuevos en cada temporada. Lo que al final en 200 prendas de temporadas ocupa 1000 minutos equivalentes a 2 días de jornadas, en contra parte el programador del software administrador de su producción tomaría 2 semas en programar los cambios debido a la complejidad de decisiones y las tareas inherentes a su trabajo, como la identificación del código, crear la clase modelo, definir atributos y métodos, fase de pruebas, fase de implementación y mantenimiento evolutivo. En el caso de estudio ha quedado demostrado no solo la reducción del tiempo sino además la dependencia del programador –usuario final. El aporte de esta Arquitectura (ESDA) va a permitir a los desarrolladores de Software de ambientes complejos quitar esa programación de dinámica en el devenir histórico de la empresa y dejárselo al usuario final con una arquitectura fácil de usar. Dias de Jornada 12 10 8 Dias de Jornada 6 4 2 0 Programación de Aplicación ESDA Los usuarios finales no dependerán de un equipo de programadores solo del experto en su tema para lamentar las reglas en ESDA. Trabajo futuro. Este trabajo queda abierto para su implementación en cualquier gestor de base de datos y bajo cualquier solución que requiera la implementación de la ingeniería del conocimiento aplicado a cualquier problema de forma que se reduzca el trabajo del programador y de soporte a las aplicaciones. Referencias 1. Arrioja, L.C.N., Inteligencia artificial. 2007, Argentina: sociedad impresora americana,. 2. Brenan, R., Base de datos inteligentes, in Simposio SICTE '91. 1991, Revista Univeridad Eafit: Medellin. p. 47-67. 3. Cañas, A.F., KM. Coffey, J. Reichherzer, T, Herramientas Para Construir y Compartir Modelos de Conocimiento Basados en Mapas Conceptuales. Revista de informática educativa, 2000. 13(2): p. 145-158. 4. DARPA, W., Morrow, Gschwendtner, DARPA Neural Networks Study. AFCEA International Press, 1988: p. 60. 5. Goncalves, M.T.L., SQL FlexibleQuery Language Extension by means of norm SQL2, in The 10th IEEE International conference on Fuzzy Systems. 2001. p. 473-476. 6. Goncalves, M.T.L., SQLfi and its Applications. Revista Avances en Sistemas e Informática 2008. 5(2). 7. Marqués, P., Software educativo: guía de uso y metodología de diseño. Estel, 1995. 8. Monereo, C.F., M., Internet Search and Navigation Strategies Used by Experts and Beginners. Interactive Educational Multime, 2000(1): p. 24-34. 9. Piattini, M.D.M., A . , Diseño de Bases de Datos Relacionales. 2004, México, D.F.: RAMA editorial. 576. 10. Russell, S.J.N., P, Inteligencia Artificial, Un enfoque Moderno. Segunda ed. 2004, Madrid: Pearson Prentice Hall. 1240. 11. Tineo, L., Definición de datos en SQLf, in XLVII Convención anual de la Asociación Venezolana para el Avance de la ciencia AsoVAC96. 1997: Medellin. p. 223. 12. Tineo, L., Interrogaciones Flexibles en Bases de Datos Relacionales. . 1998: Medellín. p. 115. 13. Vivar, L.C., Sistemas de Bases de Datos Activas: disparadores y reglas, in Facultad de Ingenieria en Ciencias y sistemas. 2003, Universidad de San Carlos de Guatemala: Guatemala. p. 136. 14. Da Silva, J.M., J.F. López, L. Redondo, L., Exhaustif: Una herramienta de inyección de fallos para sistemas empotrados distribuidos heterogénesos. RPM - AEMES, 2007. 4(1). 15. Brenan, R., Base de datos inteligentes, in Simposio SICTE '91. 1991, Revista Univeridad Eafit: Medellin. p. 47-67. 16 Len, B. Clements, P. Kazman, R. Software Architecture in practice, Second Ed, Adison wesley, Boston:2005, ISBN: 0321154959 17 Date, C.J., Introducción a los sistemas de bases de datos. 2001: México, Pearson Educación ISBN: 968-444-419-2 18 E. Castillo, J. Gutierrez, A. Hadi, “Sistemas Expertos y Modelos de Redes Probabilisticas”, Monografías de la Academia Española de Ingeniería, Madrid, 1998 19 S. David, “Expert systems for software engineers and managers”, Chapman and Hall : London, 1987 20 G. Guida, C. Taso, “Topics in expert system design: methodologies and tools”, North- Holland, Amsterdam, 1989 21 Galindo, S. F., Sistemas Evolutivos: Nuevo paradigma de la informática, Ciencías de la informática UPIICSA- IPN, México: 1990 Viteri, K. Salazar, C. Salazar, C. Paredes, C. Muñoz, J.L. Algoritmos Genéticos: http://www.fiec.espol.edu.ec/investigacion/topico/tabusearch.pdf consultado el 28 de Julio de 2009