Sistema Experto

Sistema Experto: Adivinador de componentes de la PC Navez Mariños Alex Estudiante de Ing. Informática Universidad Nacion

Views 171 Downloads 0 File size 498KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Sistema Experto: Adivinador de componentes de la PC Navez Mariños Alex Estudiante de Ing. Informática Universidad Nacional de Trujillo

Manuel Medina Vega Estudiante de Ing. Informática Universidad Nacional de Trujillo

Docente Asesor: Ing. Díaz Pulido Arturo RESUMEN: Vamos a implementar un sistema experto en Prolog cuyo propósito 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 descripción de los sistemas expertos y de su importancia y después pasaremos a desarrollar el problema con Prolog. Palabras Clave: Sistema experto, componentes. Prolog. 1. INTRODUCCIÓN ‚Un Sistema Experto es una aplicación informática 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 utilización de normas o estructuras que contengan conocimientos y experiencias de expertos, deducción lógica de conclusiones, capacidad de interpretar datos ambiguos y la manipulación 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 desempeñan 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 química para interpretar la estructura molecular, en la electrónica para instruir diseños apoyado por computador, etc. Dichos sistemas se han aplicado casi en todos los campos del conocimiento. Algunos se han diseñado como herramientas de investigación, 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 aplicación. Ejemplos: -QUIMICA: Tabla 1.1. Sistemas expertos para Química.

ELECTRONICA Tabla 1.2. Sistemas expertos para Electrónica

 -MEDICINA Tabla 1.3.

Sistemas expertos para Medicina

-INGENIERIA Tabla 1.4. Sistemas expertos para Ingeniería.

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 técnicas que permiten caracterizar y organizar conocimiento específico; por ejemplo; ‚frames‛, ‚redes sem{nticas‛ y ‚scripts‛.

Un administrador: Responsable del almacenamiento, recuperación y actualización en las estructuras de representación correspondientes. • Servicio: Es el mecanismo encargado de responder a las demandas de acceso a elementos específicos de conocimiento (reglas, hechos, objetos, etc.) efectuando por el motor de inferencia y el módulo 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 están expresadas a través de las estructuras condicionales IF-THEN- ELSE. Con ellas se pueden hacer reglas que regulen el resultado de determinada información y proporcionan distintos caminos que nos lleven a un proceso más eficiente. Generalmente son usados en decisiones binarias o más sencillas. b) Estructuras. Las estructuras contienen una jerarquía de componentes y de atributos de objetos que pueden ser asignados o heredados de otras estructuras a través 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 través de reglas o expresiones lógicas. 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, términos y condiciones de cualquier acción que necesite ser tomada. La capacidad de representar procedimientos, términos y condiciones con valores o acciones que son requeridas, es útil para conectar varios componentes de información en un sistema experto. En una estructura podemos tener representaciones descriptivas así como representaciones procedurales. c) Lógica: Las expresiones lógicas 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 través del tiempo. Un predicado puede tener uno o más argumentos que son los objetos que describe. 1.2.2. Base de Datos Es el depósito de conocimiento complementario a la ‚base de conocimientos‛ que por su naturaleza, representación y manipulación se concibe como dato o información. El empleo que se deriva de este módulo es:  Almacenamiento de datos. Todos aquellos elementos del dominio de conocimiento del Sistema Experto, los específicos al problema y los particulares del usuario pueden registrarse en archivos o tablas convencionales.  Administración: Ofrece los servicios de inserción, acceso, actualización y borrado de datos, seguridad, integridad, confiabilidad, respaldo y restauración y monitoreo de la información. Normalmente el Sistema Experto debe tener una interfaz con el software especializado en la administración 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 simbólicos que están 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 existentes son: a) Modus Ponens. b) Modus Tollens.

inferencia

a) Modus Ponens. El Modus Ponens es quizás la regla de inferencia más comúnmente utilizada. Se utiliza para obtener conclusiones simples. En ella, se examina la premisa de la regla, y si es cierta, la conclusión pasa a formar parte del conocimiento. Como ilustración, supóngase 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 número de sistemas expertos. El significado de modus ponens en latín es "modo que afirma". A=> B A. --------B

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

b) Modus Tollens. La regla de inferencia Modus Tollens se utiliza también para obtener conclusiones simples. En este caso se examina la

conclusión y si es falsa, se concluye que la premisa también es falsa. Por ejemplo, supóngase 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 conclusión pero la regla Modus Tollens concluye que ‚A es falso". A=> B -B --------A

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

Y la principal estrategia de inferencia es: Encadenamiento de reglas. _ Hacia delante. _ Hacia atrás Que son utilizadas por el motor de inferencia para obtener conclusiones compuestas. En la actualidad se tiene un sin número de motores de inferencia a disposición en su mayoría 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 librerías escritas en C++, fácilmente acoplable al uso en sistemas más 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 académicos.

e) Ruby Rools es una máquina de reglas pura escrita en Ruby, su objetivo es resumir lógica comercial y programas de flujo, es ideal en ambientes comercial donde la lógica comercial sufre modificaciones frecuentes. f) ILog proporciona un control fácil, 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 comunicación entre el usuario y el sistema experto. A la inversa, formula la información generada por el sistema incluyendo respuestas a las preguntas, explicaciones y justificaciones.

