Sistema Experto para Sugerir Ramas de Carrera Afn a Estudiantes
de la Carrera de Ing. Informtica de la UNT
Gian Vallejos Bardales Mayra Villanueva Ruz Estudiante Ing. Informtica Estudiante Ing. Informtica Universidad Nacional de Trujillo Universidad Nacional de Trujillo rgd.gp.vallejos@gmail.com mayraisabel.ruiz@gmail.com
RESMEN Vamos a implementar un sistema experto con el SWI Prolog haciendo uso de la librera XPCE, la cual ha sido desarrollada para el desarrollo en GUI Prolog desde el principio; que nos permite el desarrollo de aplicaciones graficas cuyo propsito ser aconsejar a un estudiante recin ingresado a la carrera de Informtica sobre los cursos o temas de su gusto y preferencia, y de acuerdo a ella recomendarle los cursos y toda la rama que implicara llevar. Para ello primero haremos una breve descripcin, con su respectiva importancia y luego el problema en s.
Trminos Generales: Algorithms, Prolog. Palabras clave PCE, sistema experto, cursos, carrera, informtica, rama de los cursos. 1. INTRODUCCIN La preocupacin por el progreso del bienestar social, ha suscitado un creciente inters por los medios para lograr el ajuste adecuado del individuo en lo que estudia. El objetivo que se pretende es tener un alto rendimiento en la aplicacin de pruebas de aptitudes con un bajo costo. sta puede medirse, conocerse y desarrollarse. De ah nace el propsito de crear un Sistema Experto, que permita medir la capacidad intelectual de sujetos para diversos fines de la carrera que ingres. La tecnologa representada por los Sistemas Expertos actuales, surge de las tcnicas de Inteligencia Artificial que han sido objeto de amplias e intensivas investigaciones desde finales de la dcada de 1950. La investigacin especfica en SE realmente comenz a mediados de los aos sesenta. Un SE es un conjunto de programas que son capaces, mediante la aplicacin de conocimientos, de resolver problemas en un rea determinada del conocimiento o saber que se requiere de la inteligencia humana. [1] Un SE es un programa que emula a un experto humano. Ahora bien, se considera que un experto humano es alguien que sabe mucho sobre un tema determinado y que puede dar un consejo adecuado. [2] Esta experiencia slo se adquiere tras un largo aprendizaje y a base de mucha experiencia. En la tabla 1 se hace una comparacin entre un sistema experto y un sistema clsico se puede apreciar que es ms confiable la utilizacin de un sistema experto y se obtiene un resultado ms rpido debido a que utiliza una base de conocimiento y un motor de inferencia.
Tabla 1: Comparacin de un sistema experto con un sistema clsico.
SISTEMA CLSICO SISTEMA EXPERTO Conocimiento y procesamiento combinados en un programa. Base de conocimiento separada del mecanismo de Procesamiento. No contiene errores. Puede contener errores. No da explicaciones. Forma el mdulo de explicacin. Los cambios son tediosos. Los cambios en las reglas son fciles. Slo opera completo. Puede funcionar con pocas reglas. Se ejecuta paso a paso. La ejecucin usa heursticas y lgica. Representa y usa datos. Representa y usa conocimiento.
1.1 Usos de un sistema experto Los sistemas expertos se desenvuelven en distintas reas del conocimiento; algunas de las ms utilizadas son la medicina, ingeniera, administracin, contabilidad, bolsa de valores. Veamos: > Cuando los expertos humanos, en una determinada materia son escasos. Un sistema experto es muy eficaz cuando tiene que analizar una gran cantidad de informacin, interpretndola y proporcionando una recomendacin a partir de la misma. Un ejemplo es el anlisis financiero, donde se estudian las oportunidades de inversin, dependiendo de los datos financieros de un cliente y de sus propsitos. > En situaciones complejas, donde la subjetividad humana puede llevar a conclusiones errneas. > Para detectar y reparar fallos en equipos electrnicos, se utilizan los sistemas expertos de diagnstico y depuracin, que formulan listas de preguntas con las que obtienen los datos necesarios para llegar a una conclusin. Este tipo de sistemas se utilizan tambin en medicina (ej. MYCIN y PUFF), y para localizar problemas en sistemas informticos grandes y complejos. > Predecir resultados futuros a partir del conocimiento que tienen. Los sistemas meteorolgicos y de inversin en bolsa son ejemplos de utilizacin en este sentido. El sistema PROSPECTOR es de este tipo. > Gestionar proyectos de desarrollo, planes de produccin de fbricas, estrategia militar y configuracin de complejos sistemas informticos, entre otros. > Cuando se necesita controlar un proceso tomando decisiones como respuesta a su estado y no existe una solucin algortmica adecuada, es necesario usar un sistema experto. Este campo comprende el supervisar fbricas automatizadas, factoras qumicas o centrales nucleares. > Evaluar el nivel de conocimientos y comprensin de un estudiante, y ajustar el proceso de aprendizaje de acuerdo con sus necesidades. 1.2 Arquitectura y funcionamiento de un sistema experto No existe una estructura de sistema experto comn. Sin embargo, la mayora de los sistemas expertos tienen unos componentes bsicos: base de conocimientos, motor de inferencia, base de datos e interfaz con el usuario. Muchos tienen, adems, un mdulo de explicacin y un mdulo de adquisicin del conocimiento. 1.2.1 Base de conocimientos (BC) Aqu se encuentran los conocimientos del experto humano, en forma ordenada y estructurada, el tipo de conocimiento es permanente en el sistema. Dicho conocimiento se codifica segn una notacin especfica que incluye reglas, predicados, redes semnticas y objetos. 1.2.2 Base de hechos (Base de datos) Memoria temporal de trabajo, que se utiliza para almacenar los datos recibidos inicialmente y contiene informacin sobre el problema particular del sistema debe resolver. 1.2.3 Motor de inferencia El que combina los hechos y las preguntas particulares, utilizando la base de conocimiento, seleccionando los datos y pasos apropiados para presentar los resultados; es decir, Modela el proceso de razonamiento humano que controla el proceso de razonamiento que seguir el sistema experto. 1.2.4 Interfaz de usuario Comunicacin entre el sistema experto y el usuario final por ello es necesario mostrar y obtener informacin de forma clara, fcil y agradable, sirve para que se pueda realizar una consulta en un lenguaje lo ms natural posible. Este componente es la forma en la que el sistema se presenta ante el usuario. Requisitos o Caractersticas de la interface que se presenta al usuario: a) Manejo rpido. b) Debe evitarse en lo posible la entrada de datos errneos. c) Los resultados deben presentarse en una forma clara para el usuario. d) Las preguntas y explicaciones debe ser comprensibles. 1.2.5 Modulo de Explicacin Explica al usuario la estrategia de solucin encontrada y el porqu de las decisiones tomadas las soluciones descubiertas por los expertos deben poder ser repetibles, esto es, las conclusiones deben de ser congruentes, exactas en los resultados. El usuario puede pedir explicacin de las conclusiones obtenidas o de las acciones que realiza el sistema experto. 1.2.6 Mdulo de adquisicin Permite que se puedan aadir, eliminar o modificar elementos de conocimiento en el sistema experto.
1.3 Ventajas e Inconvenientes de un Sistema Experto 1.3.1 Ventajas * Permanencia: A diferencia de un experto humano un SE (sistema experto) no envejece, y por tanto no sufre prdida de facultades con el paso del tiempo. * Duplicacin: Una vez programado un SE lo podemos duplicar infinidad de veces. * Rapidez: Un SE puede obtener informacin de una base de datos y realizar clculos numricos mucho ms rpido que cualquier ser humano. * Bajo costo: A pesar de que el costo inicial pueda ser elevado, gracias a la capacidad de duplicacin el coste finalmente es bajo. * Entornos peligrosos: Un SE puede trabajar en entornos peligrosos o dainos para el ser humano. * Fiabilidad: Los SE no se ven afectados por condiciones externas, un humano s (cansancio, presin, etc.)
1.3.2 Inconvenientes * Creatividad: los humanos pueden responder creativamente a situaciones inusuales, los sistemas expertos no pueden. * Experiencia Sensorial: los humanos tienen un amplio rango de disponibilidad de experiencia sensorial. Y los sistemas expertos actualmente dependen de una entrada simblica. * Degradacin: los sistemas expertos no son bueno para reconocer cuando no existen respuestas o cuando los problemas estn fuera de su rea. * Elevado costo en dinero y tiempo. * Son poco flexibles a cambios y de difcil acceso a informacin no estructurada.
1.4 Programacin Lgica (Prolog) 1.4.1 Introduccin PROLOG est orientado a la resolucin de problemas mediante el clculo de predicados, basado en: preguntas a la base de datos y pruebas matemticas. El programa PROLOG especfica cmo debe ser la solucin, en vez de dar el algoritmo para su resolucin; dicha solucin se obtiene mediante bsqueda aplicando la lgica de predicados. El programa PROLOG se compone de unos hechos (datos) y un conjunto de reglas, es decir, relaciones entre objetos de la base de datos. La ejecucin del programa cargado en memoria consiste en realizar una pregunta de forma interactiva: el intrprete generar por inferencia los resultados que se deducen a partir del contenido de la base de datos. PROLOG tiene una sintaxis y semntica simples. Slo busca relaciones entre los objetos creados, las variables y las listas, que son sus estructuras bsicas. 1.4.2 Caractersticas PROLOG hace ms eficiente el tratamiento simblico, y el sistema de representacin de conocimiento, as como la estructura de control o motor de inferencia y parte del sistema de entrada/salida de un lenguaje general de programacin de tareas. Prolog cuenta con: Un sistema de representacin del conocimiento en forma de clusulas (hechos y reglas) tambin llamado reglas de produccin. Un motor de inferencia de orden 1 que es el propio intrprete o compilador PROLOG, basado en la unificacin y la bsqueda en profundidad y la marcha atrs. Un sistema sencillo de dialogo. As que la realizacin de un SE en PROLOG se reduce a la presentacin y a los mdulos de justificacin de los resultados y explicacin del proceso. 1.4.3 Derivados * ALF (Another logical framework) Este lenguaje combina la programacin lgica con la programacin funcional (funcional basado en la evaluacin de expresiones y funciones matemticas ms que en la utilizacin de comandos como <alloc>, <malloc>). * Mercury programming language Mercury es un lenguaje de alto nivel (es decir, no se preocupa de problemas como la reserva y liberacin de memoria) derivado de Prolog, pero con una implementacin que le hace ser ms til para representar y tratar problemas del mundo real. Combina toda la expresividad del lenguaje declarativo con avanzadas tcnicas de anlisis esttico y deteccin de errores. * ACE, PALS: And/Or-Parallel Implementation of Prolog Es una implementacin de Prolog, pero que soporta una arquitectura multiprocesador
2. RAMAS DE CARRERA AFN 2.1. Planteamiento y Diseo Queremos realizar un sistema experto en el que de acuerdo a los gustos y habilidades en la informtica de los estudiantes de esta carrera, les sugiera una rama de especializacin. Para realizar este diseo hemos partido del diagrama de un rbol, en el que cada nodo tiene una pregunta asociada que se imprimir por pantalla y que el alumno tendr que responder, segn la respuesta que responda el programa se encaminar a la rama del nodo correspondiente a la respuesta elegida por el alumno. Una vez recorrido todo el rbol se llegar a una de las hojas del rbol que contendr la respuesta final. Hemos planteado el diseo de manera que el rbol sea binario, es decir a que el rbol tendr dos respuesta si o no. A continuacin se muestra una imagen (Figura 01) de una de las ramas que se han considerado. En este caso, tenemos como raz la pregunta Te gusta la geometra?, si la respuesta es si, se evala el siguiente nodo que consiste en otra pregunta Eres bueno en vectores?, en el caso de que la respuesta sea afirmativa, vamos a un ltimo nodo con la pregunta Te gustara hacer grficos en computadora?, obteniendo una pregunta afirmativa se concluir que la rama que el estudiante debe seguir es Computacin Grfica. En el caso de que alguna respuesta haya sido negativa se proceder a ir a otro rbol con preguntas diferentes.
Figura 01. rbol de la Rama Computacin Grfica. 2.2. Implementacin 2.1.1. Hiptesis: Inicializamos nuestro sistema experto creando la hiptesis, en donde si llega a la respuesta de cada rbol, realiza un corte. hipotesis(ingenieria_de_software) <- ingenieria_de_software,!. hipotesis(arquitectura_de_computad oras) <- arquitectura_de_computadoras,!. hipotesis(computacion_grafica) <- computacion_grafica,!. hipotesis(redes_de_computadoras) <- redes_de_computadoras,!. hipotesis(compiladores) <- compiladores,!. hipotesis(base_de_datos ) <- base_de_datos,!. hipotesis(sistemas_operativos ) <- sistemas_operativos,!. hipotesis(insuficiente_informacion). Si es que no se ha encontrado ninguna respuesta en nuestra base de conocimiento, devolveremos insuficiente_informacin. 2.1.2. Reglas de Identificacin: En la primera parte se mostrarn las races de cada rbol de acuerdo a la base de conocimiento. ingsw <- verifica('Te gusta analizar un problema real?'),!. arqui <- verifica('Te gustara manipular circuitos?'),!. Cgrafica <- verifica('Te gusta la geometra?'),!. Redes <- verifica('Te gustara comunicar datos entre computadoras?'),!. Comp<- verifica('Te gustara aprender sobre la teora de un computador?'),!. Bd<- verifica('Te gustara ver cmo se almacenan los datos?'),!. so <- verifica('Te gustara manipular el kernel de t computadora?'),!. Ahora se muestra la informacin de cada nodo de acuerdo al rbol. /* Ing de Software */ ingenieria_de_software<- ingsw, verifica ('Te gustara solucionar problemas de la vida real con una computadora?'),verifica('Te gustara sistematizar un problema?').
/* Arquitectura de Computadoras */ arquitectura_de_computadoras <- arqui, verifica ('Te gustara programar el hadware de una computadora?'), verifica ('Te gustara aprender un lenguaje de programacin de bajo nivel?'), verifica('Te gustara crear un robot?'). /* Computacin Grfica */ computacion_grafica <- cgrafica, verifica('Eres bueno en vectores?'),verifica('Te gustara hacer grficos en computadora?').
/* Redes de Computadoras */ redes_de_computadoras <- redes, verifica('Te gustara conectar en red varias computadoras?'),verifica('Te gustara solucionar problemas de redes?').
/* Compiladores */ Compiladores <- comp, verifica('Te gustara aprender qu son los lenguajes formales?'), verifica('Te gustara solucionar problemas mediante autmatas?').
/* Base de Datos */ base_de_datos <- bd, verifica ('Te gustara manipular grandes conjuntos de datos?'),verifica('Te gustara almacenar datos como sonido y videos eficientemente?').
/* Sistemas Operativos*/ sistemas_operativos<-so, verifica ('Te gustara inventar t propio sistema operativo?'), verifica('Quisieras resolver problemas muy grandes con herramientas complejas?').
2.1.3. Informacin de Ramas: En esta parte del cdigo, detallaremos la rama y los cursos que podra llevar un alumno de acuerdo a la informacin que se ha obtenido. /* Ing. de Software*/ Ramas (ingenieria_de_software) <- send(@lblExp1, selection('Rama: INGENIERA DE SOFTWARE.\nDebido a que te gusta hacer lo siguiente: Analizar un problema real, Solucionar problemas de la vida real con una computadora y sistematizar un problema.\n\nPODRAS LLEVAR LOS SIGUIENTES CURSOS: \nMetodologa e Ing. de Software I y II, Ingeniera de la Informacin, Modelamiento de Sistemas con Redes de Petri, Sistemas Orientados a Objetos y Topicos Especiales en Computacin I.\n\n')). /* Arquitectura de Computadoras */ Ramas (arquitectura_de_computadoras) <- send(@lblExp1, selection('Rama: ARQUITECTURA DE COMPUTADORAS.\nDebido a que te gusta hacer lo siguiente:Manipular circuitos, Programar el Hadware de una computadora, Aprender un lenguaje de programacin de bajo nivel y Crear un robot.\n\nPODRAS LLEVAR LOS SIGUIENTES CURSOS: \nIntroduccin a la Arquitectura de Computadoras, Tcnicas Digitales para Computacin, Arquitectura y Organizacin de Computadoras, Fisica I y II, Electrnica para computacin.\n\n')). /* Computacin Grfica */ Ramas (computacion_grafica) <- send(@lblExp1, selection('Rama: COMPUTACIN GRFICA.\nDebido a que te gusta hacer lo siguiente: Estudiar geometra, estudiar vectores y hacer grficos en computadora.\n\nPODRAS LLEVAR LOS SIGUIENTES CURSOS: \nComputacin Grfica I y II, Top. Espec. en Procesamiento Paraleloy Geometra Computacional.\n\n')). /* Redes de Computadoras */ Ramas (redes_de_computadoras) <- send(@lblExp1, selection('Rama: REDES DE COMPUTADORAS.\nDebido a que te gusta hacer lo siguiente: Comunicar datos, conectar redes y solucionar problemas de redes.\n\nPODRAS LLEVAR LOS SIGUIENTES CURSOS: \nFisica I y II, Electrnica para Computacin, Teleprocesamiento, Redes de Computadoras y Top. Espec. en Redes de Computadoras.\n\n')). /* Compiladores */ Ramas (compiladores) <- send(@lblExp1, selection('Rama: COMPILADORES.\nDebido a que te gusta hacer lo siguiente: Aprender sobre teora del computador, lenguajes formales y solucionar problemas mediante autmatas.\n\nPODRAS LLEVAR LOS SIGUIENTES CURSOS: \nTeora de la Computacin, Lenguajes Formales y Autmatas, Compiladores y Laboratorio de Compiladores.\n\n')). /* Base de Datos */ Ramas (base_de_datos) <- send(@lblExp1, selection('Rama: BASE DE DATOS.\nDebido a que te gusta hacer lo siguiente:Ver cmo se almacenan los datos, manipular conjuntos de datos y almacenar datos como audio y video. \n\nPODRAS LLEVAR LOS SIGUIENTES CURSOS: \nOrganizacin de Archivos, Base de Datos I y II, Top. Espec. en Base de Datos y laboratorio de Base de Datos.\n\n')). /* Sistemas Operativos */ Ramas (sistemas_operativos) :- send(@lblExp1, selection('Rama: SISTEMAS OPERATIVOS.\nDebido a que te gusta hacer lo siguiente: Manipular el kernel de t computadora, inventar t propio sistema operativo y resolver grandes problemas.\n\nPODRAS LLEVAR LOS SIGUIENTES CURSOS: \nSistemas Operativos I y II y Top. Especiales en Sistemas Operativos.\n\n')).
3. EJECUCIN Inicialmente aparece la pantalla de inicio (Figura 02). Figura 02. Pantalla de Inicio Al acceder procedemos a iniciar la consulta (Figura 03), en esta ejecucin de ejemplo, responderemos afirmativamente a las preguntas de la Figura 04, 05 y 06. Figura 03. Men Principal.
Figura 04. Pregunta nmero uno
Figura 05. Pregunta nmero dos
Figura 06. Pregunta nmero tres Luego de responder ciertas preguntas afirmativamente, el sistema nos da un diagnstico (Figura 07). Figura 07. Resultado luego de responder preguntas Finalmente, si deseamos podemos ver la descripcin y las recomendaciones hechas por el sistema de acuerdo a las preguntas respondidas previamente. (Figura 08). Figura 08. Descripcin y Recomendaciones Segn las preguntas previamente respondidas, el sistema experto nos da la rama de la carrera a la que el alumno podra orientarse y sugiere algunos cursos de la carrera de Informtica que este podra llevar.
4. REFERENCIAS [1] Snchez y Beltrn, J. P., Sistemas Expertos una metodologa de programacin. Editorial Macrobit, 1990. [2] Rolston, D.W., Principios de Inteligencia Artificial y Sistemas Expertos, Mxico, Mc.Graw-Hill. [3] Pasi Eronen and Jukka Zitting, An expert system for analyzing firewall rules, Proceedings of the ElectronicTechnology, Helsinky University of Technology, pp. 1-8 (2001). *4+ A. Barcel J., El uso de sistemas expertos en la interpretacin de clasificaciones estadsticas multidimensionales, Complutum, C.N.R.S. Unit Propre deRecherches, pp. 41-51 (1991) [5] Orenga y Ortega, J.M., PROLOG: Introduccin a la Programacin de los Sistemas Expertos. Rama.