Sistemas Basados en Reglas
Práctica 6
Sistemas Basados en Reglas
Vamos ahora a trabajar con
sistemas basados en reglas. Para ello utilizaremos una aplicación desarrollada
como proyecto fin de carrera en
la Escuela Universitaria de Ingeniería Técnica Informática de Gijón
1 La
aplicación
La aplicación puede
descargarse en el aparatado Recursos del sitio Web:
http://www.aic.uniovi.es/ssii/P6/Aplicacion.exe
Para saber cómo se utiliza
la aplicación debéis ir al apartado Manual del sitio Web o descargarlo
en formato pdf en nuestra Web:
http://www.aic.uniovi.es/ssii/P6/ManualSBR.pdf
[Trabajo] El manual,
aunque extenso, es muy sencillo y rápido de leer. Para aprender a usar la
aplicación haced el ejemplo del manual.
2 Sistema
de Reglas para Identificación de frutas
El ejemplo del manual es
demasiado pequeño. Vamos a extenderlo un poco más. Para ello aumentaremos el número de atributos y
reglas. Veamos cuáles son ahora los atributos y sus posibles valores:
Las reglas que utilizaremos
serán:
Ø R0: “ Si Forma
= Larga y Color = Verde Entonces Fruta = Plátano”
Ø R1: “ Si Forma
= Larga y Color = Amarillo Entonces Fruta = Plátano”
Ø R2: “ Si Forma
= Redonda y Diámetro = > 10 Entonces Clase_Frutal = Emparrado”
Ø R3: “ Si Forma=
Ensanchada y Diámetro = > 10 Entonces Clase_Frutal = Emparrado”
Ø R4: “ Si Forma=
Redonda y Diámetro = < 10 Entonces Clase_Frutal = Árbol”
Ø R5: “ Si Nº_Semillas
= 1 Entonces Tipo_Semilla = Hueso”
Ø R6: “ Si Nº_Semillas
= >1 Entonces Tipo_Semilla = Múltiple”
Ø R7: “ Si Clase_Frutal
= Emparrado y Color = Verde Entonces Fruta = Sandía”
Ø R8: “ Si Clase_Frutal
= Emparrado y Superficie = Lisa y Color = Amarillo Entonces Fruta =
Melón”
Ø R9: “ Si Clase_Frutal
= Emparrado y Superficie = Rugosa y Color = Tostado Entonces Fruta =
Cautalupo”
Ø R10: “ Si Clase_Frutal
= Árbol y Color = Naranja y Tipo_Semilla = Hueso Entonces Fruta =
Albaricoque”
Ø R11: “ Si Clase_Frutal
= Árbol y Color = Naranja y Tipo_Semilla = Múltiple Entonces Fruta =
Naranja”
Ø R12: “ Si Clase_Frutal
= Árbol y Color = Rojo y Tipo_Semilla = Hueso Entonces Fruta = Cereza”
Ø R13: “ Si Clase_Frutal
= Árbol y Color = Rojo y Tipo_Semilla = Múltiple Entonces Fruta =
Manzana”
Ø R14: “ Si Clase_Frutal
= Árbol y Color = Amarillo y Tipo_Semilla = Múltiple Entonces Fruta =
Manzana”
Ø R15: “ Si Clase_Frutal
= Árbol y Color = Verde y Tipo_Semilla = Múltiple Entonces Fruta =
Manzana”
Ø R16: “ Si Clase_Frutal
= Árbol y Color = Naranja y Tipo_Semilla = Hueso Entonces Fruta =
Melocotón”
Ø R17: “ Si Clase_Frutal
= Árbol y Color = Morado y Tipo_Semilla = Hueso Entonces Fruta =
Ciruela”
Tienen prioridad “10” todas
aquellas reglas cuyo consecuente determina el valor del atributo “Fruta”: R0,
R1,
R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17. El resto de
reglas tienen prioridad “0”: R2, R3, R4, R5,
R6. En caso de empate se
selecciona la regla con menor identificador
[Trabajo] Debéis
cargar el dominio en la aplicación (viene en el directorio ejemplos de
la aplicación) y posteriormente probar el encadenamiento
hacia delante y el encadenamiento hacia atrás. Podéis probar los siguientes ejemplos:
• Encadenamiento hacia
delante
¿Qué ocurre si no se
establece ningún objetivo? 3
R/ con la base del conocimiento, las reglas y los atributos bien definidos, el programa nos encontrara toda la información acerca de la fruta que estamos buscando sin necesidad de añadir mas información, aunque igualmente nos definira el tipo de fruta como cereza en 3 ciclos.
R/ con la base del conocimiento, las reglas y los atributos bien definidos, el programa nos encontrara toda la información acerca de la fruta que estamos buscando sin necesidad de añadir mas información, aunque igualmente nos definira el tipo de fruta como cereza en 3 ciclos.
• Encadenamiento hacia atrás
Ante la pregunta Color? se
contesta Rojo y ante la pregunta Nº_Semillas? se contesta 1.
R/ si solo se pone como base de conocimiento el color y el numero de semillas, el encadenamiento hacia atras queda con muchas posibilidades de encontrar una respuesta y pedira ayuda al usuario, lo que conyevara a que pregunte la forma de la fruta, ahora si ya esta preestablecida la informacion anterior, si nos encontrara la fruta en 3 ciclos.
R/ si solo se pone como base de conocimiento el color y el numero de semillas, el encadenamiento hacia atras queda con muchas posibilidades de encontrar una respuesta y pedira ayuda al usuario, lo que conyevara a que pregunte la forma de la fruta, ahora si ya esta preestablecida la informacion anterior, si nos encontrara la fruta en 3 ciclos.
3
Determinar el tipo de comida y bebida en una cena con un invitado
Presentamos ahora el
planteamiento de otro problema. Primero los atributos y sus posibles valores:
Veamos las reglas:
R0: “ Si Edad_Invitado
< 21 Entonces Bebida-Alcoholica = No”
R1: “ Si Edad_Invitado
>= 21 Entonces Bebida-Alcoholica = Si”
R2: “ Si Bebida_Alcoholica
= Si y Tipo_Comida = Formal Entonces Bebida = Vino”
R3: “ Si Bebida_Alcoholica
= Si y Invitado = Jefe Entonces Bebida = Vino”
R4: “ Si Bebida_Alcoholica
= Si y Invitado = Vecino Entonces Bebida = Cerveza”
R5: “ Si Invitado
= Jefe y Día = Viernes Entonces Cena = Pescado”
R6: “ Si Invitado
= Jefe y Día = <>Viernes Entonces Cena = Carne”
R7: “ Si Edad_Invitado
= <21 Entonces Cena = Pizza”
R8: “ Si Edad_Invitado
= >=21 Entonces Cena = Pescado”
R9: “ Si Bebida_Alcoholica
= No Entonces Bebida = Gaseosa ”
Tienen prioridad “10” todas
aquellas reglas cuyo consecuente determina el valor del atributo “Cena” o “Bebida”. El resto de reglas
tienen prioridad “0”.
[Trabajo] Debéis
crear un nuevo dominio con este conocimiento y posteriormente probar el encadenamiento hacia
delante y el encadenamiento hacia atrás. Podéis utilizar los
siguientes ejemplos:
• Encadenamiento hacia
delante
¿Qué ocurre si no se
establece ningún objetivo?
R/ si no se establece ningún objetivo la información es igualmente suficiente y nos encuentra a la primera el tipo de cena, es decir, tarda 1 ciclo en definir el tipo de cena que se va a brindar
R/ si no se establece ningún objetivo la información es igualmente suficiente y nos encuentra a la primera el tipo de cena, es decir, tarda 1 ciclo en definir el tipo de cena que se va a brindar
• Encadenamiento hacia atrás
Ante la pregunta Edad_Invitado?
se contesta <21 y ante la pregunta Invitado? se contesta Amigo.
R/el programa aplicando el encadenamiento hacia atrás tardara 4 ciclos en definir la cena y la bebida con esta base de conocimiento dada.
4
Determinar si se va a producir una inundación o no y si es o no
necesaria
la evacuación
Veamos el último problema.
Primero los atributos y sus posibles valores:
Estas son las reglas:
R0: “ Si Mes
= Mayo Entonces Estación = Húmeda”
R1: “ Si Mes
= Junio Entonces Estación = Húmeda”
R2: “ Si Mes
= Julio Entonces Estación = Húmeda”
R3: “ Si Mes
= Agosto Entonces Estación = Húmeda”
R4: “ Si Mes
= Septiembre Entonces Estación = Húmeda”
R5: “ Si Mes
= Octubre Entonces Estación = Húmeda”
R6: “ Si Mes
= Noviembre Entonces Estación = Seca”
R7: “ Si Mes
= Diciembre Entonces Estación = Seca”
R8: “ Si Mes
= Enero Entonces Estación = Seca”
R9: “ Si Mes
= Febrero Entonces Estación = Seca”
R10: “ Si Mes
= Marzo Entonces Estación = Seca”
R11: “ Si Mes
= Abril Entonces Estación = Seca”
R12: “ Si Precipitaciones
= Ninguna y Estación = Seca Entonces Cambio = Bajando”
R13: “ Si Precipitaciones
= Ninguna y Estación = Húmeda Entonces Cambio = Ninguno”
R14: “ Si Precipitaciones
= Ligera Entonces Cambio = Ninguno”
R15: “ Si Precipitaciones
= Fuertes Entonces Cambio = Subiendo”
R16: “ Si Profundidad
< 3 Entonces Nivel = Bajo”
R17: “ Si Profundidad
>= 3 y <= 5 Entonces Nivel = Normal”
R18: “ Si Profundidad
> 5 Entonces Nivel = Alto”
R19: “ Si Predicción
= Soleado Entonces Lluvia = Ninguna”
R20: “ Si Predicción
= Nuboso Entonces Lluvia = Ligera”
R21: “ Si Predicción
= Tormenta Entonces Lluvia = Fuerte”
R22: “ Si Nivel
= Bajo Entonces Inundación = No”
R23: “ Si Cambio
= Ninguno y Nivel = Normal Entonces Inundación = No y Evacuación = No”
R24: “ Si Cambio
= Ninguno y Nivel = Bajo Entonces Inundación = No y Evacuación = No”
R25: “ Si Cambio
= Subiendo y Nivel = Normal Entonces Inundación = No y Evacuación = No”
R26: “ Si Cambio
= Subiendo y Nivel = Bajo Entonces Inundación = No y Evacuación = No”
R27: “ Si Cambio=Subiendo
y Nivel=Normal y Lluvia=Fuerte Entonces Inundación=Si y Evacuación = No”
R28: “ Si Cambio=Subiendo
y Nivel=Normal y Lluvia=Ligera Entonces Inundación=No y Evacuación=No”
R29: “ Si Cambio=Subiendo
y Nivel=Alto y Lluvia=Ninguna Entonces Inundación=Si y Evacuación=Si”
R30: “ Si Cambio=Subiendo
y Nivel=Alto y Lluvia=Ligera Entonces Inundación=Si y Evacuación=Si”
R31: “ Si Cambio=Subiendo
y Nivel=Alto y Lluvia=Fuerte Entonces Inundación=Si y Evacuación=Si”
Tienen prioridad “10” todas
aquellas reglas cuyo consecuente determina el valor del atributo “Inundación” o
“Evacuación”. El resto de reglas tienen prioridad “0”.
[Trabajo] Debéis
crear un nuevo dominio con este conocimiento y posteriormente probar el encadenamiento
hacia delante y el encadenamiento hacia atrás. Podéis utilizar los siguientes ejemplos:
• Encadenamiento hacia
delante
¿Qué ocurre si no se
establece ningún objetivo?
R/ el programa nos dira que no existe ninguna regla a disparar ya que no cuenta con un objetivo claro a definir, adicional a ello, la base de conocimiento inicial es insuficiente para definir algo.
R/ el programa nos dira que no existe ninguna regla a disparar ya que no cuenta con un objetivo claro a definir, adicional a ello, la base de conocimiento inicial es insuficiente para definir algo.
• Encadenamiento hacia atrás
Ante la pregunta Precipitaciones? se
contesta Fuertes y ante Predicción? se contesta Tormenta.
R/no existe información suficiente en las reglas para definir estos dos atributos con la base de conocimiento dada, lo que conlleva a que no habra respuesta en el encadenamiento hacia atrás.
.
Comentarios
Publicar un comentario