Sei sulla pagina 1di 28
CURSO : DOCENTE : ALUMNOS : CICLO :
CURSO
:
DOCENTE
:
ALUMNOS
:
CICLO
:

VII

CURSO : DOCENTE : ALUMNOS : CICLO : V II UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE
CURSO : DOCENTE : ALUMNOS : CICLO : V II UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE

UNIVERSIDAD NACIONAL DE TRUJILLO

ALUMNOS : CICLO : V II UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS

FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS

Escuela de Informática

“SISTEMA EXPERTO DIAGNOSTICO MEDICO DE PROBLEMAS RESPIRATORIOS

PROGRAMACION LÓGICA

ING. ARTURO DIAZ PULIDO

POZO VERA OSCAR EDUARDO ROJAS SALAS KENNY

” PROGRAMACION LÓGICA ING. ARTURO DIAZ PULIDO POZO VERA OSCAR EDUARDO ROJAS SALAS KENNY TRUJILLO –

TRUJILLO PERÚ

2014
2014

RESUMEN

Vamos a implementar un sistema experto de un diagnostico medico basado en enfermedades respiratorias cuyo propósito será prevenir al paciente de cualquier tipo de enfermedad respiratoria. 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 el examen médico que realizaremos a cada paciente el cual será un sistema experto ampliamente utilizable.

Términos Generales: Algorithms Design

Palabras

respiratorias.

Clave:

Examen

1. INTRODUCCION

médico,

sistema

experto,

enfermedades

Los sistemas expertos se pueden considerar como el primer producto verdaderamente operacional de la inteligencia artificial. Son programas de ordenador diseñados para actuar como un especialista humano en un dominio particular o área de conocimiento. En este sentido pueden considerarse como intermediario 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 utilizara para ello el conocimiento que tenga almacenado y algunos métodos de inferencia. Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fácil, reuniendo dos capacidades para poder cumplirlo:

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 explicación para cada una de estas reglas, que a la vez se basan en hechos. Adquisición 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 esta no intenta sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con más rapidez y eficacia todas las tareas que realiza.

1.1. Usos de un sistema experto

Un sistema experto es muy eficaz cuando tiene que analizar una gran cantidad de información, interpretándola y proporcionando una recomendación a partir de la misma. Un ejemplo es el análisis financiero, donde se estudian las oportunidades de inversión dependiendo de los datos financieros de un cliente y de sus propósitos.

Para detectar y reparar fallos en equipos electrónicos, se utilizan los sistemas expertos de diagnóstico y depuración, que formulan listas de preguntas con las que obtienen los datos necesarios para llegar a una conclusión. Entonces recomiendan las acciones adecuadas para corregir los problemas descubiertos. Este tipo de sistemas se utilizan en medicina y para localizar problemas en sistemas informáticos grandes y complejos.

La planificación es la secuencia de acciones necesaria para lograr una meta. Conseguir una buena planificación a largo plazo es muy difícil. Por ello, se usan sistemas expertos para gestionar proyectos de desarrollo, planes de producción de fábricas, estrategia militar y configuración de complejos sistemas informáticos, entre otros.

Cuando se necesita controlar un proceso tomando decisiones como respuesta a su estado y no existe una solución algorítmica adecuada, es necesario usar un sistema experto. Este campo comprende el supervisar fábricas automatizadas, factorías químicas o centrales nucleares. Estos sistemas son extraordinariamente críticos porque normalmente tienen que trabajar a tiempo real.

El diseño requiere una enorme cantidad de conocimientos debido a que hay que tener en cuenta muchas especificaciones restricciones. En este caso, el sistema experto ayuda al diseñador a completar el diseño de gorma competente y dentro de los límites de costes y de tiempo. Se diseñan circuitos electrónicos, circuitos integrados, tarjetas de circuito impreso, estructuras arquitectónicas, coches, piezas mecánicas, etc.

Por último, un sistema experto puede avaluar el nivel de conocimientos y comprensión de un estudiante, y ajustar el proceso de aprendizaje de acuerdo con sus necesidades.

1.2. Arquitectura y funcionamiento de un sistema experto La mayoría de los sistemas expertos tienen unos componentes básicos: base de conocimientos, motor de inferencia, base de datos e interfaz con el usuario. Muchos tienen, además, un módulo de explicación y un módulo de adquisición del conocimientos.

