Anda di halaman 1dari 9

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.

Anda mungkin juga menyukai