Sei sulla pagina 1di 26

ASESOR: PULIDO DIZ ARTURO

CURSO: PROGRAMACIN LGICA



TEMA: SISTEMA EXPERTO PARA EL RECONOCIMIENTO DE
MINERALES EN EL PER

Integrantes:
ZAMORA CHINCHE CLAUDIA LIZZETE

SALVADOR ROJAS YENAN MAOL


Sistema Experto: Reconocimiento de
Minerales EN EL PER







Resumen.
Considerando la definicin de sistema experto decidimos elaborar, valga la redundancia, un
sistema experto para el reconocimiento de minerales, para lo cual hacemos una recopilacin de
algn mineral como muestra, eligiendo para cada uno de ellos una tabla que resalta sus
caractersticas, para ello trabajamos en PROLOG para implementar nuestro sistema experto.

Palabras clave.
Prolog - Sistema Experto Reconocimiento Minerales

1. Introduccin.

Los sistemas expertos se pueden considerar como el primer producto verdaderamente
operacional de la inteligencia artificial. Son programas de ordenador diseados para actuar como
un especialista humano en un dominio particular o rea de conocimiento. En este sentido, pueden
considerarse como intermediarios entre el experto humano, que transmite su conocimiento al
Zamora Chinche Claudia
Lizzete

Estudiante de la Universidad
Nacional de Trujillo.
clau_11.11_zc@hotmail.com

Asesor

Ing. Arturo Daz Pulido

Docente de la Universidad
Nacional de Trujillo.
Salvador Rojas
Yenan Maol

Estudiante de la Universidad
Nacional de Trujillo.
elsaxo_quehabla@hotmail.com

sistema, y el usuario que lo utiliza para resolver un problema con la eficacia del especialista. El
sistema experto utilizar para ello el conocimiento que tenga almacenado y algunos mtodos de
inferencia. Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar
de una forma fcil, reuniendo dos capacidades para poder cumplirlo:

a) Explicar sus razonamientos o base del conocimiento: los sistemas expertos se deben realizar
siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicacin
para cada una de estas reglas, que a la vez se basan en hechos.

b) Adquisicin de nuevos conocimientos o integrador del sistema: son mecanismos de
razonamiento que sirven para modificar los
conocimientos anteriores. Sobre la base de lo anterior se puede decir que los sistemas expertos
son el producto de investigaciones en el campo de la inteligencia artificial ya que sta no intenta
sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con ms rapidez y eficacia
todas las tareas que realiza.

1.1. Usos de un sistema Experto


a. Un sistema experto es muy eficaz cuando tiene que analizar una gran cantidad de informacin,
interpretndola y proporcionando una recomendacin a partir de la misma. Un ejemplo es el
anlisis financiero, donde se estudian las oportunidades de inversin, dependiendo de los datos
financieros de un cliente y de sus propsitos.

b. Para detectar y reparar fallos en equipos electrnicos, se utilizan los sistemas expertos de
diagnstico y depuracin, que formulan listas de preguntas con las que obtienen los datos
necesarios para llegar a una conclusin. Entonces recomiendan las acciones adecuadas para
corregir los problemas descubiertos. Este tipo de sistemas se utilizan tambin en medicina (ej.
MYCIN y PUFF), y para localizar problemas en sistemas informticos grandes y complejos.
c. Los sistemas expertos son buenos para predecir resultados futuros a partir del conocimiento
que tienen. Los sistemas meteorolgicos y de inversin en bolsa son ejemplos de utilizacin en
este sentido. El sistema PROSPECTOR es de este tipo.

d. La planificacin es la secuencia de acciones necesaria para lograr una meta. Conseguir una
buena planificacin a largo plazo es muy difcil. Por ello, se usan sistemas expertos para gestionar
proyectos de desarrollo, planes de produccin de fbricas, estrategia militar y configuracin de
complejos sistemas informticos, entre otros.
e. El diseo requiere una enorme cantidad de conocimientos debido a que hay que tener en
cuenta muchas especificaciones y restricciones. En este caso, el sistema experto ayuda al
diseador a completar el diseo de forma competente y dentro de los lmites de costes y de
tiempo. Se disean circuitos electrnicos, circuitos integrados, tarjetas de circuito impreso,
estructuras arquitectnicas, coches, piezas mecnicas, etc.
f. Por ltimo, un sistema experto puede evaluar el nivel de conocimientos y comprensin de un
estudiante, y ajustar el proceso de aprendizaje de acuerdo con sus necesidades.





