Sistema Experto: Asesor de Decisiones para la eleccin
de un candidato a la presidencia del Per.
Vela Fernndez Jess Luiscin
Estudiante de la Universidad
Nacional de Trujillo.
jflion_18@[Link]
Rosas Aguilar Carlos Alfredo
Estudiante de la Universidad
Nacional de Trujillo.
carlosrosasaguilar@[Link]
Asesor
Ing. Arturo Daz Pulido
Docente de la Universidad
Nacional de Trujillo.
Resumen.
Trabajamos con Prolog para implementar un
Sistema Experto cuyo fin es asesorar a los usuarios a
escoger el candidato ms idneo, de acuerdo a sus
necesidades, a ser el nuevo alcalde de su ciudad. Para
tal fin daremos a conocer que son los sistemas
expertos y su importancia y finalmente
desarrollaremos nuestro problema con Prolog.
Palabras Clave.
Prolog Sistema Experto Asesor rbol.
1. Introduccin.
Los sistemas expertos se pueden considerar
como el primer producto verdaderamente
operacional de la inteligencia artificial. Son
programas de ordenador diseados para actuar como
un especialista humano en un dominio particular o
rea de conocimiento. En este sentido, pueden
considerarse como intermediarios entre el experto
humano, que transmite su conocimiento al sistema, y
el usuario que lo utiliza para resolver un problema
con la eficacia del especialista. El sistema experto
utilizar para ello el conocimiento que tenga
almacenado y algunos mtodos de inferencia. Para
que un sistema experto sea herramienta efectiva, los
usuarios deben interactuar de una forma fcil,
reuniendo dos capacidades para poder cumplirlo:
a) Explicar sus razonamientos o base del
conocimiento: los sistemas expertos se deben
realizar siguiendo ciertas reglas o pasos
comprensibles de manera que se pueda generar
la explicacin para cada una de estas reglas, que
a la vez se basan en hechos.
b) Adquisicin de nuevos conocimientos o
integrador del sistema: son mecanismos de
razonamiento que sirven para modificar los
conocimientos anteriores. Sobre la base de lo
anterior se puede decir que los sistemas
expertos son el producto de investigaciones en
el campo de la inteligencia artificial ya que sta
no intenta sustituir a los expertos humanos, sino
que se desea ayudarlos a realizar con ms
rapidez y eficacia todas las tareas que realiza.
1.1. Usos de un sistema Experto
a. 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.
b. 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.
Entonces recomiendan las acciones adecuadas
para corregir los problemas descubiertos. Este
tipo de sistemas se utilizan tambin en medicina
(ej. MYCIN y PUFF), y para localizar problemas en
sistemas informticos grandes y complejos.
c. Los sistemas expertos son buenos para
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.
d. La planificacin es la secuencia de acciones
necesaria para lograr una meta. Conseguir una
buena planificacin a largo plazo es muy difcil.
Por ello, se usan sistemas expertos para
gestionar proyectos de desarrollo, planes de
produccin de fbricas, estrategia militar y
configuracin de complejos sistemas
informticos, entre otros.
e. El diseo requiere una enorme cantidad de
conocimientos debido a que hay que tener en
cuenta muchas especificaciones y restricciones.
En este caso, el sistema experto ayuda al
diseador a completar el diseo de forma
competente y dentro de los lmites de costes y
de tiempo. Se disean circuitos electrnicos,
circuitos integrados, tarjetas de circuito
impreso, estructuras arquitectnicas, coches,
piezas mecnicas, etc.
f. Por ltimo, un sistema experto puede 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.
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
La base de conocimientos contiene el
conocimiento especializado extrado del
experto en el dominio. El mtodo ms comn
para representar el conocimiento es mediante
reglas de produccin. El dominio de
conocimiento representado se divide, pues, en
pequeas fracciones de conocimiento o reglas.
Una caracterstica muy importante es que la
base de conocimientos es independiente del
mecanismo de inferencia que se utiliza para
resolver los problemas. De esta forma, cuando
los conocimientos almacenados se han
quedado obsoletos, o cuando se dispone de
nuevos conocimientos, es relativamente fcil
aadir reglas nuevas, eliminar las antiguas o
corregir errores en las existentes.
1.2.2. Base de Datos
La base de datos o base de hechos es una parte
de la memoria del ordenador que se utiliza
para almacenar los datos recibidos
inicialmente para la resolucin de un
problema. Contiene conocimiento sobre el
caso concreto en que se trabaja. Tambin se
registrarn en ella las conclusiones
intermedias y los datos generados en el
proceso de inferencia.
1.2.3. Motor de inferencias
El motor de inferencias es un programa que
controla el proceso de razonamiento que
seguir el sistema experto. Utilizando los datos
que se le suministran, recorre la base de
conocimientos para alcanzar una solucin. La
estrategia de control puede ser de
encadenamiento progresivo o de
encadenamiento regresivo. En el primer caso
se comienza con los hechos disponibles en la
base de datos, y se buscan reglas que
satisfagan esos datos. Normalmente, el
sistema sigue los siguientes pasos:
1. Evaluar las condiciones de todas las reglas
respecto a la base de datos, identificando el
conjunto de reglas que se pueden aplicar
(aquellas que satisfacen su parte condicin)
2. Si no se puede aplicar ninguna regla, se
termina sin xito; en caso contrario se elige
cualquiera de las reglas aplicables y se
ejecuta su parte accin (esto ltimo genera
nuevos hechos que se aaden a la base de
datos)
3. Si se llega al objetivo, se ha resuelto el
problema; en caso contrario, se vuelve al
paso 1
Al encadenamiento regresivo se le suele
llamar guiado por objetivos, ya que, el sistema
comenzar por el objetivo (parte accin de las
reglas) y operar retrocediendo para ver cmo
se deduce ese objetivo partiendo de los datos.
1.2.4. Interfaz de Usuario
El interfaz de usuario permite que el usuario
pueda describir el problema al sistema
experto. Interpreta sus preguntas, los
comandos y la informacin ofrecida. A la
inversa, formula la informacin generada por
el sistema incluyendo respuestas a las
preguntas, explicaciones y justificaciones.
1.2.5. Mdulo de Explicacin
La mayora de los sistemas expertos contienen
un mdulo de explicacin, diseado para
aclarar al usuario la lnea de razonamiento
seguida en el proceso de inferencia. Si el
usuario pregunta al sistema cmo ha alcanzado
una conclusin, ste le presentar la secuencia
completa de reglas usada
1.2.6. Mdulo de Adquisicin
El mdulo de adquisicin del conocimiento
permite que se puedan aadir, eliminar o
modificar elementos de conocimiento (en la
mayora de los casos reglas) en el sistema
experto.
1.3. Ventajas e Inconvenientes de un Sistema
Experto
1.3.1. Ventajas
a) Un sistema experto mejora la productividad
al resolver y decidir los problemas ms
rpidamente. Esto permite ahorrar tiempo y
dinero. A veces sin esa rapidez las soluciones
obtenidas seran intiles.
b) Los valiosos conocimientos de un
especialista se guardan y se difunden, de
forma que, no se pierden aunque
desaparezca el especialista.
c) Con un sistema experto se obtienen
soluciones ms fiables gracias al tratamiento
automtico de los datos, y ms contrastadas,
debido a que se suele tener informatizado el
conocimiento de varios expertos.
d) Debido a la separacin entre la base de
conocimiento y el mecanismo de inferencia,
los sistemas expertos tienen gran flexibilidad,
lo que se traduce en una mejor modularidad,
capacidad de modificacin y legibilidad del
conocimiento.
1.3.2. Inconvenientes
a) El conocimiento humano es complejo de
extraer y, a veces, es problemtico
representarlo. Si un problema sobrepasa la
competencia de un sistema experto, sus
prestaciones se degradan de forma notable.
Adems, las estrategias de razonamiento de
los motores de inferencia suelen estar
programadas procedimentalmente y se
adaptan mal a las circunstancias. Estn
limitados para tratar problemas con
informacin incompleta.
b) Un experto humano no estudia
progresivamente una hiptesis, sino que
decide de inmediato cuando se enfrenta a
una situacin anloga a otra ocurrida en el
pasado. Los sistemas expertos no utilizan
este razonamiento por analoga.
c) Los costes y duracin del desarrollo de un
sistema experto son bastante considerables
(aunque se suelen amortizar rpidamente) y
su campo de aplicacin actual es restringido
y especfico.
d) Problemas sociales que acarrean al ser
susceptibles de influir en la estructura y
nmero de empleos.
1.4. Prolog
1.4.1. Introduccin a Prolog.
Su nombre viene de Programacin en Lgica,
creado a comienzos de los 70:
Robert Kowalski: lado terico.
Maarten van Emden: demostracin.
Alain Colmerauer: Implementacin.
Prolog es un lenguaje de programacin simple,
pero poderoso. Se basa en nociones
matemticas de relaciones de inferencia. Es un
lenguaje declarativo e interpretado, esto
quiere decir que el lenguaje se usa para
representar conocimientos sobre un
determinado dominio y las relaciones entre
objetos de ese dominio.
Un programa en Prolog consiste de una base
de hechos de relaciones lgicas y detalles que
se cumplen para la aplicacin. Dicha base de
datos no tiene una estructura impuesta, ni un
procedimiento o clase principal.
Escribir un programa en Prolog consiste en
declarar el conocimiento disponible acerca de
los objetivos, adems de sus relaciones y sus
reglas.
1.4.2. Caractersticas de Prolog.
Prolog usa variables lgicas, las cuales no
son comparables a las de otros lenguajes.
Los programadores las pueden usar como
blancos en estructuras de datos que se
llenan gradualmente mientras corre el
proceso.
La unificacin es un mtodo interno de
manipulacin de datos que pasa
parmetros, retorna resultados,
selecciona y construye estructuras de
datos.
El modelo de control de flujo bsico es la
reevaluacin (backtracking).
Las clusulas de programa y los datos
tienen la misma forma.
La forma relacional de los procedimientos
hace posible definirlos de forma que sean
reversibles.
Las clusulas proveen de una forma
conveniente para analizar casos e
indeterminismo.
Un programa en Prolog puede ser
considerado como una base de datos
relacional que contiene reglas y hechos.
2. Asesor de Decisiones Prolog
2.1. Planteamiento y Diseo
La idea, brindar una asesora adecuada en la
eleccin del candidato idneo para ser el
nuevo alcalde de determinada ciudad,
teniendo en cuenta las necesidades de los
usuarios.
Cada candidato tiene una base propia de
conocimientos, es decir, cada una de sus
propuestas o dicho de otra manera: el listado
de actividades de su plan de trabajo.
El sistema posee un diseo de rbol n-ario, la
raz es la accin de realizar el cuestionario, de
esta se desprenden varios nodos que
representan el primer punto en el listado de
cada uno de los candidatos (Figura 1), al
seleccionar cualquiera de estos, se habilita el
resto del listado de ese nodo y si en alguno se
diese como respuesta no la bsqueda
seguir con el siguiente nodo de la primera
divisin, despus de la raz, y as hasta terminar
con todos los nodos, hasta encontrar respuesta
o un Sin Resultado.
1 Actividad
1 Actividad
Realizar
Cuestionario
1 Actividad
2 Actividad
2 Actividad
2 Actividad
Figura 1
La Figura 2 muestra cmo es que se realiza la
bsqueda en cada listado, como bien se dijo
anteriormente, si alguno de estos da como respuesta
no antes de llegar a la N Actividad, subir a la
primera divisin y seguir con el nodo siguiente de
esta divisin.
Si se obtiene un si hasta la N Actividad, entonces el
sistema mostrara el candidato, que posea tal listado,
como respuesta.
2.2. Implementacin.
:-use_module(library(pce)).
:-use_module(library(pce_style_item)).
new(Menu, dialog('SISTEMA EXPERTO DE
ELECCION DE MEJOR ALCALDE', size(500,500))),
new(L, label(nombre,'Escoga su mejor opcion')),
new(@texto, label(nombre,'Segun las
respuestas dadas tendra un resultado:')),
new(@respl, label(nombre,'')),
new(Salir,button('SALIR',and(message(Menu,des
troy),message(Menu,free)))),
new(@boton, button('Realizar
cuestinorio',message(@prolog, botones))),
send(Menu,
append(L)),new(@btncarrera,button('Analisis')),
send(Menu, display,L,point(100,20)),
send(Menu, display,@boton,point(100,150)),
send(Menu, display,@texto,point(20,100)),
send(Menu, display,Salir,point(20,400)),
send(Menu, display,@respl,point(20,130)),
send(Menu, open_centered).
candidato(alan) :- alan,!.
candidato(toledo) :- toledo,!.
candidato(ollanta) :- ollanta,!.
candidato('Sin Resultado!!!').
alan :- estabilizar_economia,
pregunta('Generar mas empleos'),
pregunta('Consegir tratados de libre comercio'),
pregunta('Apoyar la industria nacional'),
pregunta('Reducir costos del pais').
toledo :- aumentar_tipo_de_vida,
pregunta('Aumentar el salario minimo vital'),
pregunta('Disminuir el tiempo de servicio para
jubilarse de un trabajador'),
pregunta('Brindar pensiones para personas
mayores'),
pregunta('Crear mayores ofertas laborales'),
pregunta('Vigilar el cumplimiento de los derechos
laborales').
ollanta :- reducir_delincuencia,
pregunta('Vigilar el cumplimiento de las leyes'),
pregunta('Crear leyes mas estrictas '),
pregunta('Someter a trabajo forzado a los
delincuentes'),
pregunta('Organizacion de rondas vecinales'),
pregunta('Capacitar mas eficientemente a los
policias'),
pregunta('Aumentar el salario a los policias').
desconocido :- no_existe_candidato.
estabilizar_economia :- pregunta('Estabilizar la
economia'),!.
aumentar_tipo_de_vida :- pregunta('Mejorar el
tipo de vida de las personas'),!.
reducir_delincuencia :- pregunta('Reducir la
delincuencia del pais'),!.
.
.
.
2 Actividad
3 Actividad
4 Actividad
N Actividad
Figura 2
:-dynamic si/1,no/1.
preguntar(Problema) :- new(Di,dialog('Eleccion
Candidato')),
new(L2,label(texto,'Responde:')),
new(La,label(prob,Problema)),
new(B1,button(si,and(message(Di,return,si)))),
new(B2,button(no,and(message(Di,return,no)))),
send(Di,append(L2)),
send(Di,append(La)),
send(Di,append(B1)),
send(Di,append(B2)),
send(Di,default_button,si),
send(Di,open_centered),get(Di,confirm,Answer),
write(Answer),send(Di,destroy),
((Answer==si)->assert(si(Problema));
assert(no(Problema)),fail).
pregunta(S) :- (si(S)->true; (no(S)->fail;
preguntar(S))).
limpiar:-retract(si(_)),fail.
limpiar:-retract(no(_)),fail.
limpiar.
botones :- lim,
send(@boton, free),
send(@btncarrera,free),
candidato(Cand),
send(@texto, selection('De acuerdo con sus
respuestas obtenidas')),
send(@respl, selection(Cand)),
new(@boton, button('Iniciar su
Evaluacion',message(@prolog, botones))),
send(Menu, display,@boton,point(40,50)),
send(Menu, display,@btncarrera,point(20,50)),
limpiar.
lim:- send(@respl, selection('')).
3. Ejecucin
- Ejecutamos nuestro programa, escribimos
main., luego presionamos (Enter) y se
abrir la siguiente ventana.
- La siguiente ventana mostrara la primera
interfaz de nuestro SE, en donde solo
seleccionaremos (Realizar Cuestionario)
para hacer la consulta o (Salir) para dejar el
programa.
- Le seguirn, a esta ltima, una serie de
ventanas que darn a conocer las
actividades del plan de trabajo de cada
candidato. Tomaremos aqu un ejemplo y
veremos el resultado.
- Tendremos as la ltima ventana con la
respuesta mostrada en la siguiente imagen.
Dando como resultado al candidato: Alan.
Nombre Completo: Alan L. G. Garca Prez.
4. Referencias Bibliogrficas.
[1] [Link]
[2][Link]
uajes/classes/logical/[Link]
[3][Link]
[Link]
[4] [Link]