Вы находитесь на странице: 1из 10

Sistema Experto: Adivinador de

componentes de la PC

Navez Marios Alex Manuel Medina Vega
Estudiante de Ing. Informtica Estudiante de Ing. Informtica
Universidad Nacional de Trujillo Universidad Nacional de Trujillo

Docente Asesor:
Ing. Daz Pulido Arturo


RESUMEN:
Vamos a implementar un sistema experto en
Prolog cuyo propsito ser de adivinar los
componentes internos o externos de una PC
cuando se le pregunta por un componente en
particular. Para ello primero haremos una breve
descripcin de los sistemas expertos y de su
importancia y despus pasaremos a desarrollar
el problema con Prolog.

Palabras Clave:
Sistema experto, componentes. Prolog.

1. INTRODUCCIN
Un Sistema Experto es una aplicacin
informtica que simula el comportamiento
de un experto humano, en el sentido de
que es capaz de decidir cuestiones, aunque
sea en un campo restringido.
Los sistemas expertos se aplican por norma
general en problemas que implican un
procedimiento basado en el conocimiento.
O sea, un procedimiento que comprende la
utilizacin de normas o estructuras que
contengan conocimientos y experiencias de
expertos, deduccin lgica de
conclusiones, capacidad de interpretar
datos ambiguos y la manipulacin de
conocimientos afectados por la
probabilidad. La mejor forma de entender
el funcionamiento de un Sistema Experto
es conociendo los componentes que
conforman la estructura del mismo, y las
funciones que desempean
individualmente.


1.1. Usos de un Sistema Experto
Los Sistemas expertos, por su naturaleza se
pueden aplicar en una serie de campos., por
ejemplo en la qumica para interpretar la
estructura molecular, en la electrnica para
instruir diseos apoyado por computador, etc.
Dichos sistemas se han aplicado casi en todos
los campos del conocimiento. Algunos se han
diseado como herramientas de investigacin,
mientras que otros satisfacen importantes
funciones de negocios e industriales.
En las siguientes tablas se encontrar una lista
de nombres de sistemas expertos ya elaborados
y su respectivo campo de aplicacin.
Ejemplos:
-QUIMICA:
Tabla 1.1. Sistemas expertos para Qumica.



ELECTRONICA
Tabla 1.2. Sistemas expertos para Electrnica


-MEDICINA
Tabla 1.3. Sistemas expertos para Medicina






-INGENIERIA
Tabla 1.4. Sistemas expertos para Ingeniera.


Se puede apreciar que los dominios en los que
los sistemas expertos pueden ayudar son
bastante amplios.
1.2. Arquitectura y Funcionamiento de un
Sistema Experto

Es un sistema basado en reglas, la base del
conocimiento contiene el conocimiento del
dominio necesario para resolver los
problemas codificados en forma de reglas;
mientras que las reglas representan
conocimiento.

1.2.1. Base de Conocimientos
Constituye el acervo de conocimiento
especializado del Sistema Experto, consta de:
El formalismo para representar
conocimiento: Emplea una o varias
tcnicas que permiten caracterizar y
organizar conocimiento especfico; por
ejemplo; frames, redes sem{nticas y
scripts.

Un administrador: Responsable del
almacenamiento, recuperacin y
actualizacin en las estructuras de
representacin correspondientes.
Servicio: Es el mecanismo encargado de
responder a las demandas de acceso a
elementos especficos de conocimiento
(reglas, hechos, objetos, etc.) efectuando
por el motor de inferencia y el mdulo de
aprendizaje.
Dentro de la base de conocimientos existen
tres tipos de conocimiento para construir un
sistema experto:
Reglas
Hechos y relaciones entre los
componentes
Afirmaciones y preguntas

a) Reglas. Las reglas son una serie de
declaraciones estructuradas en forma de
oraciones condicionales y estn
expresadas a travs de las estructuras
condicionales IF-THEN- ELSE. Con ellas
se pueden hacer reglas que regulen el
resultado de determinada informacin y
proporcionan distintos caminos que nos
lleven a un proceso ms eficiente.
Generalmente son usados en decisiones
binarias o ms sencillas.
b) Estructuras. Las estructuras contienen
una jerarqua de componentes y de
atributos de objetos que pueden ser
asignados o heredados de otras
estructuras a travs de diversos
procedimientos. Los atributos se
encuentran en las casillas de las
estructuras. Una estructura, ya sea como
un arreglo, como una estructura o como
una casilla de atributo de una estructura
puede ser llamada a travs de reglas o
expresiones lgicas.
La diferencia entre una estructura y una
regla es que una estructura puede
representar valores iniciales,
apuntadores a otras estructuras o reglas
y procedimientos para los cuales se han
especificado valores, trminos y
condiciones de cualquier accin que
necesite ser tomada.
La capacidad de representar
procedimientos, trminos y condiciones
con valores o acciones que son
requeridas, es til para conectar varios
componentes de informacin en un
sistema experto. En una estructura
podemos tener representaciones
descriptivas as como representaciones
procedurales.
c) Lgica: Las expresiones lgicas cuentan
con predicados, valores y tomos para
evaluar hechos del mundo real.
El objeto puede ser una constante o una
variable que puede cambiar a travs del
tiempo. Un predicado puede tener uno o
ms argumentos que son los objetos que
describe.