1.2. Arquitectura y funcionamiento de un sistema experto.

La mayora de los sistemas expertos tienen unos componentes bsicos: base de conocimientos,
motor de inferencia, base de datos e interfaz con el usuario. Muchos tienen, adems, un mdulo
de explicacin y un mdulo de adquisicin del conocimiento.

1.2.1. Base de Conocimientos

La base de conocimientos contiene el conocimiento especializado extrado del experto en el
dominio. El mtodo ms comn para representar el conocimiento es mediante reglas de
produccin. El dominio de conocimiento representado se divide, pues, en pequeas fracciones de
conocimiento o reglas. Una caracterstica muy importante es que la base de conocimientos es
independiente del mecanismo de inferencia que se utiliza para resolver los problemas. De esta
forma, cuando los conocimientos almacenados se han quedado obsoletos, o cuando se dispone de
nuevos conocimientos, es relativamente fcil aadir reglas nuevas, eliminar las antiguas o corregir
errores en las existentes.

1.2.2. Base de Datos

La base de datos o base de hechos es una parte de la memoria del ordenador que se utiliza para
almacenar los datos recibidos inicialmente para la resolucin de un problema. Contiene
conocimiento sobre el caso concreto en que se trabaja. Tambin se registrarn en ella las
conclusiones intermedias y los datos generados en el proceso de inferencia.

1.2.3. Motor de inferencias

El motor de inferencias es un programa que controla el proceso de razonamiento que seguir el
sistema experto. Utilizando los datos que se le suministran, recorre la base de conocimientos para
alcanzar una solucin. La estrategia de control puede ser de encadenamiento progresivo o de
encadenamiento regresivo. En el primer caso se comienza con los hechos disponibles en la base de
datos, y se buscan reglas que satisfagan esos datos. Normalmente, el sistema sigue los siguientes
pasos:

1. Evaluar las condiciones de todas las reglas respecto a la base de datos, identificando el conjunto
de reglas que se pueden aplicar (aquellas que satisfacen su parte condicin)

2. Si no se puede aplicar ninguna regla, se termina sin xito; en caso contrario se elige cualquiera
de las reglas aplicables y se ejecuta su parte accin (esto ltimo genera nuevos hechos que se
aaden a la base de datos)

3. Si se llega al objetivo, se ha resuelto el problema; en caso contrario, se vuelve al paso 1

Al encadenamiento regresivo se le suele llamar guiado por objetivos, ya que, el sistema comenzar
por el objetivo (parte accin de las reglas) y operar retrocediendo para ver cmo se deduce ese
objetivo partiendo de los datos.




1.2.4. Interfaz de Usuario

El interfaz de usuario permite que el usuario pueda describir el problema al sistema experto.
Interpreta sus preguntas, los comandos y la informacin ofrecida. A la inversa, formula la
informacin generada por el sistema incluyendo respuestas a las preguntas, explicaciones y
justificaciones.

1.2.5. Mdulo de Explicacin

La mayora de los sistemas expertos contienen un mdulo de explicacin, diseado para aclarar al
usuario la lnea de razonamiento seguida en el proceso de inferencia. Si el usuario pregunta al
sistema cmo ha alcanzado una conclusin, ste le presentar la secuencia completa de reglas
usada

1.2.6. Mdulo de Adquisicin

El mdulo de adquisicin del conocimiento permite que se puedan aadir, eliminar o modificar
elementos de conocimiento (en la mayora de los casos reglas) en el sistema experto.

1.3. Ventajas e Inconvenientes de un Sistema Experto


1.3.1. Ventajas

a) Un sistema experto mejora la productividad al resolver y decidir los problemas ms
rpidamente. Esto permite ahorrar tiempo y dinero. A veces sin esa rapidez las soluciones
obtenidas seran intiles.

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

c) Con un sistema experto se obtienen soluciones ms fiables gracias al tratamiento automtico de
los datos, y ms contrastadas, debido a que se suele tener informatizado el conocimiento de
varios expertos.

