PRACTICA-2.TXT Reglas en CLIPS. ============================================================================ El objetivo de esta sesión es familiarizarse con la construcción de reglas en CLIPS, para ello se proponen 4 ejercicios. Durante la clase se desarrollarán soluciones para los tres primeros, caso de que dé tiempo. El cuarto es un ejercicio puntuable para realizar en casa, el código en CLIPS de dicho ejercicio debe ser envíado por e-mail a "fmartin@cs.us.es" antes del miércoles 13 de Marzo con el "Subject" "Ejercicio-puntuable-1". No se admitirá ningún trabajo cuya fecha de envío sea posterior a la del día 13. El trabajo elaborado en esta sesión debe ser almacenado en un fichero con el nombre "PRACTICA-2.CLP" y ha de ser envíado por e-mail a "fmartin@cs.us.es" al final de la misma. No se admitirá ningún trabajo cuya fecha de envío sea posterior a la del día de hoy. El mensaje ha de llevar por "Subject" el nombre del fichero indicado antes. La corrección de los trabajos será comentada en la próxima sesión de prácticas. ***************************************************************************** * PROBLEMA 1: * ***************************************************************************** Dados los siguientes patrones para hechos que describen relaciones familiares: - (padre-de (padre ) (hijo )) - (madre-de (madre ) (hijo )) - (hombre ) - (mujer ) - (mujer-de (esposa ) (esposo ) (esposa )) escribir reglas para inferir las siguientes relaciones: - Tío y tía. - Primo. - Abuelo o abuela. - Abuelo, abuela. - Hermana, hermano. Aplicar las reglas desarrolladas con el siguiente ejemplo: "Alberto y Belinda son una feliz pareja con dos hijos, Diana y Enrique, casados respectivamente con Carlos y Fiorina. Estas dos últimas parejas han tenido descendencia, dos hermosos chicos que han decidido llamar Gabriel e Hilario respectivamente". Cargar el programa en CLIPS y evaluarlo para comprobar que el conjunto de relaciones obtenido no es redundante, es decir, no hay relaciones que se repitan. ***************************************************************************** * PROBLEMA 2: * ***************************************************************************** En una planta industrial hay diez sensores enumerados del 1 al 10. Cada sensor puede dar el mensaje "correcto" o "incorrecto". Construir una plantilla para representar los sensores y escribir una o más reglas que impriman en pantalla un mensaje si 3 o más sensores dan el mensaje "incorrecto". Crear una declaración "deffacts" en la que se incluyan todos los sensores con el mensaje "correcto" por defecto. Cargar el programa en CLIPS y probarlo en los siguientes casos: - Los sensores 3 y 5 dan el mensaje "incorrecto". - Los sensores 2, 8 y 9 dan el mensaje "incorrecto". - Los sensores 1, 3, 5 y 10 dan el mensaje "incorrecto". utilizando el comando "modify" para modificar el contenido de los hechos. ¿ Cómo actua el comando "modify"?. ¿ Cómo nos aseguramos de que los sensores examinados sea distintos?. ¿ Qué se debe hacer para evitar que el mensaje aparezca en varias ocasiones?. Comprobar examinando el conjunto de reglas activas que el mensaje s\olo se muestra en pantalla una vez. ***************************************************************************** * PROBLEMA 3: * ***************************************************************************** Dados hechos que describen el color de pelo y el color de ojos de una persona, utilizando la siguiente plantilla: (deftemplate persona (slot nombre (type SYMBOL)) (slot color-ojos (type SYMBOL)) (slot color-pelo (type SYMBOL))) y un hecho que describe un color de pelo y un color de ojos determinados, utilizando la siguiente plantilla: (deftemplate busqueda-de (slot color-ojos (type SYMBOL)) (slot color-pelo (type SYMBOL))) Escribir un o más reglas que: - Impriman en pantalla un mensaje indicando que una persona tiene el color de ojos buscado o el color de pelo buscado. - Impriman en pantalla un mensaje indicando que una persona tiene el color de ojos y el color de pelo buscado. Cargar el programa en CLIPS y ejecutarlo con el siguiente conjunto de hechos sobre personas: (persona (nombre Javier) (color-pelo negro) (color-ojos castanno)) (persona (nombre Manolo) (color-pelo negro) (color-ojos azul)) (persona (nombre Curro) (color-pelo castanno) (color-ojos castanno)) (persona (nombre Dario) (color-pelo rubio) (color-ojos verde)) (persona (nombre Jaime) (color-pelo castanno) (color-ojos verde)) (persona (nombre Felipe) (color-pelo rubio) (color-ojos azul)) y el siguiente hecho sobre el objeto de la busqueda. (busqueda-de (color-ojos verde) (color-pelo rubio))) ¿ Cuál es el identificador de los hechos que activan las distintas reglas?. ***************************************************************************** * PROBLEMA 4: * ***************************************************************************** ************************************************************ * Este es un ejercicio puntuable para realizar en casa, el * * código en CLIPS de dicho ejercicio debe ser envíado * * por e-mail a "fmartin@cs.us.es" antes del miércoles 13 * * de Marzo con el "Subject" "Ejercicio-puntuable-1". No se * * admitirá ningún trabajo cuya fecha de envío sea * * posterior a la del día 13. * ************************************************************ Las plantas requieren diferentes tipos de nutrientes para desarrollarse adecuadamente. Tres de los nutrientes de mayor importancia son el nitrógeno, el fósforo y el potasio. Una deficiencia en alguno de estos nutrientes puede producir varios síntomas. Escribir como reglas en CLIPS las siguientes reglas heurísticas que indican que deficiencia se está produciendo. - Si la planta crece muy poco entonces puede tener una deficiencia de nitrógeno. - Si la planta tiene un color amarillo pálido entonces puede tener una deficiencia de nitrógeno. - Si las hojas tienen un color pardo rojizo entonces la planta puede tener una deficiencia de nitrógeno. - Si la raíz de la planta tiene poco crecimiento entonces puede tener una deficiencia de fósforo. - Una planta con tallo fusiforme puede tener una deficiencia de fósforo. - Una planta con color púrpura puede tener una deficiencia de fósforo. - Un retraso en la madurez de una planta puede deberse a una deficiencia de fósforo. - Si los bordes de las hojas aparecen chamuscados, la planta puede tener una deficiencia de potasio. - Una planta con los tallos debilitados puede tener una deficiencia de potasio. - Una planta con semillas o frutas marchitas puede tener una deficiencia de potasio. La entrada del programa debe ser una descripción de los síntomas de la planta. La salida debe indicar de que nutriente o nutrientes se ha producido una deficiencia imprimiéndolo en pantalla. Hacerlo de forma que no aparezcan en pantalla múltiples salidas indicando una misma deficiencia. Cargar el programa en CLIPS y utilizarlo con las siguientes entradas: - La raiz de la planta crece poco - La planta tiene color púrpura - La planta tiene los tallos debilitados Hacer un seguimiento de las activaciones de las reglas y: - Comprobar el orden de ejecución de las reglas activas. Para ello realizar la ejecución regla a regla con "(run 1)" y examinar constantemente la lista de reglas activas. ¿ Cómo trata CLIPS el conjunto de reglas activas?. - Comprobar que no se producen dos salidas indicando que la planta sufre una deficiencia de fósforo.