Download "RECONOCIMIENTO DE MINERALES EN EL PERÚ"....
ASESOR:
PULIDO DIÁZ ARTURO
CURSO:
PROGRAMACIÓN LÓGICA
: SISTEMA EXPERTO PARA EL RECONOCIMIENTO DE MINERALES EN EL PERÚ
Integrantes:
ZAMORA CHINCHE CLAUDIA LIZZETE
SALVADOR ROJAS YENAN MAOL
conocimiento de Sistema Experto: Re conocimiento Minerales EN EL PERÚ
Zamora Chinche Claudia Lizzete
Salvador Rojas Yenan Maol
Estudiante de la Universidad Nacional de Trujillo.
Estudiante de la Universidad Nacional de Trujillo.
[email protected]
[email protected]
Asesor Ing. Arturo Díaz Pulido Docente de la Universidad Nacional de Trujillo.
Resumen.
Considerando la definición de sistema experto decidimos elaborar, valga la redundancia, un sistema experto para el reconocimiento de minerales, para lo cual hacemos una recopilación de algún mineral como muestra, eligiendo para cada uno de ellos una tabla que resalta sus características, para ello trabajamos en PROLOG para para implementar nuestro sistema sistema experto.
Palabras clave.
Prolog - Sistema Experto – Reconocimiento – Minerales
1. Introducción.
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 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 métodos de inferencia. Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fácil, reuniendo r euniendo dos capacidades para poder cumplirlo: a) Explicar sus razonamientos o base del conocimiento: 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. b) 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 ésta 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
a. 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. U n 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. b. 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 t ambién en medicina (ej. MYCIN y PUFF), y para localizar problemas en sistemas informáticos grandes y complejos. c. Los sistemas expertos son buenos para predecir resultados futuros a partir del conocimiento que tienen. Los sistemas meteorológicos y de inversión en bolsa son ejemplos de utilización en este sentido. El sistema PROSPECTOR es de este tipo. d. 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. e. El diseño requiere una enorme cantidad de conocimientos debido a que hay que tener en cuenta muchas especificaciones especificaciones y restricciones. En este caso, el sistema experto ayuda al diseñador a completar el diseño de forma competente y dentro de los límites de costes y de tiempo. Se diseñan circuitos electrónicos, circuitos integrados, tar jetas de circuito impreso, estructuras arquitectónicas, coches, piezas mecánicas, etc. f. Por último, un sistema experto puede evaluar 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 conocimiento. 1.2.1. Base de Conocimientos 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 r epresentar el conocimiento es mediante reglas de producción. El dominio de 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 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. 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 resolución de un problema. Contiene conocimiento sobre el caso concreto en que se trabaja. También se registrarán en ella las conclusiones intermedias 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 solución. La estrategia de control puede ser de encadenamiento progresivo o de encadenamiento 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 condición) 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 acción (esto último genera nuevos hechos que se añaden a la base de datos) 3. Si se llega al objetivo, se ha resuelto el problema; pro blema; en caso contrario, se vuelve al paso 1
Al encadenamiento regresivo se le suele llamar guiado por o bjetivos, ya que, el sistema comenzará por el objetivo (parte acción de las reglas) y operará retrocediendo para ver cómo 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 información ofrecida. A la inversa, formula la información generada por el sistema incluyendo respuestas a las preguntas, explicaciones y justificaciones. justificaciones. 1.2.5. 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 cómo ha alcanzado una conclusión, éste le presentará la secuencia completa de reglas usada 1.2.6. 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 la mayoría 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 más rápidamente. Esto permite ahorrar tiempo y dinero. A veces sin esa rapidez las soluciones obtenidas serían inútiles. 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 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. d) 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, capacidad de modificación y legibilidad del conocimiento. 1.3.2. Inconvenientes Inconvenientes
a) El conocimiento humano es 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. b) 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. c) Los costes y duración del desarrollo de un sistema experto son bastante considerables (aunque se suelen amortizar rápidamente) y su campo de aplicación actual es restringido y específico. d) Problemas sociales que acarrean al ser susceptibles de influir en la estructura y número de empleos.
1.4. Prolog
1.4.1. Introducción a Prolog. Su nombre viene de Programación en Lógica, creado a comienzos de los ’70:
Robert Kowalski: lado teórico. Maarten van Emden: demostración. Alain Colmerauer: Implementación.
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 hechos de relaciones r elaciones lógicas y detalles que se cumplen para la aplicación. Dicha base de datos no tiene t iene una estructura impuesta, ni un procedimiento o clase principal. Escribir un programa en Prolog consiste en declarar el conocimiento disponible acerca de los objetivos, además de sus relaciones y sus reglas. 1.4.2. Características de Prolog.
Prolog usa variables lógicas, las cuales no son comparables a las de otros lenguajes. Los programadores programadores las pueden usar como “blancos” en estructuras de datos que se llenan
gradualmente mientras corre el proceso.
La unificación es un método interno de manipulación de datos que pasa parámetros, retorna resultados, selecciona y construye estructuras de datos.
El modelo de control de flujo básico es la reevaluación (backtracking).
Las cláusulas de programa y los datos tienen la misma forma.
La forma relacional de los procedimientos hace posible definirlos de forma que sean “reversibles”.
Las cláusulas 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. Reconocimiento de Minerales – Prolog 2.1. Planteamiento y Diseño
Nuestra idea es brindar una herramienta útil para el veloz reconocimiento de minerales en nuestro país. Nuestro sistema experto árbol n-ario, donde nuestra raíz vendría a ser la acción de la realización del cuestionario, luego los nodos vendrían a ser las preguntas a consulta, y así vamos respondiendo, dando paso a los cuestionarios que siguen, y si en un una consulta doy respuestas inmediatamente inmediatamente me aparecerá como como solo se puede seleccionar una opción y regresa a lo anterior, anterior, así terminara todo los nodos, hasta hallar repuesta.
2.2. Implementación. Implementación.
esrespuesta('si'). esrespuesta('no'). %ARAGONITO espregunta('V-Carbonatos ?',X):-esrespuesta(X). %pre1 espregunta('CaCO3 ?',X):-esrespuesta(X). %pre4 espregunta('rombico ?',X):-esrespuesta(X). %pre10 espregunta('3.5-4 ?',X):-esrespuesta(X). %pre15 espregunta('2.95 ?',X):-esrespuesta(X). %pre21 %CALCITA %espregunta('V-Carbonatos ?',X):-esrespuesta(X). pre1 %espregunta('V-Carbonatos %espregunta('CaCO3 ?',X):-esrespuesta(X). pre4 espregunta('trigonal ?',X):-esrespuesta(X). %pre11
espregunta('3 ?',X):-esrespuesta(X). ?',X):-esrespuesta(X). espregunta('2.71 ?',X):-esrespuesta(X).
%pre16 %pre22
%CRISOCOLA espregunta('VIII-Silicatos espregunta('VIII-Silicatos ?',X):-esrespuesta(X). %pre2 espregunta('Cu SiO n H2O ?',X):-esrespuesta(X). %pre5 espregunta('monoclínico espregunta('monoclínico ?',X):-esrespuesta(X). %pre12 espregunta('2-4 ?',X):-esrespuesta(X). %pre17 espregunta('2-2.4 ?',X):-esrespuesta(X). %pre23 %CUARZO espregunta('IV-Óxidos ?',X):-esrespuesta(X). %pre3 espregunta('Si O2 ?',X):-esrespuesta(X). ?',X):-esrespuesta(X). %pre6 %espregunta('trigonal ?',X):-esrespuesta(X). pre11 espregunta('7 ?',X):-esrespuesta(X). ?',X):-esrespuesta(X). %pre18 espregunta('2.65 ?',X):-esrespuesta(X). %pre24 %ÓPALO %espregunta('IV-Óxidos ?',X):-esrespuesta(X). pre3 %espregunta('Si O2 ?',X):-esrespuesta(X). pre6 espregunta('coloidal amorfo ?',X):-esrespuesta(X). %pre13 espregunta('5-6.5 ?',X):-esrespuesta(X). %pre19 espregunta('1.9-2.5 ?',X):-esrespuesta(X). %pre25 %SERPENTINA %espregunta('VII-Silicatos?"',X):-esrespue %espregunta('VII-Silicatos?"',X):-esrespuesta(X). sta(X). pre 2 espregunta('Mg6 (Si4O10)(OH)8 ?',X):-esrespuesta(X). %pre7 espregunta('monoclínico espregunta('monoclínico y rómbico ?',X):-esrespuesta(X). %pre14 espregunta('3-4 ?',X):-esrespuesta(X). %pre20 espregunta('2.5-2.6 ?',X):-esrespuesta(X). ?',X):-esrespuesta(X). %pre26 %AZURITA %espregunta('V-Carbonatoss ?',X):-esrespuesta(X). pre1 %espregunta('V-Carbonato espregunta('Cu3(CO3)2(OH)2 espregunta('Cu3(CO3)2(OH)2 ?',X):-esrespuesta(X). %pre8 %espregunta('monoclínico %espregunta('monoclínico ?',X):-esrespuesta(X). pre12 %espregunta('3.5-4 ?',X):-esrespuesta(X). pre15 espregunta('3.83 ?',X):-esrespuesta(X). %pre27 %JASPE %espregunta('IV-Óxidos ?',X):-esrespuesta(X). pre3 %espregunta('Si O2 ?',X):-esrespuesta(X). pre6 %espregunta('trigonal ?',X):-esrespuesta(X). pre11 %espregunta('7 ?',X):-esrespuesta(X). pre18 espregunta('>2.65 ?',X):-esrespuesta(X). ?',X):-esrespuesta(X). %pre28 %MANGANOCALCITA %espregunta('V-Carbonatoss ?',X):-esrespuesta(X). pre1 %espregunta('V-Carbonato espregunta('MnCaCO3 espregunta('MnCaCO3 ?',X):-esrespuesta(X). %pre9
%espregunta('trigonal ?',X):-esrespuesta(X). pre11 %espregunta('3 ?',X):-esrespuesta(X). pre16 %espregunta('2.71 ?',X):-esrespuesta(X). pre22
main:new(K,dialog('proyecto')), % crecimiento crecimiento horizontal vertical send(K,size,size(760,525)),%tamaño send(K,size,size(760,525)),%tamaño de la interfas send(K,colour,colour(red)), send(K, append, new(Menu, menu_bar)), send(Menu, append, new(Creditos, popup(creditos))), send_list(Creditos, send_list(Creditos, append, [ menu_item(autores, message(@display, inform, 'Salvador rojas/Zamora Chinche')) ]), mostrar('C:/Programa/prin 2.jpg',K,Menu), send(K, append,button(iniciar,message(@prolog,bi append,button(iniciar,message(@prolog,bienvenida,K))), envenida,K))), send(K,open,point(295,90)).%lugar send(K,open,point(295,90)).%lugar en la pantalla point halt.qsave_program('c:/ejecutable. halt.qsave_program('c:/ejecutable.exe', exe', [stand_alone(true), goal(main)]). mostrar(V,K,M):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K, display, D1), send(D1,below(M)). bienvenida(K):new(K1,dialog('reconocimiento new(K1,dialog('reconocimiento de minerales')), send(K1,size,size(663,500)), send(K1,colour,colour(red)), mirar('C:/Programa/principal.jpg',K1), send(K1, append,button(preguntar,mes append,button(preguntar,message(@prolog,clase,K1))), sage(@prolog,clase,K1))), send(K1,open,point(350,100)). mirar(V,K1):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure),
send(F2, display, B), new(D1, device), send(D1, display, F2), send(K1, display, D1). clase(K1):- send(K1,destroy), new(K3,dialog('PREGUNTAS')), send(K3,append,label(text,'pertenece send(K3,append,label(text,'pertenece a la clase es:')), new(Pre1,menu('V-Carbonatos new(Pre1,menu('V-Carbonatos ?')), send_list(Pre1,append,[no send_list(Pre1,append,[no , si]), send(K3,append(Pre1)), new(Pre2,menu('VIII-Silicatos new(Pre2,menu('VIII-Silicatos ?')), send_list(Pre2,append,[no send_list(Pre2,append,[no ,si]), send(K3,append,Pre2), new(Pre3,menu('IV-Óxidos new(Pre3,menu('IV-Óxidos ?')), send_list(Pre3,append,[no send_list(Pre3,append,[no ,si]), send(K3,append,Pre3),
%send(K3,append,button(preguntar,message(@prolog,clase,Pre1?selection,Pre %send(K3,append,button(preguntar,message(@prolog,clas e,Pre1?selection,Pre2?selection,Pre3?s 2?selection,Pre3?s election),message(K3,destroy))),
new(X,button(siguiente,and(message(@prolog,clase,Pre1?selection,Pre2?s new(X,button(siguiente,and(message(@prolog,clase ,Pre1?selection,Pre2?selection,Pre3?sel election,Pre3?selection ection ),message(K3,destroy)))), send(K3,append,X), send(K3,open,point(570,300)). %PARA LARVAS clase(P1,P2,P3):espregunta('V-Carbonatos ?',P1),P1='si', espregunta('VIII-Silicatos espregunta('VIII-Silicatos ?',P2),P2='no', espregunta('IV-Óxidos ?',P3),P3='no', clase1. clase(P1,P2,P3):espregunta('V-Carbonatos ?',P1),P1='no', espregunta('VIII-Silicatos espregunta('VIII-Silicatos ?',P2),P2='si', espregunta('IV-Óxidos ?',P3),P3='no', clase2. clase(P1,P2,P3):espregunta('V-Carbonatos ?',P1),P1='no',
espregunta('VIII-Silicatos espregunta('VIII-Silicatos ?',P2),P2='no', espregunta('IV-Óxidos ?',P3),P3='si', clase3. clase(_,_,_):-new(K3,dialog('ERROR')), new(L,label(l,'ELIJA SOLO UNA OPCION',font('times','roman OPCION',font('times','roman',16))), ',16))), send(K3,append,L), send(K3,open,point(550,340)). clase1:new(K2,dialog('PREGUNTA')), send(K2,append,label(text,'Su send(K2,append,label(text,'Su formula es:')),
new(Pre4,menu('CaCO3 new(Pre4,menu('CaCO3 ?')), send_list(Pre4,append,[no send_list(Pre4,append,[no , si]), send(K2,append(Pre4)), new(Pre8,menu('Cu3(CO3)2(OH)2 new(Pre8,menu('Cu3(CO3)2(OH)2 ?')), send_list(Pre8,append,[no send_list(Pre8,append,[no , si]), send(K2,append(Pre8)), new(Pre9,menu('MnCaCO3 new(Pre9,menu('MnCaCO3 ?')), send_list(Pre9,append,[no send_list(Pre9,append,[no , si]), send(K2,append(Pre9)), send(K2,append,label(text,'Su send(K2,append,label(text,'Su sistema es:')),
new(Pre10,menu('rombico ?')), new(Pre10,menu('rombico send_list(Pre10,append,[no send_list(Pre10,append,[no , si]), send(K2,append(Pre10)), new(Pre11,menu('trigonal ?')), new(Pre11,menu('trigonal send_list(Pre11,append,[no send_list(Pre11,append,[no , si]), send(K2,append(Pre11)), new(Pre12,menu('monoclínico new(Pre12,menu('monoclínico ?')), send_list(Pre12,append,[no send_list(Pre12,append,[no , si]), send(K2,append(Pre12)),
send(K2,append,label(text,'Su send(K2,append,label(text,'Su dureza es:')),
new(Pre15,menu('3.5-4 new(Pre15,menu('3.5-4 ?')), send_list(Pre15,append,[no send_list(Pre15,append,[no , si]),
send(K2,append(Pre15)), new(Pre16,menu('3 ?')), send_list(Pre16,append,[no send_list(Pre16,append,[no , si]), send(K2,append(Pre16)), send(K2,append,label(text,'Su send(K2,append,label(text,'Su densidad es:')),
new(Pre21,menu('2.95 new(Pre21,menu('2.95 ?')), send_list(Pre21,append,[no send_list(Pre21,append,[no , si]), send(K2,append(Pre21)), new(Pre22,menu('2.71 new(Pre22,menu('2.71 ?')), send_list(Pre22,append,[no send_list(Pre22,append,[no , si]), send(K2,append(Pre22)), new(Pre27,menu('3.83 new(Pre27,menu('3.83 ?')), send_list(Pre27,append,[no send_list(Pre27,append,[no , si]), send(K2,append(Pre27)),
send(K2,append,button(atras,message(@prolog,clase,K2))),
new(X,button(siguiente,and(message(@prolog,imagen,Pre4?selection,Pre8?s new(X,button(siguiente,and(message(@prolog,image n,Pre4?selection,Pre8?selection,Pre9?selec election,Pre9?selecti ti on, Pre10?selection,Pre11?selection,Pre12?selecti Pre10?selection,Pre11?se lection,Pre12?selection,Pre15?selection on,Pre15?selection,Pre16?selection, ,Pre16?selection, Pre21?selection,Pre22?selection,Pre27?selecti Pre21?selection,Pre22?se lection,Pre27?selection),message(K2,destroy) on),message(K2,destroy)))), ))), send(K2,append,X),
send(K2,open,point(550,120)).
imagen(P4,P8,P9,P10,P11,P12,P15,P16,P21,P22,P27):new(K3,dialog('RESPUESTA')),
espregunta('CaCO3 espregunta('CaCO3 ?',P4),P4='si', espregunta('Cu3(CO3)2(OH)2 espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='no', espregunta('MnCaCO3 espregunta('MnCaCO3 ?',P9),P9='no', espregunta('rombico espregunta('rombico ?',P10),P10='si', espregunta('trigonal ?',P11),P11='no', espregunta('monoclínico espregunta('monoclínico ?',P12),P12='no',
espregunta('3.5-4 ?',P15),P15='si', espregunta('3 ?',P16),P16='no', espregunta('2.95 ?',P21),P21='si', espregunta('2.71 ?',P22),P22='no', espregunta('3.83 ?',P27),P27='no',
imagen1('C:/Programa/aragonito.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen1(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagen(P4,P8,P9,P10,P11,P12,P15,P16,P21,P22,P27):new(K3,dialog('RESPUESTA')),
espregunta('CaCO3 espregunta('CaCO3 ?',P4),P4='si', espregunta('Cu3(CO3)2(OH)2 espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='no', espregunta('MnCaCO3 espregunta('MnCaCO3 ?',P9),P9='no', espregunta('rombico espregunta('rombico ?',P10),P10='no', espregunta('trigonal ?',P11),P11='si', espregunta('monoclínico espregunta('monoclínico ?',P12),P12='no', espregunta('3.5-4 ?',P15),P15='no', espregunta('3 ?',P16),P16='si', espregunta('2.95 ?',P21),P21='no', espregunta('2.71 ?',P22),P22='si', espregunta('3.83 ?',P27),P27='no',
imagen2('C:/Programa/calcita.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen2(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagen(P4,P8,P9,P10,P11,P12,P15,P16,P21,P22,P27):new(K3,dialog('RESPUESTA')),
espregunta('CaCO3 espregunta('CaCO3 ?',P4),P4='no', espregunta('Cu3(CO3)2(OH)2 espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='si', espregunta('MnCaCO3 espregunta('MnCaCO3 ?',P9),P9='no', espregunta('rombico espregunta('rombico ?',P10),P10='no', espregunta('trigonal ?',P11),P11='no', espregunta('monoclínico espregunta('monoclínico ?',P12),P12='si', espregunta('3.5-4 ?',P15),P15='si', espregunta('3 ?',P16),P16='no', espregunta('2.95 ?',P21),P21='no', espregunta('2.71 ?',P22),P22='no', espregunta('3.83 ?',P27),P27='si',
imagen3('C:/Programa/azurita.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen3(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagen(P4,P8,P9,P10,P11,P12,P15,P16,P21,P22,P27):new(K3,dialog('RESPUESTA')),
espregunta('CaCO3 espregunta('CaCO3 ?',P4),P4='no', espregunta('Cu3(CO3)2(OH)2 espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='no', espregunta('MnCaCO3 espregunta('MnCaCO3 ?',P9),P9='si', espregunta('rombico espregunta('rombico ?',P10),P10='no', espregunta('trigonal ?',P11),P11='si', espregunta('monoclínico espregunta('monoclínico ?',P12),P12='no', espregunta('3.5-4 ?',P15),P15='no', espregunta('3 ?',P16),P16='si', espregunta('2.95 ?',P21),P21='no', espregunta('2.71 ?',P22),P22='si', espregunta('3.83 ?',P27),P27='no',
imagen4('C:/Programa/manganocalcita.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen4(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1). imagen(_,_,_,_,_,_,_,_,_,_,_):-new(D,dialog('ERROR')), new(L,label(l,'MINERAL new(L,label(l,'MINERAL NO DETERMINADO',font('times','roman',16))), DETERMINADO',font('times','roman',16))), send(D,append,L), send(D,open,point(550,340)).
clase2:new(K2,dialog('PREGUNTA')), send(K2,append,label(text,'Su send(K2,append,label(text,'Su formula es:')),
new(Pre5,menu('Cu new(Pre5,menu('Cu SiO n H2O ?')), send_list(Pre5,append,[no send_list(Pre5,append,[no , si]), send(K2,append(Pre5)), new(Pre7,menu('Mg6 (Si4O10)(OH)8 ?')), send_list(Pre7,append,[no send_list(Pre7,append,[no , si]), send(K2,append(Pre7)),
send(K2,append,label(text,'Su send(K2,append,label(text,'Su sistema es:')),
new(Pre12,menu('monoclínico new(Pre12,menu('monoclínico ?')), send_list(Pre12,append,[no send_list(Pre12,append,[no , si]), send(K2,append(Pre12)), new(Pre14,menu('monoclínico new(Pre14,menu('monoclínico y rómbico ?')), send_list(Pre14,append,[no send_list(Pre14,append,[no , si]), send(K2,append(Pre14)),
send(K2,append,label(text,'Su send(K2,append,label(text,'Su dureza es:')),
new(Pre17,menu('2-4 ?')), send_list(Pre17,append,[no send_list(Pre17,append,[no , si]), send(K2,append(Pre17)), new(Pre20,menu('3-4 ?')), send_list(Pre20,append,[no send_list(Pre20,append,[no , si]), send(K2,append(Pre20)), send(K2,append,label(text,'Su send(K2,append,label(text,'Su densidad es:')),
new(Pre23,menu('2-2.4 new(Pre23,menu('2-2.4 ?')), send_list(Pre23,append,[no send_list(Pre23,append,[no , si]), send(K2,append(Pre23)), new(Pre26,menu('2.5-2.6 new(Pre26,menu('2.5-2.6 ?')), send_list(Pre26,append,[no send_list(Pre26,append,[no , si]), send(K2,append(Pre26)),
send(K2,append,button(atras,message(@prolog,clase,K2))),
new(X,button(siguiente,and(message(@prolog,imagenII,Pre5?selection, new(X,button(siguiente,and(message(@prolog,image nII,Pre5?selection,Pre7?selection,Pre12?sel Pre7?selection,Pre12?selee ction, Pre14?selection,Pre17?selection,Pre20?selec Pre14?selection,Pre17?selection,Pre20?selection,Pre23?selection,Pre tion,Pre23?selection,Pre26?selection),mess 26?selection),message(K2,de age(K2,de stroy)))), send(K2,append,X), send(K2,open,point(550,150)).
imagenII(P5,P7,P12,P14,P17,P20,P23,P26):new(K3,dialog('RESPUESTA')),
espregunta('Cu SiO n H2O ?',P5),P5='si', espregunta('Mg6 (Si4O10)(OH)8 ?',P7),P7='no',
espregunta('monoclínico espregunta('monoclínico ?',P12),P12='si', espregunta('monoclínico espregunta('monoclínico y rómbico ?',P14),P14='no', espregunta('2-4 ?',P17),P17='si', espregunta('3-4 ?',P20),P20='no', espregunta('2-2.4 ?',P23),P23='si', espregunta('2.5-2.6 ?',P26),P26='no',
imagen5('C:/Programa/crisocola.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen5(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagenII(P5,P7,P12,P14,P17,P20,P23,P26):new(K3,dialog('RESPUESTA')),
espregunta('Cu SiO n H2O ?',P5),P5='no', espregunta('Mg6 (Si4O10)(OH)8 ?',P7),P7='si',
espregunta('monoclínico espregunta('monoclínico ?',P12),P12='no', espregunta('monoclínico espregunta('monoclínico y rómbico ?',P14),P14='si', espregunta('2-4 ?',P17),P17='no', espregunta('3-4 ?',P20),P20='si', espregunta('2-2.4 ?',P23),P23='no', espregunta('2.5-2.6 ?',P26),P26='si',
imagen6('C:/Programa/serpetina.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen6(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagenII(_,_,_,_,_,_,_,_):-new(D,dialog('ERROR')), new(L,label(l,'MINERAL new(L,label(l,'MINERAL NO DETERMINADO',font('times','roman',16))), DETERMINADO',font('times','roman',16))), send(D,append,L), send(D,open,point(550,340)).
clase3:new(K2,dialog('PREGUNTA')), send(K2,append,label(text,'Su send(K2,append,label(text,'Su formula es:')),
new(Pre6,menu('Si new(Pre6,menu('Si O2 ?')), send_list(Pre6,append,[no send_list(Pre6,append,[no , si]), send(K2,append(Pre6)),
send(K2,append,label(text,'Su send(K2,append,label(text,'Su sistema es:')),
new(Pre11,menu('trigonal ?')), new(Pre11,menu('trigonal send_list(Pre11,append,[no send_list(Pre11,append,[no , si]), send(K2,append(Pre11)), new(Pre13,menu('coloidal new(Pre13,menu('coloidal amorfo ?')), send_list(Pre13,append,[no send_list(Pre13,append,[no , si]), send(K2,append(Pre13)),
send(K2,append,label(text,'Su send(K2,append,label(text,'Su dureza es:')),
new(Pre18,menu('7 ?')), send_list(Pre18,append,[no send_list(Pre18,append,[no , si]), send(K2,append(Pre18)), new(Pre19,menu('5-6.5 new(Pre19,menu('5-6.5 ?')), send_list(Pre19,append,[no send_list(Pre19,append,[no , si]), send(K2,append(Pre19)), send(K2,append,label(text,'Su send(K2,append,label(text,'Su densidad es:')),
new(Pre24,menu('2.65 new(Pre24,menu('2.65 ?')), send_list(Pre24,append,[no send_list(Pre24,append,[no , si]), send(K2,append(Pre24)), new(Pre25,menu('1.9-2.5 new(Pre25,menu('1.9-2.5 ?')), send_list(Pre25,append,[no send_list(Pre25,append,[no , si]), send(K2,append(Pre25)), new(Pre28,menu('>2.65 new(Pre28,menu('>2.65 ?')), send_list(Pre28,append,[no send_list(Pre28,append,[no , si]), send(K2,append(Pre28)),
send(K2,append,button(atras,message(@prolog,clase,K2))),
new(X,button(siguiente,and(message(@prolog,imagenIII,Pre6?selection new(X,button(siguiente,and(message(@prolog,image nIII,Pre6?selection,Pre11?selection,Pre13?s ,Pre11?selection,Pre13?see lection,
Pre18?selection,Pre19?selection,Pre24?sel Pre18?selection,Pre19?selection,Pre24?selection,Pre25?selecti ection,Pre25?selection,Pre28?selection), on,Pre28?selection),message(K2,de message(K2,de stroy)))), send(K2,append,X),
send(K2,open,point(550,150)).
imagenIII(P6,P11,P13,P18,P19,P24,P25,P28):new(K3,dialog('RESPUESTA')),
espregunta('Si O2 ?',P6),P6='si', espregunta('trigonal ?',P11),P11='si', espregunta('coloidal espregunta('coloidal amorfo ?',P13),P13='no', espregunta('7 ?',P18),P18='si', espregunta('5-6.5 ?',P19),P19='no', espregunta('2.65 ?',P24),P24='si', espregunta('1.9-2.5 ?',P25),P25='no', espregunta('>2.65 ?',P28),P28='no',
imagen7('C:/Programa/cuarzo.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen7(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagenIII(P6,P11,P13,P18,P19,P24,P25,P28):new(K3,dialog('RESPUESTA')),
espregunta('Si O2 ?',P6),P6='si', espregunta('trigonal ?',P11),P11='no', espregunta('coloidal espregunta('coloidal amorfo ?',P13),P13='si', espregunta('7 ?',P18),P18='no', espregunta('5-6.5 ?',P19),P19='si', espregunta('2.65 ?',P24),P24='no', espregunta('1.9-2.5 ?',P25),P25='si', espregunta('>2.65 ?',P28),P28='no',
imagen8('C:/Programa/opalo.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)). imagen8(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagenIII(P6,P11,P13,P18,P19,P24,P25,P28):new(K3,dialog('RESPUESTA')),
espregunta('Si O2 ?',P6),P6='si', espregunta('trigonal ?',P11),P11='si', espregunta('coloidal espregunta('coloidal amorfo ?',P13),P13='no', espregunta('7 ?',P18),P18='si', espregunta('5-6.5 ?',P19),P19='no', espregunta('2.65 ?',P24),P24='no', espregunta('1.9-2.5 ?',P25),P25='no', espregunta('>2.65 ?',P28),P28='si',
imagen9('C:/Programa/jaspe.jpg',K3),
send(K3,append,button(continuar,message(@prolog,clase,K3))), send(K3,open,point(300,100)).
imagen9(V,K3):- new(I, image(V)), new(B, bitmap(I)), new(F2, figure), send(F2, display, B), new(D1, device), send(D1, display, F2), send(K3, display, D1).
imagenIII(_,_,_,_,_,_,_,_):-new(D,dialog('ERROR')), new(L,label(l,'MINERAL new(L,label(l,'MINERAL NO DETERMINADO',font('ti D ETERMINADO',font('times','roman',16))), mes','roman',16))), send(D,append,L), send(D,open,point(550,340)).
3. Ejecución
- Ejecutamos nuestro programa, abrimos nuestro programa y esc ribimos “main.”y click en
enter, y nos mostrara en pantalla la siguiente imagen.
Luego nos mostrara lo siguiente:
-vamos a donde dice iniciar y le damos click y nos mostrara lo siguiente
-vamos a la opción preguntar y luego empezaremos a contestar las preguntas, nos muestra
Seleccionamos si a cualquier de las l as tres opciones y nos mostrara lo siguiente
como se ve hemos seleccionado a las primera opciones “si”, luego damos siguiente y nos
dara como resultado el nombre del mineral y todo lo relacionado al mismo
4. Referencias Bibliográficas. Bibliográficas.
[1] http://www.ecured.cu/index.php/ProLog [2] http://es.wikipedia.org/wiki/Sistema_experto [3] http://www.informaticaintegral.net/sisexp.html [4] http://www.peruecol http://www.peruecologico.com.pe ogico.com.pe/mineral.htm /mineral.htm