1.2.5. Módulo de Explicación 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. Módulo de Adquisición Es la vía automática para que el usuario introduzca conocimientos en el sistema, sin tener al ingeniero del conocimiento para que codifique éste en forma explícita. El modulo para la adquisición de conocimiento en una función opcional en muchos sistemas. En algunas herramientas para los sistemas expertos, ésta herramienta puede aprender por inducción de reglas mediante ejemplos, y también generar reglas automáticamente. Sin embargo, los ejemplos provienen generalmente de datos de tipo tabular u hojas de cálculo, que se aplican mejor a los árboles de decisión.

Las reglas generales que construye un ingeniero en conocimiento pueden ser mucho más complejas que las reglas simples creadas mediante inducción. Dependiendo de la implantación del sistema, la interfaz de usuario puede ser una simple pantalla de texto o una pantalla más 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 cómputo adecuado y aplicación especializada; a diferencia de un profesional (experto) que tiene horarios y demás obligaciones, lo que genera problemas en el momento de requerir un conocimiento específico. b) Costo reducido.- El costo de poner la experiencia a disposición del usuario se reduce enormemente ya que la remuneración de un experto humano en ocasiones es muy elevado. c) Riesgo reducido.- Los sistemas expertos pueden usarse en ambientes que podrían ser peligrosos para el ser humano, y el coste de reparación o re-instalación 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 Múltiple.- El conocimiento de varios especialistas puede estar disponible para trabajar simultánea y continuamente en un problema, a cualquier hora del día 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 opinión los sistemas expertos incrementan la confianza en la toma de decisiones. g) Explicación.- El sistema experto puede explicar clara y detalladamente el razonamiento que conduce a una conclusión, lo que seguirá aumentando la confianza. h) Respuesta rápida.- Alguna situación especial requerirá una respuesta inmediata y las bondades de las computadoras nos ayudarán. i) Cero emociones.- La respuesta del sistema experto será la más 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 comunicación.La comunicación con el profesional debe ser metodológica 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 máximo el poco tiempo.

  1.4.-Lenguaje de Programación Prolog. Prolog es un lenguaje de programación diseñado 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 programación declarativa. En lenguajes tradicionales se indica cómo resolver un problema, en la programación lógica se establecen hechos reales y reglas para así no saber como resolver el problema, sino que hacer para resolverlo. 1.4.1. Introducción a Prolog. Prolog es un lenguaje de programación simple, pero poderoso. Se basa en nociones matemáticas 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 lógicas y detalles que se cumplen para la aplicación. 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. Características de Prolog. Las características principales de Prolog son: 

Basado en lógica y programación declarativa.





No se especifica cómo debe hacerse, sino qué debe lograrse. Una característica importante en Prolog y que lo diferencia de otros lenguajes de programación, es que una variable sólo puede tener un valor mientras se cumple el objetivo. El programador se concentra más 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 programación 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 Diseño 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 características escogidas. Para realizar este diseño 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,

según 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 continuación le mostramos una imagen de la raíz 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 realizarán al usuario serán diferentes.

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 raíz del árbol para componentes internos, cuya pregunta asociada es: ¿Almacena información? Vamos a describir el árbol de un ejemplo concreto, para otras opciones las preguntas que se realizarán al usuario serán diferentes. ¿Almacena información?

¿Sirve para mover El puntero de la pantalla?

Si

Si

No

No

¿Tiene forma de pluma?

¿Sirve para introducir órdenes y datos a la PC?

¿Procesa los datos?

¿Lo hace de manera temporal?

Figura 1

Figura 3

Según se elija sí o no como respuesta a la pregunta del nodo raíz, 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?

Según se elija sí o no como respuesta a la pregunta del nodo raíz, 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? ¿Lo hace de manera temporal?

¿Sirve para introducir órdenes y datos a la PC?

Si Un Teclado

Si

No

No ¿Emite sonidos enviados por la PC?

Una memoria RAM.

¿Lo hace de manera no temporal?

Figura 2

Figura 4

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

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

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 Implementación.Para implementar nuestro sistema experto en prolog dividimos nuestro código 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 líneas de código para algunos de los componentes de la PC. Cada una con sus características que deben cumplir: Lapizop:- checa('¿Sirve para mover el puntero en la pantalla?'), checa('¿Tiene forma de Pluma?'),!.

Ratón:- checa('¿Sirve para mover el puntero en la pantalla?'), afirma('¿Entonces tiene forma de ratón?'),!. -Teclado:- checa('¿Sirve para introducir órdenes y datos a la PC?'),!. -Audífonos:- 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'),!. -Escáner:- checa('Digitaliza Documentos u objetos pequeños'), 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. EJECUCIÓN Primero compilamos el archivo con la sentencia compile (‘SE-componentes.pl’). y luego escribimos arranque. Y comenzamos.

Esta es una ejecución de ejemplo para componentes externos en la que las elecciones son: no-no-si-sí.

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

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

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