SISTEMAS EXPERTOS
Sistemas Expertos y modelos probabilísticos
Enrique Castillo, José Manuel Gutiérrez
Ing. Santos Pavon
Email:
[email protected]Tema 1: Búsqueda Heurística
Objetivo
Crear programas que simulen la lógica y el
razonamiento
Programación lógica: Prolog
Database Esquema básico
Domains de un programa
en PROLOG
Predicates
Clauses
goal
Prolog: Componentes
DATABASE
Utilizado para la simulación del aprendizaje
automático. Generalmente es idéntico al
predicado original, con alguna diferencia.
Database /*aprendizaje automático */
xesposo(symbol, symbol)
xmadre(symbol, symbol)
xmujer(symbol)
Prolog: Componentes
DOMAINS (Opcional)
Define las variables de dominio que se
utilizaran, pudiendo ser string, real, integer,
symbol
Domain
/* declaración tipos de variables */
a = symbol
num = integer
moneda = real
nombre = string
Prolog: Componentes
PREDICATES
Define los hechos y bases de conocimiento que
se utilizaran en el programa. Deben estar
definidos de lo contrario ocurrirá un error. Los
hechos pueden definirse con o sin parámetros
Predicates
nondeterm esposo(symbol, symbol)
nondeterm madre(symbol, symbol)
nondeterm hombre(symbol)
nondeterm verificasexo(symbol, symbol)
nondeterm inicio
Prolog: Componentes
CLAUSES
Definición de reglas de producción para
inferencias sobre las bases de conocimientos
Clauses
esposo(luis, luisa). Define base de conocimiento base
esposo(juan, juana). o primaria
esposo(pedro, pedra).
esposo(carla, carlos).
inicio:- write("\n\n Introduzca nombre: "), readln(N1),
write("\n\n Introduzca otro nombre: "), readln(N2),
verificasexo(N1, N2), nl. Define reglas de inferencia
verificasexo(N1, N2):- mujer(N1), hombre(N2), nl,
verifica(N1, N2).
Prolog: Componentes
GOAL
Inicia el programa. Este es el punto de
partida, luego hará las implicaciones
necesarias para obtener o que se busca.
goal
inicio. /* hecho que inicia el programa*/
Relaciones Genealógicas
Ejemplo: árbol genealógico
¿Cuál es el conocimiento base?
Este es aquel que debemos saber para poder
hacer inferencias
Por ejemplo
esposo(X,Y)
X es esposo de Y padre(X,Y)
X es el padre de Y madre(X)
X es la madre de Y genero(X)
X es mujer o varón
Ejemplo: árbol genealógico
Reglas que simulen razonamiento en la
inferencia de relaciones existentes
En una árbol familiar podemos ver las
siguientes relaciones:
X es prim@ de Y
primo(X,Y)
X es cuñad@ de Y cuñada(X,Y)
X es herman@ de Y hermano(X)
Etc, etc. suegro(X)
Ejemplo: árbol genealógico
Para saber si X es hermano de Y, debemos conocer si
tienen padres en común, al menos uno de ellos.
Por tanto:
Hermano(X,Y) :- padre(X,Z), padre(Y,Z).
Con esta regla podemos determinar si X es herman@
de Y.
Se interpreta
X es hermano de Y, si el padre de X, que es Z, es el
mismo padre de Y
Ejemplo: árbol genealógico
Los predicados serían:
Predicates
/*Esto sería conocimiento base*/
nondeterm esposo(symbol, symbol)
nondeterm madre(symbol, symbol)
nondeterm padre(symbol, symbol)
nondeterm hombre(symbol)
nondeterm mujer(symbol)
/*Esto sería reglas de producción */
nondeterm verificasexo(symbol, symbol)
nondeterm inicio
Resumen
Las reglas de inferencia deben estar bien definidas. El uso
de implicaciones es fundamental para lograr que el
programa sea lo mas sencillo posible.
A -> B
B -> C
----------
A -> B
Esto, sin embargo, puede llegar a ser muy complejo, sino se
tiene completo dominio de la lógica de predicados.
Próxima clase
Ejercicios propuestos de PROLOG
Actividad: Automatización
¿Cómo construir un SE que auxilie a un
estudiante y que le sugiera una carrera
según sus habilidades, características y
afinidades?
SISTEMAS EXPERTOS
Sistemas Expertos y modelos probabilísticos
Enrique Castillo, José Manuel Gutiérrez
Ing. Santos Pavon
Email:
[email protected]