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: Atributos Nº_Semillas Tipo_Semilla Color Forma Valores 1 >1 Hueso Múltiple Verde Amarillo Rojo Morado Tostado Naranja Larga Ensanchada Redonda Atributos Clase_Frutal Fruta Valores Emparrado Árbol Naranja Ciruela Manzana Cereza Plátano Cautalupo Albaricoque Melón Sandía Melocotón Superficie Lisa Rugosa Diámetro >10 <10 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 Base-Conocimiento Inicial Diámetro = 3 cms Forma = Redonda Nº_Semillas = 1 Color = rojo Objetivo Fruta ¿Qué ocurre si no se establece ningún objetivo? • Encadenamiento hacia atrás Base-Conocimiento Inicial Diámetro = 3 cms Forma = Redonda Clase_Frutal = Árbol Objetivo Fruta Ante la pregunta Color? se contesta Rojo y ante la pregunta Nº_Semillas? se contesta 1. 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: Atributos Valores Atributos Edad-Invitado >=21 <21 Invitado Bebida Alcoholica Si / No Cena Bebida Tipo_Comida Vino Cerveza Gaseosa Formal Informal Día Valores Jefe Vecino Amigo Pescado Carne Pizza Viernes <>Viernes 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 Base-Conocimiento Inicial Edad_Invitado = >=21 Tipo_Comida = Informal Invitado = Vecino Día = <>Viernes Objetivo Cena ¿Qué ocurre si no se establece ningún objetivo? • Encadenamiento hacia atrás Base-Conocimiento Inicial Objetivo Cena Bebida Ante la pregunta Edad_Invitado? se contesta <21 y ante la pregunta Invitado? se contesta Amigo. 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: Atributos Valores Atributos Estación Húmeda Seca Profundidad Mes Enero .. Diciembre Nivel Precipitaciones Lluvia Cambio Fuertes Ligeras Ninguna Fuerte Ligera Ninguna Bajando Ninguno Subiendo Predicción Valores <3 >5 >=3 y <=5 Alto Bajo Normal Soleado Nuboso Tormenta Evacuación Si / No Inundación Si / No 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 Base-Conocimiento Inicial Mes = Enero Precipitaciones = Ligeras Profundidad = 4 Predicción = Nuboso Objetivo Inundación ¿Qué ocurre si no se establece ningún objetivo? • Encadenamiento hacia atrás Base-Conocimiento Inicial Mes = Enero Nivel = Alto Objetivo Inundación Evacuación Ante la pregunta Precipitaciones? se contesta Fuertes y ante Predicción? se contesta Tormenta.