PRACTICA-1.TXT Plantillas y hechos en CLIPS. ============================================================================ El trabajo elaborado en esta sesión debe ser almacenado en un fichero con el nombre "PRACTICA-1.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. No es obligatorio enviar soluciones a todos los problemas propuestos, sólo aquellas que de tiempo a hacer. ***************************************************************************** * PROBLEMA 1: * ***************************************************************************** Convertir las siguientes sentencias en hechos con una plantilla predeterminada, incluidos en una declaración "deffacts". Para cada grupo de hechos relacionados, construir una plantilla que describa la relación existente. - El padre de Juan es Tomás. - La madre de Juan es Susana. - Los padres de Juan son Tomás y Susana. - Tomás es padre. - Susana es madre. - Juan es hijo. - Tomás es un hombre. - Susana es una mujer. - Juan es un hombre. Realizar las siguientes acciones en CLIPS una vez cargado el programa: - Listar todos los hechos almacenados. Si no hay ninguno reinicializar CLIPS con el comando "reset". - Listar todos los hechos almacenados a partir del número 1. - Listar todos los hechos almacenados desde el número 1 hasta el 5. - Listar todos los hechos almacenados desde el número 1 hasta el 5, imprimiendo un máximo de 3. ***************************************************************************** * PROBLEMA 2: * ***************************************************************************** Describir una plantilla para hechos que contengan información sobre un conjunto. La plantilla debe incluir información sobre el nombre del conjunto, la lista de sus elementos, y si es subconjunto de algún otro conjunto (superconjuntos que posee). Utilizar dicha plantilla para representar los siguientes conjuntos. - A={1,2,3} - B={1,2,3,4,5} - C={rojo,verde,amarillo,azul} - D={CPU,memoria,I/O,tarjeta de video} ¿ Cómo se incluye el campo "superconjuntos" en la plantilla.? Cargar el programa en CLIPS y examinar el valor que el sistema le da al campo "superconjuntos". Crear un hecho acorde con la plantilla creada para representar conjuntos que no incluya ningún campo y examinar la forma que CLIPS le da. ***************************************************************************** * PROBLEMA 3: * ***************************************************************************** Una matriz dispersa es aquella que contiene pocos elementos no nulos. Una manera eficiente de representar las matrices dispersas es mediante listas enlazadas o árboles. ¿Cómo debe ser representada una matriz dispersa con hechos?. Describir las plantillas usadas para representar la matriz y usarlas con el siguiente ejemplo: | 0 0 1 0 | A = | 2 0 0 0 | | 0 -2 0 0 | Hacer la plantilla de forma que sea necesario dar explícitamente un nombre a la matriz que queremos representar. Cargar el programa en CLIPS y comprobar que el sistema detecta un error cuando se intenta introducir un hecho acorde a la plantilla sin explicitar su nombre. ***************************************************************************** * PROBLEMA 4: * ***************************************************************************** Convertir la siguiente red de comunicaciones por carretera de Andalucía en un conjunto de hechos incluidos en una declaración "deffacts". Utilizar una plantilla simple para describir los hechos. HU --- SE --- CO --- JA \ | \ | \ | \ | \ | \ | \ | \ | \ | CA --- MA --- GR --- AL Crear la plantilla de forma que sólo admita un conjunto de valores para el campo dedicado a los nombres de las capitales. Cargar el programa en CLIPS y comprobar que el sistema detecta un error cuando se intenta introducir un hecho acorde a la plantilla pero con un valor no permitido como nombre de capital. ***************************************************************************** * PROBLEMA 5: * ***************************************************************************** En el siguiente párrafo se describe un conjunto de relaciones entre una familia: "Próximamente será el bautizo de Gabriel, el hijo de Encarni y de Fernando. Sus abuelos maternos, Ana y Bernardo, no podrán asistir a la celebración por encontrarse lejos de la ciudad donde ésta se celebra, sin embargo si podrá acudir Carolina, la hermana de Ana, junto con su marido David, abuelos paternos del ninó." Describir el conjunto de relaciones dentro de dicha familia con un conjunto de hechos en una declaración "deffacts". Utilizar varias plantillas para describir los hechos. Cargar el programa en CLIPS y examinar el conjunto de hechos generados. ¿ Cómo se puede evitar la inclusión explícita de tantos hechos.? ***************************************************************************** * PROBLEMA 6: * ***************************************************************************** Convertir la red semántica de la siguiente figura en un conjunto de hechos CLIPS en una declaración "deftemplate". Utilizar varias plantillas para describir los hechos. Por ejemplo, el enlace "es-un" debe ser un nombre de relación y debe tener su propia plantilla. Red semántica: +------------+ ---------> | aeronave | <---------- / +------------+ \ / /|\ \ es-un-tipo-de es-un-tipo-de es-un-tipo-de / | \ +-----------+ +-------------+ +------------+ | globo | -> | con helices | | a reaccion | +-----------+ / +-------------+ +------------+ /|\ / /|\ /|\ /|\ es-un es-un es-un es-un es-un | / | | | +-----------+ +--------+ +--------+ +----------+ | dirigible | | CN-235 | | DC-9 | | concorde | +-----------+ +--------+ +--------+ +----------+ Cargar el programa en CLIPS y listar el conjunto de las plantillas que haya actualmente en el sistema. (Buscar en la ayuda).