d) Debido a la separacin entre la base de conocimiento y el mecanismo de inferencia, los
sistemas expertos tienen gran flexibilidad, lo que se traduce en una mejor modularidad, capacidad
de modificacin y legibilidad del conocimiento.

1.3.2. Inconvenientes

a) El conocimiento humano es complejo de extraer y, a veces, es problemtico representarlo. Si un
problema sobrepasa la competencia de un sistema experto, sus prestaciones se degradan de
forma notable. Adems, las estrategias de razonamiento de los motores de inferencia suelen estar
programadas procedimentalmente y se adaptan mal a las circunstancias. Estn limitados para
tratar problemas con informacin incompleta.

b) Un experto humano no estudia progresivamente una hiptesis, sino que decide de inmediato
cuando se enfrenta a una situacin anloga a otra ocurrida en el pasado. Los sistemas expertos no
utilizan este razonamiento por analoga.

c) Los costes y duracin del desarrollo de un sistema experto son bastante considerables (aunque
se suelen amortizar rpidamente) y su campo de aplicacin actual es restringido y especfico.
d) Problemas sociales que acarrean al ser susceptibles de influir en la estructura y nmero de
empleos.


1.4. Prolog

1.4.1. Introduccin a Prolog.

Su nombre viene de Programacin en Lgica, creado a comienzos de los 70:

Robert Kowalski: lado terico.
Maarten van Emden: demostracin.
Alain Colmerauer: Implementacin.

Prolog es un lenguaje de programacin simple, pero poderoso. Se basa en nociones matemticas
de relaciones de inferencia. Es un lenguaje declarativo e interpretado, esto quiere decir que el
lenguaje se usa para representar conocimientos sobre un determinado dominio y las relaciones
entre objetos de ese dominio.

Un programa en Prolog consiste de una base de hechos de relaciones lgicas y detalles que se
cumplen para la aplicacin. Dicha base de datos no tiene una estructura impuesta, ni un
procedimiento o clase principal.

Escribir un programa en Prolog consiste en declarar el conocimiento disponible acerca de los
objetivos, adems de sus relaciones y sus reglas.

1.4.2. Caractersticas de Prolog.


Prolog usa variables lgicas, las cuales no son comparables a las de otros lenguajes. Los
programadores las pueden usar como blancos en estructuras de datos que se llenan
gradualmente mientras corre el proceso.

La unificacin es un mtodo interno de manipulacin de datos que pasa parmetros,
retorna resultados, selecciona y construye estructuras de datos.

El modelo de control de flujo bsico es la reevaluacin (backtracking).

Las clusulas de programa y los datos tienen la misma forma.



La forma relacional de los procedimientos hace posible definirlos de forma que sean
reversibles.

Las clusulas proveen de una forma conveniente para analizar casos e indeterminismo.

Un programa en Prolog puede ser considerado como una base de datos relacional que
contiene reglas y hechos.


2. Reconocimiento de Minerales Prolog

2.1. Planteamiento y Diseo

Nuestra idea es brindar una herramienta til para el veloz reconocimiento de minerales en
nuestro pas.
Nuestro sistema experto rbol n-ario, donde nuestra raz vendra a ser la accin de la
realizacin del cuestionario, luego los nodos vendran 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 me aparecer como solo se puede seleccionar una
opcin y regresa a lo anterior, as terminara todo los nodos, hasta hallar repuesta.


2.2. Implementacin.

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('CaCO3 ?',X):-esrespuesta(X). pre4
espregunta('trigonal ?',X):-esrespuesta(X). %pre11
espregunta('3 ?',X):-esrespuesta(X). %pre16
espregunta('2.71 ?',X):-esrespuesta(X). %pre22

%CRISOCOLA
espregunta('VIII-Silicatos ?',X):-esrespuesta(X). %pre2
espregunta('Cu SiO n H2O ?',X):-esrespuesta(X). %pre5
espregunta('monoclnico ?',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). %pre6
%espregunta('trigonal ?',X):-esrespuesta(X). pre11
espregunta('7 ?',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):-esrespuesta(X). pre 2
espregunta('Mg6 (Si4O10)(OH)8 ?',X):-esrespuesta(X). %pre7
espregunta('monoclnico y rmbico ?',X):-esrespuesta(X). %pre14
espregunta('3-4 ?',X):-esrespuesta(X). %pre20
espregunta('2.5-2.6 ?',X):-esrespuesta(X). %pre26