Base de conocimientos: la base de conocimientos contiene el conocimiento especializado extraído del experto en el dominio. El método más común para representar el conocimiento representado se divide, pues, en pequeñas fracciones de conocimiento o reglas. Una característica 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 fácil añadir reglas nuevas, eliminar las antiguas o corregir errores en las existentes.

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 resolución de un problema. Contiene conocimiento sobre el caso concreto en que se trabaja. También se registraran en ella las

conclusiones intermedias y los datos generados en el proceso de inferencia.

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 solución. La estrategia de control puede ser de encadenamiento regresivo. En el primer caso se comienza con los hechos disponibles en la base de datos, y se buscan las reglas que satisfagan esos datos. Normalmente, el sistema sigue los siguientes pasos:

Evaluar las condiciones de todas la reglas respecto a lavase de datos, identificando el conjunto de reglas que se pueden aplicar.

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 acción.

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 comenzara por el objetivo y operara retrocediendo para ver como se deduce ese objetivo partiendo de los datos.

Interfaz con el usuario: el interfaz de usuario permite que el usuario pueda describir el problema al sistema experto. Interpreta sus preguntas, los comando y la información ofrecida. A la inversa. Formula la información generada por el sistema incluyendo respuestas a las preguntas, explicaciones y justificaciones.

Módulo de explicación: la mayoría de los sistemas expertos contienen un módulo de explicación, diseñado para aclarar al

usuario la línea de razonamiento seguida en el proceso de inferencia. Si el usuario pregunta al sistema como ha alcanzado una conclusión, este le presentara la secuencia completa de reglas usada.

Módulo de adquisición: el módulo de adquisición del conocimiento permite que se puedan añadir, eliminar o modificar elementos de conocimiento en el sistema experto.

1.3. Ventajas e Inconvenientes de un Sistema Experto

a) Ventajas

Un sistema experto mejora la productividad al resolver y decidir los problemas más rápidamente. Esto permite ahorrar tiempo y dinero. A veces sin esa rapidez las soluciones obtenidas serian inútiles.

Los valiosos conocimientos de un especialista se guardan y se difunden, de forma que, no se pierden aunque desaparezca el especialista.

Con un sistema experto se obtienen soluciones más fiables gracias al tratamiento automático de los datos, y más contrastadas, debido a que se suele tener informatizado el conocimiento de varios expertos.

Debido a la separación entre la base de conocimiento y el mecanismo de inferencia, los sistemas expertos tienen gran flexibilidad, lo que se traduce en una mejor modularidad, modificabilidad y legibilidad del conocimiento.

b) Inconvenientes

El conocimiento humano e complejo de extraer y, a veces, es problemático representarlo. Si un problema sobrepasa la competencia de un sistema experto, sus

prestaciones se degradan de forma notable. Además, las estrategias de razonamiento de los motores de inferencia suelen estar programadas procedimentalmente y se adaptan mal a las circunstancias. Están limitados para tratar problemas con información incompleta.

Un experto humano no estudia progresivamente una hipótesis, sino que decide de inmediato cuando se enfrenta a una situación análoga a otra ocurrida en el pasado. Los sistemas expertos no utilizan este razonamiento por analogía.

Los costes y duración del desarrollo de un sistema experto son bastante considerables y su campo de aplicación actual es restringido y especifico.

Problemas sociales que acarrean al ser susceptibles de influir en la estructura y número de empleos.

1.4.

Prolog

I. Introducción a prolog

La Programación Lógica es un paradigma de computación que consiste de un enfoque declarativo para escribir programas para el computador. PROLOG es un lenguaje de computación basada en ese paradigma. Los programas lógicos pueden ser entendidos y estudiados a partir de dos conceptos: verdad y deducción lógica. En programación lógica, uno puede preguntarse si un axioma de un programa es verdad bajo alguna interpretación de los símbolos del programa y si ciertas declaraciones lógicas son consecuencia del programa. Esas preguntas pueden ser respondidas independientemente de cualquier mecanismo de ejecución concreto.

Por otro lado, PROLOG es un lenguaje de programación con un significado operacional preciso que toma prestado sus

conceptos básicos de la programación lógica. Los programas PROLOG son instrucciones para ejecutar sobre el computador. Esas instrucciones casi siempre son leídas como instrucciones lógicas y, lo más importante, el resultado de una computación de un programa PROLOG es una consecuencia lógica de los axiomas en éste.