1.2.2. Base de Datos
Es el depsito de conocimiento
complementario a la base de
conocimientos que por su naturaleza,
representacin y manipulacin se concibe
como dato o informacin.
El empleo que se deriva de este mdulo es:
Almacenamiento de datos. Todos
aquellos elementos del dominio de
conocimiento del Sistema Experto, los
especficos al problema y los particulares
del usuario pueden registrarse en
archivos o tablas convencionales.
Administracin: Ofrece los servicios de
insercin, acceso, actualizacin y borrado
de datos, seguridad, integridad,
confiabilidad, respaldo y restauracin y
monitoreo de la informacin.
Normalmente el Sistema Experto debe tener
una interfaz con el software especializado en
la administracin archivos o bases de datos,
tales como los engine de las RDBMS
(Sistemas Manejadores de Bases de Datos
Relacionales).



1.2.3. Motor de Inferencias
Es el "supervisor", un programa que est
entre el usuario y la base de conocimientos,
y que extrae conclusiones a partir de los
datos simblicos que estn almacenados en
la memoria activa y la base de conocimiento;
por su importancia analizaremos los motores
de inferencia basados en reglas.
El motor de inferencia usa los datos (hechos
o evidencia) y el conocimiento (conjunto de
reglas almacenado en la base del
conocimiento).

Las principales reglas de inferencia
existentes son:
a) Modus Ponens.
b) Modus Tollens.

a) Modus Ponens.
El Modus Ponens es quizs la regla de
inferencia ms comnmente utilizada. Se
utiliza para obtener conclusiones simples. En
ella, se examina la premisa de la regla, y si es
cierta, la conclusin pasa a formar parte del
conocimiento.
Como ilustracin, supngase que se tiene la
regla, Si A es cierto, entonces B es cierto y
que se sabe adem{s que A es cierto".
La regla Modus Ponens concluye que B es
cierto. Esta regla de inferencia, que parece
trivial, debido a su familiaridad, es la base de
un gran nmero de sistemas expertos.
El significado de modus ponens en latn es
"modo que afirma".

A=> B Si A, entonces B.
A. A.
--------- ---------------------
B Por lo tanto, B.

b) Modus Tollens.
La regla de inferencia Modus Tollens se
utiliza tambin para obtener conclusiones
simples. En este caso se examina la
conclusin y si es falsa, se concluye que la
premisa tambin es falsa.
Por ejemplo, supngase de nuevo que se
tiene la regla, Si A es cierto, entonces B es
cierto pero se sabe que B es falso.
Entonces, utilizando la regla Modus Ponens
no se puede obtener ninguna conclusin
pero la regla Modus Tollens concluye que
A es falso".

A=> B Si A, entonces B.
-B No B.
--------- ---------------------
A Por lo tanto, no A.

Y la principal estrategia de inferencia es:
Encadenamiento de reglas.
_ Hacia delante.
_ Hacia atrs

Que son utilizadas por el motor de
inferencia para obtener conclusiones
compuestas.
En la actualidad se tiene un sin nmero de
motores de inferencia a disposicin en su
mayora para uso comercial, tales como SIE,
QuickRules, OMCSNetCPP, SMILE, Jess,
Clips, Ruby Rools, ILog entre otros.

a) QuickRules, ayuda a mejorar la
productividad de una empresa asistiendo
a los ejecutivos en la toma de decisiones
importantes, realizando Data Mining,
Datawarehouse.
b) SIE, es un motor de inferencia simple que
fue escrito en Ruby.
c) SMILE, permite el modelamiento
estructural y tiene un motor de
aprendizaje e inferencia, es un conjunto de
libreras escritas en C++, fcilmente
acoplable al uso en sistemas ms grandes.
d) Clips es una herramienta que provee un
ambiente completo para desarrollar
sistemas expertos basados en reglas, se lo
utiliza ampliamente en la industria y en
mbitos acadmicos.
e) Ruby Rools es una mquina de reglas
pura escrita en Ruby, su objetivo es
resumir lgica comercial y programas de
flujo, es ideal en ambientes comercial
donde la lgica comercial sufre
modificaciones frecuentes.
f) ILog proporciona un control fcil,
predecible y automatizado sobre
decisiones comerciales automatizadas con
las herramientas adecuadas para los
gerentes comerciales, analistas,
arquitectos y desarrolladores.
g) Jess es un motor de inferencia escrito en
Java Eclipse, en el cual se puede hacer
software que pueda razonar.

