Filtro CPL Polarizado ventajas

Inteligencia Artificial con Visual Prolog - Arbol Genealogico

En ésta ocación les vengo compartiendo un programa hecho en Visual Prolog, el cual se comporta de manera inteligente, cumpliendo con las siguientes tareas:

Considerando el árbol genealógico de su familia y tomando al menos 60 hechos: padre, madre, y sexo. Crear un programa en Visual Prolog que realice los razonamientos inteligentes siguientes:
Crear un menú con las siguientes opciones:
MENU DE OPCIONES DEL ARBOL GENEALOGICO
1.- Relación Nieta
2.- Relación Primo
3.- Relación Tío
4.- Relación Padre
5.- Relación Bisabuela
6.- Relación Bisnieta
7.- Relación Hermana
8.- Relación Sobrino
9.- Relación Bisabuelo
10.- Relación Bisnieto
11.- Relación Abuelo
12.- Relación Tía
13.- Relación Hermano
14.- Relación Madre
15.- Salir
En el menú, el usuario seleccionará la relación familiar que se desea buscar y la aplicación inteligente ejecutará la regla respectiva para dar la respuesta adecuada a la consulta.

El arbol genealogico es el siguiente:


El usuario tecleara los que desea hacer o lo que quiera saber. Si quiere saber quién es la madre de Angel, el programa le contestará, y así de igual manera para las opciones que tiene el programa.

Les dejo es link del video en el cual explico como funciona y como se le aplica la Inteligecia, o como se crean las reglas.


Código del Programa:
%AUTOR: IVAN LUIS JIMENEZ (IVANOVICH)

domains
 Nombre, Nieta, Primo, Tio, Padre, Bisabuela, Bisnieta, Hermana = string
 Sobrino, Bisabuelo, Bisnieto, Abuelo, Tia, Hermano, Madre , Sexo = string
 A, B, C, D, E = symbol
 Opcion = integer

predicates
 nondeterm menu
 nondeterm for
 nondeterm case(integer)
 
 nondeterm nieta(symbol,symbol)
 nondeterm padre(symbol,symbol)
 nondeterm madre(symbol,symbol)
 nondeterm primo(symbol,symbol)
 nondeterm hermano(symbol,symbol)
 nondeterm hermana(symbol,symbol)
 nondeterm bisabuela(symbol,symbol)
 nondeterm bisabuelo(symbol,symbol)
 nondeterm bisnieta(symbol,symbol)
 nondeterm bisnieto(symbol,symbol)
 nondeterm abuelo(symbol,symbol)
 nondeterm tio(symbol,symbol)
 nondeterm tia(symbol,symbol)
 nondeterm sobrino(symbol,symbol)
 nondeterm sexo(symbol,symbol)
 
