Estudiante Ing. Informtica Universidad Nacional de Trujillo jhefersito-tlv@hotmail.com
Asesor: Arturo Daz Pulido Resumen Implementaremos un sistema experto usando Prolog, cuyo objetivo ser aconsejar a un usuario cliente sobre la mejor opcin que puede tomar a la hora de elegir qu carrera estudiar. Para ello primero haremos una breve descripcin sobre los temas a tratar en nuestro proyecto y luego desarrollaremos el SE en prolog. Trminos generales Algoritmos, Diseo, Implementacin Palabras Clave Prolog, sistema experto, orientacin vocacional, preguntas
1. Introduccin Los sistemas expertos son llamados as porque emulan el razonamiento de un experto en un dominio concreto, y en ocasiones son usados por stos. Con los sistemas expertos se busca una mejor calidad y rapidez en las respuestas, dando as lugar a una mejora de la productividad del propio experto al usar este tipo de sistemas informticos.
Castillo Farfn George Estudiante Ing. Informtica Universidad Nacional de Trujillo gek94@hotmail.com
1.1 Usos de un SE Un sistema experto es muy eficaz cuando tiene que analizar una gran cantidad de informacin. Existen sistemas expertos para diagnosticar y depurar, los cuales formulan listas de preguntas con las que obtienen los datos que son necesarios para llegar a una conclusin Para organizar, existen diversos sistemas expertos que organizan los datos utilizando la informacin ingresada da a da y la forma en la que se acomoda. Los sistemas expertos sobre meteorologa y la inversin en bolsa son ejemplos de sistemas expertos que son buenos para predecir resultados a futuros a partir del conocimiento que tienen.
1.2 Arquitectura y funcionamiento de un sistema experto 1.2.1 Base de Conocimientos Contiene el conocimiento especializado extrado del experto en el dominio. Una de las caractersticas ms importantes es que la base de conocimientos es independiente del mecanismo de inferencia que se utiliza para resolver los problemas. De esta forma se pueden aadir reglas nuevas, eliminar las antiguas o corregir errores en las existentes.
1.2.2 Base de datos Es una parte de la memoria del ordenador que se utiliza para almacenar los datos recibidos inicialmente para la resolucin de un problema.
1.2.3 Motor de inferencias Es un programa que controla el proceso de razonamiento que seguir el sistema experto, es decir, modela el proceso de razonamiento humano.
1.2.4 Interfaz con el usuario Es la que permite al usuario describir el problema en el sistema experto. Interpreta sus preguntas, los comandos, la informacin ofrecida, etc. Y responde a los cuestionamientos dando explicaciones y justificaciones.
1.2.5 Modulo de explicacin Est diseado para aclarar al usuario la lnea de razonamiento seguida en el proceso de inferencia.
1.2.6 Modulo de adquisicin Permite que se puedan aadir, eliminar o modificar elementos de conocimiento.
1.3 Ventajas e Inconvenientes de un Sistema Experto 1.3.1 Ventajas Con el uso de un SE se logran soluciones ms fiables gracias al tratamiento automtico de los datos. Un SE mejor la calidad y confiabilidad al resolver y decidir los problemas ms rpidamente. El uso de un SE permite de muchas maneras el ahorrar tiempo y dinero. Aunque desaparezca el especialista en ciertos temas, el SE puede almacenar y difundir sus valiosos conocimientos. Tienen flexibilidad, modularidad, modificabilidad y legibilidad.
1.3.2 Inconvenientes Su elevado costo de desarrollo No utilizan razonamiento por analoga. No pueden decidir inmediatamente algo que an no ha estudiado. La complejidad a la hora de representar el conocimiento humano debido a que estn limitadas a tratar problemas teniendo informacin an incompleta. 1.4 Prolog 1.4.1 Introduccin a Prolog Prolog es un lenguaje de programacin creado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Ms exactamente, el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones. Un conjunto de reglas que describa estas propiedades y estas relaciones es un programa PROLOG. Una definicin ms accesible para el usuario comn sera:
Prolog es un lenguaje de programacin que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos.
Su definicin basada en la lgica formal, permite ejecutar estatutos que no son otra cosa que oraciones de un lenguaje lgico elemental particular de clusulas. Prolog por su naturaleza muestra una habilidad para describir gramticas, en particular gramticas libres de contexto.
ESTRUCTURA Un programa Prolog est formado por una secuencia de enunciados (clusulas): hechos, reglas y variables.
Lo anterior se detalla a continuacin
Hechos Expresan relaciones entre objetos. Supongamos que queremos expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relacin llamada "tiene".
La forma de representarlo en PROLOG es:
tiene(coche,ruedas).
Algunas caractersticas de los hechos son:
Los nombres de objetos y relaciones deben comenzar con una letra minscula. Primero se escribe la relacin, y luego los objetos separados por comas y encerrados entre parntesis. Al final de un hecho debe ir el carcter "." (punto). El orden de los objetos dentro de la relacin es arbitrario, pero debemos ser coherentes a lo largo de la base de hechos.
Reglas Las reglas se utilizan en Prolog para significar que un hecho depende de uno o ms hechos. Es la representacin de las implicaciones lgicas del tipo p ---> q (p implica q).
Algunas caractersticas son:
Una regla consiste en una cabeza y un cuerpo, unidos por el signo " :- ". La cabeza esta formada por un nico hecho. El cuerpo puede ser uno o ms hechos (conjuncin de hechos), separados por una coma (","), que acta como el "y" lgico. Las reglas finalizan con un punto (".").
Variables Representan objetos que el mismo PROLOG determina. Una variable puede estar instanciada o no instanciada. Esta instanciada cuando existe un objeto representado por una variable. De este modo, cuando preguntamos Un coche tiene X ?,
Prolog busca en los hechos cosas que tiene un coche y respondera:
X = ruedas. Instanciando la variable X con el objeto ruedas.
Los nombres de variables comienzan siempre por una letra mayscula.
Como ya nombramos las clusulas haremos el siguiente razonamiento lgico:
tiempo(lluvioso) ----> suelo(mojado)
suelo(mojado)
Que el suelo est mojado, es una condicin suficiente de que el tiempo sea lluvioso, pero no necesaria. Por lo tanto, a partir de ese hecho, no podemos deducir que est lloviendo (pueden haber regado las calles). La representacin correcta en Prolog, sera:
suelo(mojado) :- tiempo(lluvioso).
suelo(mojado).
Cabe sealar que la regla esta "al revs". Esto es as por el mecanismo de deduccin hacia atrs que emplea Prolog.
1.4.2 Caractersticas de Prolog Basado en lgica y programacin declarativa Produce estilo de programacin orientado a metas No se especifica cmo debe hacerse, sino qu debe lograrse(alto nivel) El programador se concentra ms en el conocimiento que en los algoritmos
2. Orientacin Vocacional 2.1 Planteamiento y Diseo 1. La idea es realizar un test de orientacin vocacional que nos sugiera algunas alternativas de carreras universitarias a elegir de acuerdo a las caractersticas demandadas por cada usuario. Para realizar este diseo hemos partido de un diagrama en rbol en que cada nodo tiene una pregunta para responder y eso se imprimir en pantalla para que el cliente pueda responder y de acuerdo a lo que l responda, es decir, dependiendo de la opcin que l tome, el rbol decidir hacia donde ir y de qu forma recorrer por los nodos. El cliente tendr por cada pregunta, dos opciones de SI o NO para elegir y habr restricciones cuando elija dos opciones que no concuerden, por ejemplo: Si escoge que es hombre, no puede elegir que es mujer. 2.2 Implementacin esrespuesta('si'). esrespuesta('no'). % AREA I: ARTE Y CREATIVIDAD. espregunta('Ilustrar, dibujar y animar digitalmente',X):- esrespuesta(X). espregunta('Tocar un instrumento y componer msica',X):- esrespuesta(X). espregunta('Disear logotipos y portadas de una revista',X):- esrespuesta(X). espregunta('Pintar, hacer esculturas, ilustrar libros de arte, etctera',X):-esrespuesta(X). espregunta('Prepararse para ser modelo profesional',X):- esrespuesta(X). espregunta('Disear juegos interactivos electrnicos para computadora',X):-esrespuesta(X). espregunta('Redactar guiones y libretos para un programa de televisin',X):-esrespuesta(X). espregunta('Crear campaas publicitarias',X):-esrespuesta(X). %% AREA II: CIENCIAS SOCIALES. espregunta('Realizar excavaciones para descubrir restos del pasado',X):-esrespuesta(X). espregunta('Organizar eventos y atender a sus asistentes',X):- esrespuesta(X). espregunta('Defender a clientes individuales o empresas en juicios de diferente naturaleza',X):-esrespuesta(X). espregunta('Investigar las causas y efectos de los trastornos emocionales',X):-esrespuesta(X). espregunta('Escribir artculos periodsticos, cuentos, novelas y otros',X):-esrespuesta(X). espregunta('Estudiar la diversidad cultural en el mbito rural y urbano',X):-esrespuesta(X). espregunta('Gestionar y evaluar convenios internacionales de cooperacin para el desarrollo social',X):-esrespuesta(X).
%% AREA III: ECONOMICA, ADMINISTRATIVA Y FINANCIERA. espregunta('Seleccionar, capacitar y motivar al personal de una organizacin/empresa',X):- esrespuesta(X). espregunta('Planificar cules son las metas de una organizacin pblica o privada a mediano y largo plazo',X):- esrespuesta(X). espregunta('Controlar ingresos y egresos de fondos y presentar el balance final de una institucin',X):- esrespuesta(X). espregunta('Hacer propuestas y formular estrategias para aprovechar las relaciones econmicas entre dos pases',X):- esrespuesta(X). espregunta('Elaborar campaas para introducir un nuevo producto al mercado',X):- esrespuesta(X). espregunta('Supervisar las ventas de un centro comercial',X):- esrespuesta(X). espregunta('Aconsejar a las personas sobre planes de ahorro e inversiones',X):- esrespuesta(X). espregunta('Tener un negocio propio de tipo comercial',X):- esrespuesta(X). espregunta('Organizar un plan de distribucin y venta de un gran almacn',X):- esrespuesta(X).
%% AREA IV: CIENCIA Y TECONOLOGIA. espregunta('Disear programas de computacin y explorar nuevas aplicaciones tecnolgicas para uso del internet',X):- esrespuesta(X). espregunta('Resolver problemas de clculo para construir un puente',X):-esrespuesta(X). espregunta('Disear y planificar la produccin masiva de artculos',X):-esrespuesta(X). espregunta('Concebir planos para viviendas, edificios y ciudadelas',X):-esrespuesta(X). espregunta('Investigar y probar nuevos productos farmacuticos',X):-esrespuesta(X). espregunta('Disear mquinas que puedan simular actividades humanas',X):-esrespuesta(X). espregunta('Elaborar mapas, planos e imgenes para el estudio y anlisis de datos geogrficos',X):-esrespuesta(X).
%% AREA V: CIENCIAS ECOLOGICAS, BIOLOGICAS Y DE SALUD. espregunta('Criar, cuidar y tratar animales domsticos y de campo',X):-esrespuesta(X). espregunta('Investigar sobre reas verdes, medio ambiente y cambios climticos',X):-esrespuesta(X). espregunta('Disear cursos para ensear a la gente sobre temas de salud e higiene',X):-esrespuesta(X). espregunta('Atender la salud de personas enfermas',X):- esrespuesta(X). espregunta('Hacer experimentos con plantas (frutas, rboles, flores)',X):-esrespuesta(X). espregunta('Examinar y tratar los problemas visuales',X):- esrespuesta(X). espregunta('Atender y realizar ejercicios a personas que tienen limitaciones fsicas, problemas de lenguaje, etctera',X):-esrespuesta(X). espregunta('Realizar el control de calidad de los alimentos',X):-esrespuesta(X).
pho:-new(D,dialog('PREGUNTAS')), new(Pre1,menu('Disear programas de computacin y explorar nuevas aplicaciones tecnolgicas para uso del internet')), send_list(Pre1,append,[si , no]), new(Pre2,menu('Criar, cuidar y tratar animales domsticos y de campo')), send_list(Pre2,append,[si , no]), new(Pre3,menu('Investigar sobre reas verdes, medio ambiente y cambios climticos')), send_list(Pre3,append,[si , no]), new(Pre4,menu('Ilustrar, dibujar y animar digitalmente')), send_list(Pre4,append,[si , no]), new(Pre5,menu('Seleccionar, capacitar y motivar al personal de una organizacin/empresa')), send_list(Pre5,append,[si , no]), new(Pre6,menu('Realizar excavaciones para descubrir restos del pasado')), send_list(Pre6,append,[si , no]), new(Pre7,menu('Resolver problemas de clculo para construir un puente')), send_list(Pre7,append,[si , no]), new(Pre8,menu('Disear cursos para ensear a la gente sobre temas de salud e higiene')), send_list(Pre8,append,[si , no]), new(Pre9,menu('Tocar un instrumento y componer msica')), send_list(Pre9,append,[si , no]), new(Pre10,menu('Planificar cules son las metas de una organizacin pblica o privada a mediano y largo plazo')), send_list(Pre10,append,[si , no]), new(Pre11,menu('Disear y planificar la produccin masiva de artculos')), send_list(Pre11,append,[si , no]), new(Pre12,menu('Disear logotipos y portadas de una revista')), send_list(Pre12,append,[si , no]), new(Pre13,menu('Organizar eventos y atender a sus asistentes')), send_list(Pre13,append,[si , no]), new(Pre14,menu('Atender la salud de personas enfermas')), send_list(Pre14,append,[si , no]), new(Pre15,menu('Controlar ingresos y egresos de fondos y presentar el balance final de una institucin')), send_list(Pre15,append,[si , no]), new(Pre16,menu('Hacer experimentos con plantas (frutas, rboles, flores)')), send_list(Pre16,append,[si , no]), new(Pre17,menu('Concebir planos para viviendas, edificios y ciudadelas')), send_list(Pre17,append,[si , no]), new(Pre18,menu('Investigar y probar nuevos productos farmacuticos')), send_list(Pre18,append,[si , no]), new(Pre19,menu('Hacer propuestas y formular estrategias para aprovechar las relaciones econmicas entre dos pases')), send_list(Pre19,append,[si , no]), new(Pre20,menu('Pintar, hacer esculturas, ilustrar libros de arte, etctera')), send_list(Pre20,append,[si , no]),
%% AREA I: ARTE Y CREATIVIDAD. areaI(_,_,_,P4,_,_,_,_,P9,_,_,P12,_,_,_,_,_,_,_,P20):- espregunta('Ilustrar, dibujar y animar digitalmente',P4),P4='si', espregunta('Tocar un instrumento y componer msica',P9),P9='si', espregunta('Disear logotipos y portadas de una revista',P12),P12='si', espregunta('Pintar, hacer esculturas, ilustrar libros de arte, etctera',P20),P20='si', pf3('C:/Programa/imagen1.jpg','ARTE Y CREATIVIDAD','C:/Programa/pinnaspist.bmp'). %% AREA II: CIENCIAS SOCIALES areaI(_,_,_,_,_,P6,_,_,_,_,_,_,P13,_,_,_,_,_,_,_):- espregunta('Realizar excavaciones para descubrir restos del pasado',P6),P6='si', espregunta('Organizar eventos y atender a sus asistentes',P13),P13='si', pf3('C:/Programa/Imagen2.jpg','CIENCIAS SOCIALES','C:/Programa/pinnaspist.bmp'). %% AREA III: Econmica, Administrativa y Financiera areaI(_,_,_,_,P5,_,_,_,_,P10,_,_,_,_,P15,_,_,_,P19,_):- espregunta('Seleccionar, capacitar y motivar al personal de una organizacin/empresa',P5),P5='si', espregunta('Planificar cules son las metas de una organizacin pblica o privada a mediano y largo plazo',P10),P10='si', espregunta('Controlar ingresos y egresos de fondos y presentar el balance final de una institucin',P15),P15='si', espregunta('Hacer propuestas y formular estrategias para aprovechar las relaciones econmicas entre dos pases',P19),P19='si', pf3('C:/Programa/imagen3.jpg','Econmica, Administrativa y Financiera','C:/Programa/pinnaspist.bmp').
%% AREA IV: Ciencia y Tecnologa areaI(P1,_,_,_,_,_,P7,_,_,_,P11,_,_,_,_,_,_,P18,_,_):- espregunta('Disear programas de computacin y explorar nuevas aplicaciones tecnolgicas para uso del internet',P1),P1='si', espregunta('Resolver problemas de clculo para construir un puente',P7),P7='si', espregunta('Disear y planificar la produccin masiva de artculos',P11),P11='si', espregunta('Concebir planos para viviendas, edificios y ciudadelas',P17),P17='si', espregunta('Investigar y probar nuevos productos farmacuticos',P18),P18='si', pf3('C:/Programa/imagen4.jpg','Ciencia y Tecnologa','C:/Programa/pinnaspist.bmp').
%% AREA V: Ciencias Ecolgicas, Biolgicas y de Salud areaI(_,P2,P3,_,_,_,_,P8,_,_,_,_,_,P14,_,P16,_,_,_,_):- espregunta('Criar, cuidar y tratar animales domsticos y de campo',P2),P2='si', espregunta('Investigar sobre reas verdes, medio ambiente y cambios climticos',P3),P3='si', espregunta('Disear cursos para ensear a la gente sobre temas de salud e higiene',P8),P8='si', espregunta('Atender la salud de personas enfermas',P14),P14='si', espregunta('Hacer experimentos con plantas (frutas, rboles, flores)',P16),P16='si', pf3('C:/Programa/imagen5.jpg','Ciencias Ecolgicas, Biolgicas y de Salud','C:/Programa/pinnaspist.bmp'). areaI(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_):- new(D,dialog('ERROR')), new(L,label(l,'NO SE PUEDE DEFINIR EL RESULTADO DEL TEST DE ORIENTACION VOCACIONAL',font('times','roman',16))), send(D,append,L), send(D,open,point(350,350)). image(X):-new(D,dialog('PLAGA')), mostrar1(X,D), % new(B,label(salir,message(D,destroy))), %send(D,append,B), send(D,open). mostrar1(V,D):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(D, display, D1).
pf3(X,Y,Z):-new(D,dialog('RESULTADOS TEST ORIENTACION VOCACIONAL')), mostrar2(X,D,20,30), new(L,label(n,'')), send(D, append(label(n,''))), send(D, append(label(n,'RECOMENDACION DE AREA DE VOCACION: '))), send(D, append(label(n,Y))), send(D,append,L), %mostrar2(_,D,20,350), send(D,open).
f3(X,Y):-new(F,frame('IMAGEN DE LA PLAGA')), send(F,append(new(F1,browser))), mostrar(X,F1), send(new(D,dialog),below(F1)), send(D, append(label(n,''))), send(D, append(label(n,''))), send(D, append(label(n,Y))),