1.2.4. Interfaz con el Usuario
Es el mecanismo que permite la
comunicacin entre el usuario y el sistema
experto. A la inversa, formula la
informacin generada por el sistema
incluyendo respuestas a las preguntas,
explicaciones y justificaciones.


1.2.5. Mdulo de Explicacin
Explica al usuario el razonamiento del
sistema, mostrando los hechos aplicados a
cada caso y su encadenamiento seguido,
hasta llegar a la respuesta dada.

1.2.6. Mdulo de Adquisicin
Es la va automtica para que el usuario
introduzca conocimientos en el sistema, sin
tener al ingeniero del conocimiento para que
codifique ste en forma explcita.
El modulo para la adquisicin de
conocimiento en una funcin opcional en
muchos sistemas. En algunas herramientas
para los sistemas expertos, sta herramienta
puede aprender por induccin de reglas
mediante ejemplos, y tambin generar reglas
automticamente. Sin embargo, los ejemplos
provienen generalmente de datos de tipo
tabular u hojas de clculo, que se aplican
mejor a los rboles de decisin.
Las reglas generales que construye un
ingeniero en conocimiento pueden ser
mucho ms complejas que las reglas simples
creadas mediante induccin. Dependiendo
de la implantacin del sistema, la interfaz de
usuario puede ser una simple pantalla de
texto o una pantalla ms sofisticada, con
multimedia que por lo general se usa para
simular un panel de control.
1.3. Ventajas e Inconvenientes de un
Sistema Experto
1.3.1. Ventajas:
a) Disponibilidad.- El sistema experto o
software desarrollado e instalado est
disponible para cualquier hardware de
cmputo adecuado y aplicacin
especializada; a diferencia de un
profesional (experto) que tiene horarios y
dems obligaciones, lo que genera
problemas en el momento de requerir un
conocimiento especfico.
b) Costo reducido.- El costo de poner la
experiencia a disposicin del usuario se
reduce enormemente ya que la
remuneracin de un experto humano en
ocasiones es muy elevado.

c) Riesgo reducido.- Los sistemas expertos
pueden usarse en ambientes que podran
ser peligrosos para el ser humano, y el
coste de reparacin o re-instalacin de
cada sistema experto puede ser calculado
y previsto.

d) Permanencia.- La experiencia es
permanente, a diferencia del especialista
humano, que puede retirarse, renunciar o
morir; el conocimiento del sistema experto
durar indefinidamente.

e) Experiencia Mltiple.- El conocimiento de
varios especialistas puede estar disponible
para trabajar simultnea y continuamente
en un problema, a cualquier hora del da o
de la noche. El nivel de experiencia
combinada de muchos sistemas expertos
puede exceder al de un solo especialista
humano.

f) Confiabilidad.- Al proporcionar una
segunda opinin los sistemas expertos
incrementan la confianza en la toma de
decisiones.

g) Explicacin.- El sistema experto puede
explicar clara y detalladamente el
razonamiento que conduce a una
conclusin, lo que seguir aumentando la
confianza.

h) Respuesta rpida.- Alguna situacin
especial requerir una respuesta
inmediata y las bondades de las
computadoras nos ayudarn.
i) Cero emociones.- La respuesta del sistema
experto ser la ms adecuada a los
requerimientos del problema sin dejarse
llevar por emociones ni ver situaciones de
las que los humanos somos vulnerables.
1.3.2. Inconvenientes:
a) Poca experiencia en desarrollo de
sistemas expertos.- Desarrollar un sistema
experto tiene grandes diferencias con
respecto a los sistemas tradicionales, se
deber hacer un seguimiento minucioso
en esta etapa.

b) Falla en la comunicacin.- La
comunicacin con el profesional debe ser
metodolgica y permanente para tener
una base de conocimientos confiable.

c) Disponibilidad del especialista.- El
profesional del rea a automatizar o
experto, no estar en el cien por ciento del
tiempo para desarrollar con l el sistema,
se deber aprovechar al mximo el poco
tiempo.