Es ampliamente aceptado que una programación efectiva en PROLOG requiere de una comprensión de la teoría de programación lógica, por lo menos en sus aspectos fundamentales, pero también que esto redunda en un mayor dominio del procesamiento de la información usando el computador.

II. Características de prolog

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.

¿Qué es conocido? (hechos, reglas)

¿Qué preguntar? (Cómo resolverlo)

En ProLog, se llega a una solución infiriéndola desde algo ya conocido.

III. Predicados en prolog

Los predicados son los elementos ejecutables en ProLog. En muchos sentidos se asemejan a los procedimientos o funciones típicos de los lenguajes imperativos. Una llamada concreta a un predicado, con unos argumentos concretos, se denomina objetivo. Todos los objetivos tiene un resultado de éxito o fallo tras su ejecución, indicando si el predicado es

cierto para los argumentos dados, o por el contrario, es falso. Cuando un objetivo tiene éxito, las variables libres que aparecen en los argumentos pueden quedar ligadas. Estos son los valores que hacen cierto el predicado. Si el predicado falla, no ocurren ligaduras en las variables libres.

Se utilizan para expresar propiedades de los objetos, y relaciones entre ellos, predicados. En ProLog se conocen como hechos. Se debe tener en cuenta que:

Los nombres de todos los objetos y relaciones deben

comenzar con una letra minúscula.

Primero se escribe la relación o propiedad: predicado.

los objetos se escriben separándolos mediante comas

Y

y

encerrados entre paréntesis: argumentos.

Al final del hecho debe ir un punto (".")

IV. Estructura de programa en prolog

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.

V. Derivados de prolog

La influencia de micro-PROLOG ha sido escasa en lenguajes posteriores, si bien algunos han adoptado algunas de sus características. El FRIL (Fuzzy Relational Inference Language) es una notable excepción, ya que basa explícitamente su sintaxis en él, sin ser no obstante plenamente compatible con el micro-PROLOG. Desarrollado en el seno de la Universidad de Bristol, la versión más reciente de este lenguaje es la 4.9,

aunque desde 2003 no ha sido actualizado. Su continuador más reciente ha sido hasta ahora el EDULOG, desarrollado a partir de 1999 y basado en la experiencia adquirida tras trabajar en el área educativa durante años con micro-PROLOG. Creado por el Grupo de Programación Funcional y Lógica, un equipo de trabajo integrado por docentes y alumnos de la Universidad Nacional de Luján y de la Universidad Nacional de la Pampa, ambas de Argentina, pretende superar los inconvenientes que plantea la utilización del habitualmente empleado interface SIMPLE y otros problemas observados en el aprendizaje que derivan de las características sintácticas propias del lenguaje, como el abundante uso de paréntesis o el formato rígido de algunas consultas.

En 1986 Van Caneghem publicó el código fuente en PASCAL de un intérprete llamado Micro Prolog II en su libro "L'anatomie de Prolog" (ISBN 2-7296-0149-X). Un intérprete distribuido como código fuente, escrito para Modula-2 por Umberto Salsi, y llamado simplemente PROLOG, basa explícitamente su sintaxis en la del micro-PROLOG con interface SIMPLE, sin llegar a ser enteramente compatible con el mismo. Otro intérprete de micro-PROLOG en PASCAL fue realizado por Zoran Budimac en 1990.

2. EXAMEN MÉDICO BASADO EN ENFERMEDADES RESPIRATORIAS

2.1. Planteamiento problema

Queremos realizar un sistema experto que realice un examen médico cuyas reglas de síntomas y enfermedades respiratorias se den a continuación.

Declarar un conjunto de síntomas y enfermedades respiratorias que existen.

Un paciente llegara e indicara los síntomas que tiene a través de un examen médico.

El sistema experto deberá reconocer que tipo de enfermedad respiratoria dicha persona puede tener.

2.2. Diseño de interfaces

experto deberá reconocer que tipo de enfermedad respiratoria dicha persona puede tener. 2.2. Diseño de interfaces
experto deberá reconocer que tipo de enfermedad respiratoria dicha persona puede tener. 2.2. Diseño de interfaces

2.3.

Implementación

A continuación se realizara la descripción del programa:

La presentación del programa realizado en prolog

% Autores: POZO VERA OSCAR Y KENNY ROJAS SALAS % Titulo: SISTEMA EXPERTO DIAGNOSTICO MEDICO SOBRE PROBLEMAS RESPIRATORIOS

