1 1. Dado el siguiente fragmento de un árbol familiar: “Isa y Juan

SISTEMAS BASADOS EN EL CONOCIMIENTO
Grado en Ingeniería Informática
Hoja de Problemas Tema 2
Sistemas Basados en Reglas
1. Dado el siguiente fragmento de un árbol familiar: “Isa y Juan son los padres de Pepe; Juan, por
su parte, es padre de Gema, la madre de Luis. Pili y Paco son padres de Mar. Mar y Pepe son los
padres de Ana, cuya hija es Bea”.
a) Representar mediante la definición de hechos hombre, mujer y progenitor (que se aplica
a dos personas indicando que la primera de ellas es el progenitor de la segunda), la
información del párrafo anterior.
b) Escribir una base de conocimiento que permita obtener las diferentes relaciones de
parentesco entre personas (padre, madre, hijo, hija, abuelo/a, tío/a, primo/a, suegro/a,
descendiente, ascendiente, etc.).
c) Ejecutar la inferencia paso a paso, viendo el contenido de la base de hechos (Facts) y el
conjunto conflicto (Agenda).
d) Repetir lo mismo con diferentes estrategias: amplitud (breadth), profundidad (depth).
¿Qué diferencia existe?
e) Modificar la representación de la información sobre las personas para hacerlo mediante
una plantilla (template) en la que al menos se defina el nombre, DNI y sexo. Rescribir la
base de conocimiento para adaptarla a la nueva representación.
2. Escribir un sistema basado en reglas que permita ordenar una lista de números utilizando (p.e.
mediante el método de la burbuja). La lista se encuentra en un hecho del tipo (lista 3 4 2 7 9 1).
3. Escribir un sistema basado en reglas para calcular las notas de los alumnos de una asignatura.
La asignatura tiene una componente teórica (examen) y otra práctica. Cada una de las partes se
introduce en el sistema por separado. En el cálculo de la nota final hay que tener en cuenta el
peso de cada componente, que deben aprobar por separado, si no se presentan a una parte la
nota será “no presentado”, etc. Además estos parámetros deben ser fácilmente modificables.
4. Componer y completar el problema de las Jarras visto en clase.
a) Definir un hecho con la situación inicial (ambas jarras vacías)
b) Definir una regla que detenga la ejecución si se alcanza el estado final deseado.
c) Analizar el comportamiento del sistema con diferentes estrategias de control (anchura y
profundidad)
d) Modificarlo para evitar ciclos simples (generar el mismo estado que el nodo padre)
e) Escribir una regla que elimine estados repetidos (puede ser útil la función (fact-index
?h), que devuelve el número entero que corresponde al índice del hecho ?h). Observar la
mejora de rendimiento.
f) Escribir una o más reglas que reconstruyan el camino desde el nodo inicial hasta el final,
dejando un hecho con la lista de nodos.
g) Escribir una o más reglas que muestren por la salida estándar el contenido de las jarras
en cada estado del camino a la solución.
h) Modificar la base de conocimiento para que se muestre también las acciones que llevan a
los estados.
5. Construir un sistema basado en reglas que resuelva el siguiente problema.
Se tienen cinco monedas dispuestas como se encuentran a continuación: A R A R A
El anverso de la moneda está representado por A y el reverso por R.
En cada movimiento se puede dar la vuelta a cualquier par de monedas contiguas.
La situación final que se quiere obtener es la siguiente: R R R A R.
Intentar resolverlo en general para cualquier número de monedas.
1
SISTEMAS BASADOS EN EL CONOCIMIENTO
Grado en Ingeniería Informática
Hoja de Problemas Tema 2
Sistemas Basados en Reglas
6. Dada la siguiente base de conocimiento, indicar el contenido de la memoria de trabajo, el
conjunto conflicto y la regla disparada en cada uno de los ciclos de ejecución si se utilizan las
siguientes estrategias de resolución de conjunto conflicto:
a) Anchura
b) Profundidad
c) LEX
d) Orden de escritura
(defrule R1
(defrule R2
(defrule R3
(defrule R4
(a
?h
(a
(b
(a
?x b)
<- (b
c ?x)
b d)
?x b)
?y c) => (assert (a ?x ?y))(retract ?h))
=> (assert (b ?x d)))
(a ?x ?y) => (assert (a ?x ?y)(a b b)))
=> (assert (b ?x c)))
Inicialmente la memoria de trabajo contiene el hecho (a c b)
7. Sistema de Ayuda a la Decisión para la Gestión de Embalses.
Se desea construir un sistema basado en el conocimiento para la gestión de riesgos en una cuenca
hidrográfica. La cuenca está dividida en subcuencas, cuyas lluvias inciden en un embalse. Por tanto
hay varios embalses en la cuenca, uno por subcuenca. Los embalses tienen una capacidad y, en un
momento determinado, un volumen, que puede obtenerse gracias a un sensor. Para obtener
información de las lluvias caídas en las últimas horas se dispone en cada subcuenca de varios
pluviómetros. Además se dispone de información del caudal que en cada momento está entrando a
un embalse a través de su aforo de entrada. A partir de la capacidad del embalse y su volumen se
puede calcular el porcentaje de llenado.
Subcuenca 1
Subcuenca 2
E1
E2
AP1
AP2
AP3
AP4
En las cercanías del cauce de los ríos se identifican áreas problema. Éstas son poblaciones o, en
general, zonas en las que pueden producirse daños por inundación. Para cada una de estas áreas
problema se conoce qué embalses pueden provocar daños en ella. En el ejemplo de la figura, el
embalse E1 puede causar daños en las áreas problemas AP1, AP2 y AP4, mientras que el embalse
E2 puede afectar a AP3 y AP4.
2
SISTEMAS BASADOS EN EL CONOCIMIENTO
Grado en Ingeniería Informática
Hoja de Problemas Tema 2
Sistemas Basados en Reglas
Se cuenta con un equipo de expertos hidrólogos, que han caracterizado un conjunto de patrones
típicos de problemas que se pueden producir a partir de estos datos. Dos de estos patrones son los
siguientes:
• Patrón de emergencia en un área problema: se identifica cuando un embalse tiene un
porcentaje de llenado alto, su caudal de entrada es alto y además las lluvias caídas son altas.
Cuando se cumplen esas condiciones, se identifica un problema en cada una de las áreas
problema que se puedan ver afectadas por ese embalse. La gravedad de este problema se
considera alta.
• Patrón de riesgo en las márgenes del río: Se identifica cuando un embalse tiene un
porcentaje de llenado medio, su caudal de entrada es medio o alto y además las lluvias
caídas son altas. Cuando se cumplen esas condiciones, se identifica un problema en cada una
de las áreas problema que se puedan ver afectadas por ese embalse. La gravedad de este
problema se considera media.
Se pide:
Construir una base de conocimiento en clips que permita identificar los problemas que puede haber
en un momento determinado.
Los datos de entrada al sistema serán hechos clips con los valores numéricos de los sensores de los
embalses (volumen), aforos de entrada (caudal) y pluviómetros (lluvias).
Sin embargo, para la resolución del ejercicio se asumirá que los datos de las lluvias y el caudal de
entrada ya se encuentran abstraídos, es decir, se conoce para cada subcuenca su valor cualitativo de
lluvia (baja, media o alta) y el caudal del aforo de entrada a los embalses (bajo, medio o alto). Por
tanto, puede olvidarse de la existencia de pluviómetros y medidores de caudal en los aforos de
entrada.
En cambio, lo que sí que habrá que calcular es el porcentaje de llenado del embalse (volumen /
capacidad * 100) y su valor cualitativo. Se considera los siguientes rangos de valores para el
porcentaje de llenado:
bajo: < 30 %
medio: entre 30 y 70 %
alto: > 70 %
La plantilla para los hechos que contienen los valores numéricos de los sensores debe ser:
(deftemplate sensor
(slot id)
(slot valor) ; valor numérico
)
En cuanto al resultado que debe dar el sistema es un hecho problema en la memoria de trabajo por
cada área problema que pueda sufrir daños y tipo de problema. Es decir, si hay tres áreas problema
que dependen de un embalse, deben aparecer tres hechos en la memoria de trabajo y si un área
puede tener daños por dos embalses habrá dos hechos distintos en la memoria de trabajo. A
continuación se muestra la declaración de la plantilla de estos objetos.
(deftemplate problema
(slot tipo)
; nombre del patrón (emergencia, riesgo ...)
(slot localizacion) ; área problema en donde se pueden producir daños
(slot gravedad)
; gravedad del problema (nula, baja, media, alta)
)
3