1.4.-Lenguaje de Programacin Prolog.
Prolog es un lenguaje de programacin
diseado para representar y utilizar el
conocimiento que se tiene sobre un
determinado dominio. Los programas en
Prolog responden preguntas sobre el tema
del cual tienen conocimiento.
Forma parte de lo que se conoce como
programacin declarativa.
En lenguajes tradicionales se indica cmo
resolver un problema, en la programacin
lgica se establecen hechos reales y reglas
para as no saber como resolver el problema,
sino que hacer para resolverlo.

1.4.1. Introduccin a Prolog.
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 datos 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. Los
datos y relaciones de un programa en Prolog
se escriben en un nico archivo, el cual es
consultado por el programa cuando se le
hace una pregunta.

1.4.2. Caractersticas de Prolog.
Las caractersticas principales de Prolog
son:

Basado en lgica y programacin
declarativa.
No se especifica cmo debe
hacerse, sino qu debe lograrse.
Una caracterstica importante en
Prolog y que lo diferencia de otros
lenguajes de programacin, es que
una variable slo puede tener un
valor mientras se cumple el
objetivo.
El programador se concentra ms
en el conocimiento que en
los algoritmos.
Estructura del programa: El hecho
de programar en ProLog consiste
en dar al ordenador un Universo
finito en forma de hechos y reglas,
proporcionando los medios para
realizar inferencias de un hecho a
otro. La programacin en ProLog
consiste en: Declarar algunos
HECHOS sobre los objetos y sus
relaciones.
Definir algunas REGLAS sobre los
objetos y sus relaciones, y
Hacer PREGUNTAS sobre los
objetos y sus relaciones.

2. SISTEMA EXPERTO: ADIVINADOR
DE COMPONENTES DE LA PC

2.1. Planteamiento y Diseo
Nuestro sistema experto consiste en un
adivinador de componentes de una
computadora (componentes internos y
externos), por medio de una serie de preguntas
que se le hacen al usuario, y dependiendo de las
respuestas va descartando las posibilidades
hasta llegar al final a la respuesta correcta del
componente al que pertenecen las caractersticas
escogidas.
Para realizar este diseo hemos partido del
diagrama de dos rboles, un rbol para
componentes externos y otro para componentes
internos, en el que cada nodo tiene una
pregunta asociada que se imprimir por
pantalla y que el cliente tendr que responder,
segn la respuesta que responda el programa se
encaminar a la rama del nodo correspondiente
a la respuesta elegida por el cliente. Una vez
recorrido todo el rbol se llegar a una de las
hojas del rbol que contendr la respuesta final.
A continuacin le mostramos una imagen de la
raz del rbol para componentes externos, cuya
pregunta asociada es: Sirve para mover el
puntero de la pantalla?
Vamos a describir el rbol de un ejemplo
concreto, para otras opciones las preguntas que
se realizarn al usuario sern diferentes.










Figura 1

Segn se elija s o no como respuesta a la
pregunta del nodo raz, se ira a un nodo
diferente cuya pregunta asociada ser distinta.
Si por ejemplo respondemos no, nos dirigimos a
la pregunta Sirve para introducir rdenes y
datos a la PC?









Figura 2

Si a esta pregunta respondemos si, nos
dirigiremos a un nodo hoja que contiene el valor
teclado, este valor ser el resultado final. Por
otro lado si respondemos no, iremos a otro nodo
diferente con otra pregunta. Emite sonidos
enviados por la PC?, y as sucesivamente iremos
respondiendo a las diferentes preguntas en cada
nodo, hasta llegar a un nodo hoja el cual
contiene la respuesta correcta sobre el
componente de la PC que hemos estado
describiendo.

Ahora mostramos la raz del rbol para
componentes internos, cuya pregunta asociada
es: Almacena informacin?
Vamos a describir el rbol de un ejemplo
concreto, para otras opciones las preguntas que
se realizarn al usuario sern diferentes.










Figura 3

Segn se elija s o no como respuesta a la
pregunta del nodo raz, se ira a un nodo
diferente cuya pregunta asociada ser distinta.
Si por ejemplo respondemos si, nos dirigimos a
la pregunta Lo hace de manera temporal?










Figura 4