%AZURITA
%espregunta('V-Carbonatos ?',X):-esrespuesta(X). pre1
espregunta('Cu3(CO3)2(OH)2 ?',X):-esrespuesta(X). %pre8
%espregunta('monoclnico ?',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). %pre28

%MANGANOCALCITA
%espregunta('V-Carbonatos ?',X):-esrespuesta(X). pre1
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 horizontal vertical
send(K,size,size(760,525)),%tamao 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, 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,bienvenida,K))),
send(K,open,point(295,90)).%lugar en la pantalla point

halt.qsave_program('c:/ejecutable.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 de minerales')),
send(K1,size,size(663,500)),
send(K1,colour,colour(red)),

mirar('C:/Programa/principal.jpg',K1),

send(K1, append,button(preguntar,message(@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 a la clase es:')),

new(Pre1,menu('V-Carbonatos ?')),
send_list(Pre1,append,[no , si]),
send(K3,append(Pre1)),

new(Pre2,menu('VIII-Silicatos ?')),
send_list(Pre2,append,[no ,si]),
send(K3,append,Pre2),

new(Pre3,menu('IV-xidos ?')),
send_list(Pre3,append,[no ,si]),
send(K3,append,Pre3),



%send(K3,append,button(preguntar,message(@prolog,clase,Pre1?selection,Pre2?selection,Pre3?s
election),message(K3,destroy))),


new(X,button(siguiente,and(message(@prolog,clase,Pre1?selection,Pre2?selection,Pre3?selection
),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 ?',P2),P2='no',
espregunta('IV-xidos ?',P3),P3='no',
clase1.

clase(P1,P2,P3):-
espregunta('V-Carbonatos ?',P1),P1='no',
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 ?',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',16))),
send(K3,append,L),
send(K3,open,point(550,340)).

clase1:-
new(K2,dialog('PREGUNTA')),

send(K2,append,label(text,'Su formula es:')),


new(Pre4,menu('CaCO3 ?')),
send_list(Pre4,append,[no , si]),
send(K2,append(Pre4)),

new(Pre8,menu('Cu3(CO3)2(OH)2 ?')),
send_list(Pre8,append,[no , si]),
send(K2,append(Pre8)),

new(Pre9,menu('MnCaCO3 ?')),
send_list(Pre9,append,[no , si]),
send(K2,append(Pre9)),

send(K2,append,label(text,'Su sistema es:')),


new(Pre10,menu('rombico ?')),
send_list(Pre10,append,[no , si]),
send(K2,append(Pre10)),

new(Pre11,menu('trigonal ?')),
send_list(Pre11,append,[no , si]),
send(K2,append(Pre11)),

new(Pre12,menu('monoclnico ?')),
send_list(Pre12,append,[no , si]),
send(K2,append(Pre12)),


send(K2,append,label(text,'Su dureza es:')),


new(Pre15,menu('3.5-4 ?')),
send_list(Pre15,append,[no , si]),
send(K2,append(Pre15)),

new(Pre16,menu('3 ?')),
send_list(Pre16,append,[no , si]),
send(K2,append(Pre16)),

send(K2,append,label(text,'Su densidad es:')),


new(Pre21,menu('2.95 ?')),
send_list(Pre21,append,[no , si]),
send(K2,append(Pre21)),

new(Pre22,menu('2.71 ?')),
send_list(Pre22,append,[no , si]),
send(K2,append(Pre22)),

new(Pre27,menu('3.83 ?')),
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?selection,Pre9?selecti
on,
Pre10?selection,Pre11?selection,Pre12?selection,Pre15?selection,Pre16?selection,
Pre21?selection,Pre22?selection,Pre27?selection),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 ?',P4),P4='si',
espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='no',
espregunta('MnCaCO3 ?',P9),P9='no',

espregunta('rombico ?',P10),P10='si',
espregunta('trigonal ?',P11),P11='no',
espregunta('monoclnico ?',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 ?',P4),P4='si',
espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='no',
espregunta('MnCaCO3 ?',P9),P9='no',

espregunta('rombico ?',P10),P10='no',
espregunta('trigonal ?',P11),P11='si',
espregunta('monoclnico ?',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 ?',P4),P4='no',
espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='si',
espregunta('MnCaCO3 ?',P9),P9='no',

espregunta('rombico ?',P10),P10='no',
espregunta('trigonal ?',P11),P11='no',
espregunta('monoclnico ?',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 ?',P4),P4='no',
espregunta('Cu3(CO3)2(OH)2 ?',P8),P8='no',
espregunta('MnCaCO3 ?',P9),P9='si',

espregunta('rombico ?',P10),P10='no',
espregunta('trigonal ?',P11),P11='si',
espregunta('monoclnico ?',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 NO 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 formula es:')),


new(Pre5,menu('Cu SiO n H2O ?')),
send_list(Pre5,append,[no , si]),
send(K2,append(Pre5)),

new(Pre7,menu('Mg6 (Si4O10)(OH)8 ?')),
send_list(Pre7,append,[no , si]),
send(K2,append(Pre7)),



send(K2,append,label(text,'Su sistema es:')),


new(Pre12,menu('monoclnico ?')),
send_list(Pre12,append,[no , si]),
send(K2,append(Pre12)),

new(Pre14,menu('monoclnico y rmbico ?')),
send_list(Pre14,append,[no , si]),
send(K2,append(Pre14)),


send(K2,append,label(text,'Su dureza es:')),


new(Pre17,menu('2-4 ?')),
send_list(Pre17,append,[no , si]),
send(K2,append(Pre17)),

new(Pre20,menu('3-4 ?')),
send_list(Pre20,append,[no , si]),
send(K2,append(Pre20)),

send(K2,append,label(text,'Su densidad es:')),


new(Pre23,menu('2-2.4 ?')),
send_list(Pre23,append,[no , si]),
send(K2,append(Pre23)),

new(Pre26,menu('2.5-2.6 ?')),
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,Pre7?selection,Pre12?sele
ction,

Pre14?selection,Pre17?selection,Pre20?selection,Pre23?selection,Pre26?selection),message(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('monoclnico ?',P12),P12='si',
espregunta('monoclnico y rmbico ?',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('monoclnico ?',P12),P12='no',
espregunta('monoclnico y rmbico ?',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 NO 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 formula es:')),


new(Pre6,menu('Si O2 ?')),
send_list(Pre6,append,[no , si]),
send(K2,append(Pre6)),

send(K2,append,label(text,'Su sistema es:')),


new(Pre11,menu('trigonal ?')),
send_list(Pre11,append,[no , si]),
send(K2,append(Pre11)),

new(Pre13,menu('coloidal amorfo ?')),
send_list(Pre13,append,[no , si]),
send(K2,append(Pre13)),


send(K2,append,label(text,'Su dureza es:')),


new(Pre18,menu('7 ?')),
send_list(Pre18,append,[no , si]),
send(K2,append(Pre18)),

new(Pre19,menu('5-6.5 ?')),
send_list(Pre19,append,[no , si]),
send(K2,append(Pre19)),

send(K2,append,label(text,'Su densidad es:')),


new(Pre24,menu('2.65 ?')),
send_list(Pre24,append,[no , si]),
send(K2,append(Pre24)),

new(Pre25,menu('1.9-2.5 ?')),
send_list(Pre25,append,[no , si]),
send(K2,append(Pre25)),

new(Pre28,menu('>2.65 ?')),
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,Pre11?selection,Pre13?se
lection,

Pre18?selection,Pre19?selection,Pre24?selection,Pre25?selection,Pre28?selection),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 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 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 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 NO DETERMINADO',font('times','roman',16))),
send(D,append,L),
send(D,open,point(550,340)).



3. Ejecucin
- Ejecutamos nuestro programa, abrimos nuestro programa y escribimos 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 opcin preguntar y luego empezaremos a contestar las preguntas, nos
muestra


Seleccionamos si a cualquier de las 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 Bibliogrficas.

[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.peruecologico.com.pe/mineral.htm

Potrebbero piacerti anche