En la siguiente línea se declara la librería para usar el modo gráfico:

:-use_module(library(pce)).

Ahora se especifica la ruta donde estarán las imágenes

:-pce_image_directory('./img').

Se activan los estilos de la libreriaxpce:

:-use_module(library(pce_style_item)).

Al iniciar el programa este inicia la parte del código descrito a continuación:

Aquí se inicia un cuadro de dialogo de nombre “Sistema Experto” el cual solo nos sirve para una presentación.

iniciar:- new(Dialog,dialog('Sistema Experto')),

Con la sentencia send presentamos el cuadro de dialogo con un tamaño de (700,300).

send(Dialog,size,size(700,300)),

Instanciamos algunas etiquetas labels colores.

con nombre y en

new(L1,label(text,'Ingenieria Informatica')),

send(L1,colour,black),

new(L2,label(text,'***Integrantes***')),

send(L2,colour,blue),

new(L3,label(text,'Pozo Vera Oscar Eduardo')),

send(L3,colour,red),

new(L4,label(text,'Rojas Salas Kenny')), send(L4,colour,red),

Luego con la sentencia send y append logramos introducir esas etiquetas dentro del cuadro dialogo.

send(Dialog,append(L1)),

send(Dialog,append(L2)),

send(Dialog,append(L3)),

send(Dialog,append(L4)),

Instanciamos un botón con el nombre de ‘iniciar’ el cual al hacer click me llevara hacia otra parte del código llamado main y luego cerrara el cuadro de dialogo actual.

new(Btniniciar,button('Iniciar',and(message(@prolog,main),

and(message(Dialog,destroy),message(Dialog,free))))),

send(Btniniciar,colour,green),

También instanciamos un botón con el nombre de ‘salir’ el cual al hacer click solo cerrara el cuadro de dialogo actual.

new(Btnsalir,button('Salir',

and(message(Dialog,destroy),message(Dialog,free)))),

send(Btnsalir,colour,red),

Con las siguientes sentencias logramos introducir los dos botones al cuadro de dialogo.

send(Dialog,append(Btniniciar)),

send(Dialog,append(Btnsalir)),

Y con las siguientes se logra que el cuadro de dialogo se abra de forma centrada.

send(Dialog,display,L1,point(60,130)),

send(Dialog,open_centered).

:-iniciar.

Se obtendrá lo siguiente:

: - iniciar. Se obtendrá lo siguiente: Una vez que se ha hecho clic sobre el

Una vez que se ha hecho clic sobre el botón iniciar, este me lleva hacia esta parte del código que se llama main. En el main se instancia otro cuadro de dialogo en el cual le hemos puesto de encabezado ‘SISTEMA EXPERTO- DIAGNOSTICO MEDICO SOBRE PROBLEMAS RESPIRATORIOS’, con un tamaño de (1000,1000) y se le introduce una etiqueta de nombre ‘BIENVENIDO A SU DIAGNOSTICO’.

main:-

new(Menu, dialog('SISTEMA EXPERTO - DIAGNOSTICO MEDICO SOBRE PROBLEMAS RESPIRATORIOS',

size(1000,1000))),

new(L, label(nombre,'BIENVENIDO A SU DIAGNÓSTICO')),

Aquí se crea dos variables de label, una de nombre @texto y la otra @resp1, los cuales me ayudara a presentar el resultado obtenido de las preguntas:

new(@texto, label(nombre,'De acuerdo con sus respuestas obtenidas usted padece de:')), new(@resp1, label(nombre,'')),

Se crea un botón salir.

new(Salir,button('SALIR',and(message(Menu,destroy),messa

ge(Menu,free)))),

Aquí se crea un Nuevo botón de nombre ‘iniciar su diagnóstico’.

new(@boton, button('Iniciar su diagnostico',message(@prolog, botones))),

send(Menu, append(L)), new(@btncarrera,button('¿Diagnostico?' send(Menu, display,L,point(125,20)), send(Menu, display,@boton,point(40,50)), send(Menu, display,@texto,point(20,100)), send(Menu, display,Salir,point(20,400)), send(Menu, display,@resp1,point(20,130)), send(Menu,open_centered).

)),

 En esta parte de código se especifica la hipótesis de las posibles enfermedades que