clauses
 menu:-nl,nl,write("MENU DE OPCIONES DEL ARBOL GENEALOGICO"),nl,nl,
  write("  1.- Relación Nieta"),nl,
  write("  2.- Relación Primo"),nl,
  write("  3.- Relación Tio"),nl,
  write("  4.- Relación Padre"),nl,
  write("  5.- Relación Bisabuela"),nl,
  write("  6.- Relación Bisnieta"),nl,
  write("  7.- Relación Hermana"),nl,
  write("  8.- Relación Sobrino"),nl,
  write("  9.- Relación Bisabuelo"),nl,
  write("  10.- Relación Bisnieto"),nl,
  write("  11.- Relación Abuelo"),nl,
  write("  12.- Relación Tia"),nl,
  write("  13.- Relación Hermano"),nl,
  write("  14.- Relación Madre"),nl,
  write("  15.- Salir"),nl,nl.
  
 for.
 for:-for.
 
 case(1):-nl,write("Relación Nieta"),nl,
  write("Investigar la Nieta de _>"),
  readln(Nombre),
  nieta(Nieta,Nombre),
  write(">",Nieta,"\n").
 
 case(2):-nl,write("Relación Primo"),nl,
  write("Investigar el primo de _>"),
  readln(Nombre),
  primo(Primo,Nombre),
  write(">",Primo,"\n").
  
 case(3):-nl,write("Relación Tio"),nl,
  write("Investigar el tio de _>"),
  readln(Nombre),
  tio(Tio,Nombre),
  write(">",Tio,"\n").
  
 case(4):-nl,write("Relación Padre"),nl,
  write("Investigar el padre de _>"),
  readln(Nombre),
  padre(Padre,Nombre),
  write(">",Padre,"\n").
  
 case(5):-nl,write("Relación Bisabuela"),nl,
  write("Investigar la bisabuela de _>"),
  readln(Nombre),
  bisabuela(Bisabuela,Nombre),
  write(">",Bisabuela,"\n").
  
 case(6):-nl,write("Relación Bisnieta"),nl,
  write("Investigar la bisnieta de _>"),
  readln(Nombre),
  bisnieta(Bisnieta,Nombre),
  write(">",Bisnieta,"\n").
  
 case(7):-nl,write("Relación Hermana"),nl,
  write("Investigar la hermana de _>"),
  readln(Nombre),
  hermana(Hermana,Nombre),
  write(">",Hermana,"\n").
  
 case(8):-nl,write("Relación Sobrino"),nl,
  write("Investigar el sobrino de _>"),
  readln(Nombre),
  sobrino(Sobrino,Nombre),
  write(">",Sobrino,"\n").
 
 case(9):-nl,write("Relación Bisabuelo"),nl,
  write("Investigar el bisabuelo de _>"),
  readln(Nombre),
  bisabuelo(Bisabuelo,Nombre),
  write(">",Bisabuelo,"\n").
 
 case(10):-nl,write("Relación Bisnieto"),nl,
  write("Investigar el bisnieto de _>"),
  readln(Nombre),
  bisnieto(Bisnieto,Nombre),
  write(">",Bisnieto,"\n").
 
 case(11):-nl,write("Relación Abuelo"),nl,
  write("Investigar el abuelo de _>"),
  readln(Nombre),
  abuelo(Abuelo,Nombre),
  write(">",Abuelo,"\n").
 
 case(12):-nl,write("Relación Tia"),nl,
  write("Investigar el tia de _>"),
  readln(Nombre),
  tia(Tia,Nombre),
  write(">",Tia,"\n").
  
 case(13):-nl,write("Relación Hermano"),nl,
  write("Investigar el hermano de _>"),
  readln(Nombre),
  hermano(Hermano,Nombre),
  write(">",Hermano,"\n").
  
 case(14):-nl,write("Relación Madre"),nl,
  write("Investigar la madre de _>"),
  readln(Nombre),
  madre(Madre,Nombre),
  write(">",Madre,"\n").
 
  
 case(15):-write("Terminó proceso \n > presione ESC para cerrar"),nl,nl,!.

 %Padre
 padre(andres,ana).
 padre(andres,monica).
 padre(andres,carolina).
 padre(andres,alberto).
 padre(andres,fernando).
 padre(alberto,edith).
 padre(alberto,camila).
 padre(alberto,david).
 padre(fernando,rebeca).
 padre(fernando,eric).
 padre(victor,selena).
 padre(victor,paula).
 padre(manuel,rosa).
 padre(carlos,mario).
 padre(david,hector).
 padre(david,cesar).
 padre(eric,luis).
 padre(eric,miguel).
 padre(juan,karen).
 padre(alex,frida).
 padre(mario,cecilia).
 padre(brandon,susana).
 padre(hector,danna).
 padre(uriel,ximena).
 padre(luis,karla).
 padre(miguel,alfredo).
 
 %Madre
 madre(ana,victor).
 madre(ana,manuel).
 madre(ana,liz).
 madre(monica,itzel).
 madre(monica,zoe).
 madre(carolina,angel).
 madre(carolina,lisa).
 madre(carolina,carlos).
 madre(liz,itzand).
 madre(liz,juan).
 madre(itzel,ivan).
 madre(zoe,alex).
 madre(lisa,fatima).
 madre(edith,veronica).
 madre(edith,brandon).
 madre(rebeca,uriel).
 madre(selena,mateo).
 madre(selena,carmen).
 madre(paula,alicia).
 madre(itzand,bruno).
 madre(fatima,karlos).
 madre(fatima,raul).
 madre(veronica,katia).
 
 %Sexo
 sexo(ana,femenino).
 sexo(monica,femenino).
 sexo(carolina,femenino).
 sexo(liz,femenino).
 sexo(itzel,femenino).
 sexo(zoe,femenino).
 sexo(lisa,femenino).
 sexo(edith,femenino).
 sexo(camila,femenino).
 sexo(rebeca,femenino).
 sexo(selena,femenino).
 sexo(paula,femenino).
 sexo(rosa,femenino).
 sexo(itzand,femenino).
 sexo(fatima,femenino).
 sexo(veronica,femenino).
 sexo(carmen,femenino).
 sexo(alicia,femenino).
 sexo(karen,femenino).
 sexo(frida,femenino).
 sexo(cecilia,femenino).
 sexo(katia,femenino).
 sexo(susana,femenino).
 sexo(dana,femenino).
 sexo(ximena,femenino).
 sexo(karla,femenino).
 sexo(alberto,masculino).
 sexo(fernando,masculino).
 sexo(victor,masculino).
 sexo(manuel,masculino).
 sexo(angel,masculino).
 sexo(carlos,masculino).
 sexo(david,masculino).
 sexo(eric,masculino).
 sexo(juan,masculino).
 sexo(ivan,masculino).
 sexo(alex,masculino).
 sexo(mario,masculino).
 sexo(brandon,masculino).
 sexo(hector,masculino).
 sexo(cesar,masculino).
 sexo(uriel,masculino).
 sexo(luis,masculino).
 sexo(miguel,masculino).
 sexo(mateo,masculino).
 sexo(bruno,masculino).
 sexo(karlos,masculino).
 sexo(raul,masculino).
 sexo(alfredo,masculino).
 sexo(andres,masculino).
 
 %Reglas
 nieta(C,A):- madre(A,B),padre(B,C),sexo(C,femenino),A<>B.
 nieta(C,A):- padre(A,B),madre(B,C),sexo(C,femenino),A<>B.
 nieta(C,A):- madre(A,B),madre(B,C),sexo(C,femenino),A<>B.
 nieta(C,A):- padre(A,B),padre(B,C),sexo(C,femenino),A<>B.
 
 primo(E,C):- madre(B,C),madre(D,E),madre(A,B),madre(A,D),sexo(E,masculino),B<>D.
 primo(E,C):- madre(B,C),padre(D,E),madre(A,B),madre(A,D),sexo(E,masculino),B<>D.
 primo(E,C):- padre(B,C),madre(D,E),madre(A,B),madre(A,D),sexo(E,masculino),B<>D.
 
 primo(E,C):- madre(B,C),madre(D,E),padre(A,B),padre(A,D),sexo(E,masculino),B<>D.
 primo(E,C):- madre(B,C),padre(D,E),padre(A,B),padre(A,D),sexo(E,masculino),B<>D.
 primo(E,C):- padre(B,C),madre(D,E),padre(A,B),padre(A,D),sexo(E,masculino),B<>D.
 
 primo(E,C):- madre(B,C),madre(D,E),madre(A,B),padre(A,D),sexo(E,masculino),B<>D.
 primo(E,C):- madre(B,C),madre(D,E),padre(A,B),madre(A,D),sexo(E,masculino),B<>D.
 
 hermano(C,B):- madre(A,B),madre(A,C),sexo(C,masculino),B<>C.
 hermano(C,B):- padre(A,B),padre(A,C),sexo(C,masculino),B<>C.
 hermano(C,B):- madre(A,B),padre(A,C),sexo(C,masculino),B<>C.
 hermano(C,B):- padre(A,B),madre(A,C),sexo(C,masculino),B<>C.
 
 hermana(C,B):- madre(A,B),madre(A,C),sexo(C,femenino),B<>C.
 hermana(C,B):- padre(A,B),padre(A,C),sexo(C,femenino),B<>C.
 hermana(C,B):- madre(A,B),padre(A,C),sexo(C,femenino),B<>C.
 hermana(C,B):- padre(A,B),madre(A,C),sexo(C,femenino),B<>C.
 
 bisabuela(A,D):- madre(A,B),madre(B,C),madre(C,D),sexo(A,femenino),A<>B.
 bisabuela(A,D):- padre(A,B),padre(B,C),padre(C,D),sexo(A,femenino),A<>B.
 bisabuela(A,D):- madre(A,B),padre(B,C),madre(C,D),sexo(A,femenino),A<>B.
 bisabuela(A,D):- madre(A,B),padre(B,C),padre(C,D),sexo(A,femenino),A<>B.
 bisabuela(A,D):- padre(A,B),madre(B,C),madre(C,D),sexo(A,femenino),A<>B.
 bisabuela(A,D):- padre(A,B),madre(B,C),padre(C,D),sexo(A,femenino),A<>B.
 bisabuela(A,D):- padre(A,B),padre(B,C),madre(C,D),sexo(A,femenino),A<>B.
 bisabuela(A,D):- madre(A,B),madre(B,C),padre(C,D),sexo(A,femenino),A<>B.
 
 bisabuelo(A,D):- madre(A,B),madre(B,C),madre(C,D),sexo(A,masculino),A<>B.
 bisabuelo(A,D):- padre(A,B),padre(B,C),padre(C,D),sexo(A,masculino),A<>B.
 bisabuelo(A,D):- madre(A,B),padre(B,C),madre(C,D),sexo(A,masculino),A<>B.
 bisabuelo(A,D):- madre(A,B),padre(B,C),padre(C,D),sexo(A,masculino),A<>B.
 bisabuelo(A,D):- padre(A,B),madre(B,C),madre(C,D),sexo(A,masculino),A<>B.
 bisabuelo(A,D):- padre(A,B),madre(B,C),padre(C,D),sexo(A,masculino),A<>B.
 bisabuelo(A,D):- padre(A,B),padre(B,C),madre(C,D),sexo(A,masculino),A<>B.
 bisabuelo(A,D):- madre(A,B),madre(B,C),padre(C,D),sexo(A,masculino),A<>B.
 
 bisnieta(D,A):- madre(A,B),madre(B,C),madre(C,D),sexo(D,femenino),A<>B.
 bisnieta(D,A):- padre(A,B),padre(B,C),padre(C,D),sexo(D,femenino),A<>B.
 bisnieta(D,A):- madre(A,B),padre(B,C),madre(C,D),sexo(D,femenino),A<>B.
 bisnieta(D,A):- madre(A,B),padre(B,C),padre(C,D),sexo(D,femenino),A<>B.
 bisnieta(D,A):- padre(A,B),madre(B,C),madre(C,D),sexo(D,femenino),A<>B.
 bisnieta(D,A):- padre(A,B),madre(B,C),padre(C,D),sexo(D,femenino),A<>B.
 bisnieta(D,A):- padre(A,B),padre(B,C),madre(C,D),sexo(D,femenino),A<>B.
 bisnieta(D,A):- madre(A,B),madre(B,C),padre(C,D),sexo(D,femenino),A<>B.
 
 bisnieto(D,A):- madre(A,B),madre(B,C),madre(C,D),sexo(D,masculino),A<>B.
 bisnieto(D,A):- padre(A,B),padre(B,C),padre(C,D),sexo(D,masculino),A<>B.
 bisnieto(D,A):- madre(A,B),padre(B,C),madre(C,D),sexo(D,masculino),A<>B.
 bisnieto(D,A):- madre(A,B),padre(B,C),padre(C,D),sexo(D,masculino),A<>B.
 bisnieto(D,A):- padre(A,B),madre(B,C),madre(C,D),sexo(D,masculino),A<>B.
 bisnieto(D,A):- padre(A,B),madre(B,C),padre(C,D),sexo(D,masculino),A<>B.
 bisnieto(D,A):- padre(A,B),padre(B,C),madre(C,D),sexo(D,masculino),A<>B.
 bisnieto(D,A):- madre(A,B),madre(B,C),padre(C,D),sexo(D,masculino),A<>B.
 
 abuelo(A,C):- madre(A,B),padre(B,C),sexo(A,masculino),A<>B.
 abuelo(A,C):- padre(A,B),madre(B,C),sexo(A,masculino),A<>B.
 abuelo(A,C):- madre(A,B),madre(B,C),sexo(A,masculino),A<>B.
 abuelo(A,C):- padre(A,B),padre(B,C),sexo(A,masculino),A<>B.
 
 tio(D,C):- madre(A,B),padre(B,C),hermano(D,B),sexo(D,masculino),D<>B.
 tio(D,C):- padre(A,B),madre(B,C),hermano(D,B),sexo(D,masculino),D<>B.
 tio(D,C):- madre(A,B),madre(B,C),hermano(D,B),sexo(D,masculino),D<>B.
 tio(D,C):- padre(A,B),padre(B,C),hermano(D,B),sexo(D,masculino),D<>B.
 
 tia(D,C):- madre(A,B),padre(B,C),hermana(D,B),sexo(D,femenino),D<>B.
 tia(D,C):- padre(A,B),madre(B,C),hermana(D,B),sexo(D,femenino),D<>B.
 tia(D,C):- madre(A,B),madre(B,C),hermana(D,B),sexo(D,femenino),D<>B.
 tia(D,C):- padre(A,B),padre(B,C),hermana(D,B),sexo(D,femenino),D<>B.
 
 sobrino(C,D):- madre(A,B),padre(B,C),hermano(D,B),sexo(C,masculino),D<>B.
 sobrino(C,D):- padre(A,B),madre(B,C),hermano(D,B),sexo(C,masculino),D<>B.
 sobrino(C,D):- madre(A,B),madre(B,C),hermano(D,B),sexo(C,masculino),D<>B.
 sobrino(C,D):- padre(A,B),padre(B,C),hermano(D,B),sexo(C,masculino),D<>B.
 
goal
 for,nl,menu,
 write("Digite la opción_>"),
 readint(Opcion),nl,
 case(Opcion),
 Opcion=15,!.
  
Link de descarga del proyecto:
http://raboninco.com/GCWs


Cualquier duda,, sugerencia o comentario dejarlo en la parde de abajo.


Comentarios

Publicar un comentario