Si a esta pregunta respondemos si, nos
dirigiremos a un nodo hoja que contiene el valor
Una memoria RAM, este valor ser el resultado
final. Por otro lado si respondemos no, iremos a
otro nodo diferente con otra pregunta. Lo hace
de manera no temporal?, y as sucesivamente
Sirve para mover
El puntero de la
pantalla?
Tiene forma
de pluma?
Sirve para
introducir rdenes y
datos a la PC?
Si
No
Sirve para
introducir rdenes y
datos a la PC?
Si
Un Teclado
No
Emite sonidos
enviados por la PC?
Almacena
informacin?
Si No
Lo hace de
manera
temporal?
Procesa los
datos?
Lo hace de
manera
temporal?
Si No
Una memoria
RAM.
Lo hace de
manera no
temporal?
iremos respondiendo a las diferentes preguntas
en cada nodo, hasta llegar a un nodo hoja el cual
contiene la respuesta correcta sobre el
componente de la PC que hemos estado
describiendo.

2.2 Implementacin.-
Para implementar nuestro sistema experto en
prolog dividimos nuestro cdigo en las
siguientes partes:
2.2.1.- Arranque e interfaz:

consult('SE-componentes.pl').
use_module(library(pce)).

escribe(Texto):-write(Texto).

comienzo(Valor):-
componente(Valor, Tipo),
resultado(Valor, Tipo),
nl, deshacer.

arranque:- new(Dialogo, dialog('Adivinador de
Componentes de PC')), new(Uso1, menu('Es un
componente interno o Externo?:', marked)),
send(Dialogo, append, new(Nom,
text_item('Cual es su nombre?'))),
send(Uso1, append, interno),
send(Uso1, append, externo),
send(Dialogo, append(Uso1)),
send(Dialogo, append, button('Continuar', and(
message(@prolog, escribe, Nom?selection),
message(@prolog, escribe, ' '),
message(@prolog, escribe, 'La Solucion se
dio por:'), message(@prolog, comienzo,
Uso1?selection)))), send(Dialogo, open).

2.2.2.- Base de conocimiento:
Estos son algunas de las lneas de cdigo para
algunos de los componentes de la PC. Cada una
con sus caractersticas que deben cumplir:

Lapizop:- checa('Sirve para mover el puntero
en la pantalla?'), checa('Tiene forma de
Pluma?'),!.
Ratn:- checa('Sirve para mover el puntero en
la pantalla?'), afirma('Entonces tiene forma de
ratn?'),!.
-Teclado:- checa('Sirve para introducir rdenes
y datos a la PC?'),!.
-Audfonos:- checa('Emite Sonidos enviados
por la pc?'), checa('Van puestos en los
oidos?'),!.
-Bocinas:- checa('Emite Sonidos enviados por la
pc?'), afirma('Necesitan de mas corriente
Electrica y generalmente van al rededor de la
PC'),!.
-Monitor:- checa('Despliega imagenes a traves
de tubos de rayos catodicos'),!.
-Escner:- checa('Digitaliza Documentos u
objetos pequeos'), checa('Solo cumple con esa
funcion?'),!.

2.2.3.- Reglas de inferencia:
Ac mostramos las reglas que obtienen el valor
de las respuestas para algunos de los
componentes de la PC:

resultado(interno, ialmacena_tempo):-
new(ResulD, dialog('Creo que es:')),
new(L, label(resul, 'Una Memoria RAM,')),
send(ResulD, append(L)),
new(B,button('Listo',and(message(ResulD,
destroy), message(ResulD,free)))),
send(ResulD, append(B)),
send(ResulD, open).

resultado(interno, procesa):-
new(ResulD, dialog('Creo que es:')),
new(L, label(resul, 'Un Procesador,')),
send(ResulD, append(L)),
new(B,button('Listo',
and(message(ResulD,destroy),
message(ResulD,free)))),
send(ResulD, append(B)),
send(ResulD, open).

3. EJECUCIN
Primero compilamos el archivo con la sentencia
compile (SE-componentes.pl). y luego
escribimos arranque. Y comenzamos.
Esta es una ejecucin de ejemplo para
componentes externos en la que las elecciones
son: no-no-si-s.





Esta es una ejecucin de ejemplo para
componentes internos en la que las elecciones
son: si-si.





4.- REFERENCIAS:

WEB GRAFIA:

1. http://www.it.uc3m.es/rcrespo/docencia/
irc/lab/Ejercicios_Prolog.pdf

2. http://www.uv.mx/aguerra/documents/2
011-mpi-09.pdf

3. http://elvex.ugr.es/decsai/intelligent/wo
rkbook/ai/PROLOG.pdf

4. http://cdigital.uv.mx/bitstream/12345678
9/29419/1/AldanayVazquez.pdf

5. http://www.redcientifica.com/doc/doc19
9908210001.html
6. http://www.itnuevolaredo.edu.mx/takey
as/Articulos/Inteligencia%20Artificial/
Articulo-
Introduccion%20a%20los%20Sistemas
%20Expertos%20(2004-I).pdf

Вам также может понравиться