En esta parte de código se especifica la hipótesis de las posibles enfermedades que me servirán para diagnosticar el posible caso que se presente de acuerdo a las preguntas propuestas.

hipotesis(neumonia):- neumonia,!. hipotesis(gripe):- gripe,!. hipotesis(tos):- tos,!. hipotesis(sinositis):- sinositis,!. hipotesis(alergias):- alergias,!. hipotesis(desconocido). /* no existe*/

Reglas de identificación Una vez que verifica es llamado en el cuadro de dialogo se va ir mostrando cada una de las preguntas que se coloca en la sentencia que hemos puesto de nombre verifica, siempre y cuando las reglas de clasificación hayan tomado un camino a seguir.

/*NEUMONIA*/

neumonia :- padece_neumonia, verifica('¿Tiene catarro?'), verifica('¿Tiene altos niveles de fibre prolongada ( +3 días)?'), verifica('¿Tiene frecuencia respiratoria aumentada ( +20 días)?'), verifica('¿Se le produce un hundimiento o retracción de las costillas con la respiración?'), verifica('¿Tiene quejidos en el pecho como asmático al respirar?'), verifica('¿Tiene tos que produce una expectoración de tipo amarillenta?').

/*GRIPE*/

gripe :- padece_gripe, verifica('¿Tiene estornudadera?'), verifica('¿Tiene altos niveles de fibre con escalofríos?'), verifica('¿Las fosas nasales se abren y se cierran como un aleteo rápido con la respiración?'), verifica('¿Tiene decaimiento y malestar al cuerpo?'), verifica('¿Tiene mucosidad transparantecontiua?'), verifica('¿Tiene inflamacion de la fosas nasales con sensación de sequedad en la garganta?'), verifica('¿Tiene cefalea fija (Dolor de Cabeza), no pulsátil, que es consecuencia de la fiebre?').

/*TOS*/

tos :- padece_tos_con_flema, verifica('¿Toce con frecuencia?'), verifica('¿Tiene tos que produce una expectoración de tipo amarillenta o verdosa?'), verifica('¿Tiene decaimiento y malestar al cuerpo?'), verifica('¿Tiene inflamacion de las admigdalas?'), verifica('¿Tiene inflamacion de la fosas nasales?'),

verifica('¿Siente que esta deshidratado/a?').

/*SINOSITIS*/

sinositis :- padece_sinositis, verifica('¿Tiene picazon en el interior de las fosas nasales?'), verifica('¿Tiene estornudadera?'), verifica('¿Las fosas nasales se abren y se cierran como un aleteo rápido con la respiración?'), verifica('¿Tiene secreción retronasal?'), verifica('¿Tiene inflamacion de la fosas nasales?'), verifica('¿Tiene cefalea grave (Dolor de Cabeza)?'), verifica('¿Tiene decaimiento y malestar al cuerpo?').

/*ALERGIA*/

alergias :- padece_alergias, verifica('¿Tiene congestión o goteo de la nariz con estornudos(particularmente en la mañana)?'), verifica('¿Tiene picazón y lagrimeo de los ojos?'), verifica('¿Tiene Tos seca?'), verifica('¿Tiene silbido al respirar?'), verifica('¿Tiene mucosidad transparantecontiua?'), verifica('¿Tiene enrojecimiento de la piel?').

/*DESCONOCIDO*/

desconocido :- se_desconoce_enfermedad.

De aquí se obtiene las reglas de clasificación, que me ayudara a determinar que camino tomar.

Por ejemplo si uno coloca no en el cuadro de dialogo que aparece en la primera pregunta ¿tiene catarro? Pues si la respuesta es No hasta ahí no más llega, luego salta a la siguiente pregunta, si coloca si en la siguiente pregunta hecha, entonces se va automáticamente a las reglas de identificación.

padece_neumonia:- verifica('¿Tiene catarro?'),!. padece_gripe :- verifica('¿Tiene estornudadera?'),!. padece_tos_con_flema :- verifica('¿Toce con frecuencia?'),!. padece_sinositis :- verifica('¿Tiene picazon en el interior de las fosas nasales?'),!. padece_alergias :- verifica('¿Tiene congestión o goteo de la nariz con estornudos(particularmente en la mañana)?'),!.

Se crea la ventana con la imagen correspondiente al test de evaluación. Esta parte del dynamic solo se va ir llenando con los Si o No obtenidos de cada cuadro de dialogo por cada pregunta realizada:

:-dynamic si/1,no/1.

Aquí se abre un cuadro de dialogo con el nombre de ‘EXAMEN MEDICO’ y un label con nombre ‘Responde las siguientes preguntas’

preguntar(Problema):- new(Di,dialog('EXAMEN MEDICO')),

new(L2,label(texto,'Responde las siguientes preguntas')), new(La,label(prob,Problema)),

Aquí se crea dos botones de verificación de Si y No el cual retorna un valor de Si o No.

new(B1,button(si,and(message(Di,return,si)))),

new(B2,button(no,and(message(Di,return,no)))),

/*send(Di, gap, size(25, 25)),*/

En esta parte se colocan los labeles y botones al cuadro de dialogo.

send(Di,append(L2)),

send(Di,append(La)),

send(Di,append(B1)),

send(Di,append(B2)),

Esta parte solo me indica que el botón accionado por defecto será Sí.

send(Di,default_button,si),

send(Di,open_centered),get(Di,confirm,Answer),

write(Answer),send(Di,destroy),

Aquí llama a la sentencia problema para determinar por medio de las respuestas vual va a ser su diagnóstico.

((Answer==si)->assert(si(Problema));

assert(no(Problema)),fail).

verifica(S):-(si(S)->true; (no(S)->fail; preguntar(S))).

deshacer:-retract(si(_)),fail.

deshacer:-retract(no(_)),fail.

deshacer.

deshacer: - retract(no(_)),fail. deshacer. Creación de @botones botones : - borrado, send(@boton,

Creación de @botones

botones :- borrado, send(@boton, free), send(@btncarrera,free),

De acuerdo a las respuestas dadas por el usuario la enfermedad que se presentara será dada por las hipótesis que se declara al inicio del código.

hipotesis(Enfermedad), send(@texto, selection('De acuerdo con sus respuestas obtenidas usted padece de:')),

La hipotesis toma el nombre para almacenarla en Enfermedad, luego es presentada por la variable @resp1.

send(@resp1, selection(Enfermedad)), new(@boton, button('Iniciar su Evaluación',message(@prolog, botones))),

send(Menu, display,@boton,point(40,50)), send(Menu, display,@btncarrera,point(20,50)), deshacer.

borrado:- send(@resp1, selection('')).

deshacer. borrado: - send(@resp1, selection('')). 3. EJECUCIÓN  Primero damos click en el archivo

3. EJECUCIÓN

Primero damos click en el archivo sistemaexperto.pl como apreciamos en la siguiente figura.

tal

y

3. EJECUCIÓN  Primero damos click en el archivo sistemaexperto.pl como apreciamos en la siguiente figura.

Luego se nos mostrara la siguiente imagen en donde inmediatamente accederemos al sistema experto y listo para hacer la consulta.

al sistema experto y listo para hacer la consulta.  Ahora damos click en Iniciar para

Ahora damos click en Iniciar para empezar hacer nuestra consulta de nuestro diagnóstico.

 Ahora damos click en Iniciar su diagnóstico y nos saldrá una serie de preguntas

Ahora damos click en Iniciar su diagnóstico y nos saldrá una serie de preguntas que deberemos responder sobre los síntomas que tengamos y de acuerdo a eso obtener el diagnóstico del posible problema respiratorio que pueda tener como veremos en las siguientes figuras.

a eso obtener el diagnóstico del posible problema respiratorio que pueda tener como veremos en las







Y para finalizar una vez contestadas todas las preguntas nuestro sistema experto nos mostrara el diagnostico final sobre el problema respiratorio que tenga como veremos en la siguiente figura.

experto nos mostrara el diagnostico final sobre el problema respiratorio que tenga como veremos en la

4.

Conclusiones

Podemos decir que el empeño y las ganas por mejorar la calidad de los servicios es lo que hace que este sea un sistema necesario. se han utilizado estándares que van desde los nombres que se usaran en las enfermedades, síntomas, así como para el nivel de especificidad de la descripciones y preguntas. Con una adecuada estructura de la información se pudo implementar el desarrollo de este sistema experto, como hemos notado, es posible reutilizar código, es posible ampliar las características de nuestro SE partiendo de un SE básico, y ahora con más capacidad. En la actualidad sin lugar a dudas la inteligencia artificial nos está cambiando la vida, con estos sistemas inteligentes al parecer todo es más fácil.

5. Referencias Bibliográficas