Sistema experto: KingsHelper 08



Documentos relacionados
PROGRAMACIÓN ORIENTADA A OBJETOS

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Operación 8 Claves para la ISO

Figura 4.1 Clasificación de los lenguajes de bases de datos

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE

Gestión de usuarios en la web educativa del centro con JOOMLA!

Google Calendar. Google Calendar

EDITOR E INTÉRPRETE DE ALGORITMOS REPRESENTADOS EN DIAGRAMAS DE FLUJO 1 RESUMEN

APLICACIONES MÓVILES NATIVAS

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B

QUÉ ES Y PARA QUÉ SIRVE UML? VERSIONES DEL LENGUAJE UNIFICADO DE MODELADO. TIPOS DE DIAGRAMAS. INGENIERÍA DEL SOFTWARE (DV00205D)

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable

forma de entrenar a la nuerona en su aprendizaje.

ORIENTACIONES SIMCE TIC

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

Plan de estudios Maestría en Sistemas de Información y Tecnologías de Gestión de Datos

El cuadrante del éxito en la Empresa

Manual de usuario. Tramitación de inspecciones periódicas de ascensores: La visión de los organismos de control autorizado (OCAs)

Criterios para seleccionar tecnología de Modelos de Toma de Decisiones

Centro de Capacitación en Informática

GESTIÓN Y CONTROL DEL DESARROLLO E IMPLANTACIÓN DE APLICACIONES

UML, ejemplo sencillo sobre Modelado de un Proyecto

Manual del usuario. Flash Point Genius. FLASH POINT GENIUS: Programación Serial para turismos

Sistema de Mensajería Empresarial para generación Masiva de DTE

MANUAL DE USUARIO SECTOR PRIVADO (RESUMEN)

Capítulo 11. Conclusiones y trabajo futuro

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Estimado usuario. Tabla de Contenidos

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Recursos para el Estudio en Carreras de Ingeniería 2006 UNIDAD TEMÁTICA Nº 4 LA TOMA DE APUNTES

METODOLOGÍA E IMPLEMENTACIÓN DEL SIGGA (SISTEMA DE INFORMACION GEOGRAFICA: GOBERNANZA DEL AGUA)

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Además se recomienda su uso como herramienta de trabajo dentro de las actividades habituales de gestión.

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Manual del Profesor Campus Virtual UNIVO

Su éxito se mide por la pertinencia y la oportunidad de la solución, su eficacia y eficiencia.

Capitulo VII. Editor de Mapa de Tareas. Como hemos hablado en los capítulos anteriores, sabemos que parte del éxito

Sistema Control. Administrativo Contable 2012.

MODELOS DE RECUPERACION

Tabla de contenido. Manual B1 Time Task

Programa Presupuestos de Sevillana de Informática.

6. Gestión de proyectos

Los requisitos de accesibilidad en un proyecto software. Implicaciones de usuarios discapacitados en el proceso software

En este capítulo se describe las herramientas, así como los procesos involucrados en el análisis y desarrollo de sistemas de información, por otro

PROGRAMA DE REFUERZO EDUCATIVO EN PRIMARIA

HERRAMIENTAS DE EXCEL PARA EL ANALISIS Y VALORACION DE PROYECTOS DE INVERSION (I)

Sesión No. 2. Contextualización: Nombre de la sesión: Paquetería ASPEL - COI PAQUETERÍA CONTABLE

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

Análisis y gestión de riesgo

CUESTIONARIO DE AUTOEVALUACIÓN

Licenciatura en Computación

GESTION DE REQUISICIONES VIA WEB MANUAL DEL USUARIO

Capítulo 1. Introducción

Manual de Uso Web profesional

TEMA 3: EN QUÉ CONSISTE?

FOCO GESTIÓN DE GRUPOS

RESERVACIONES ONLINE MANUAL DE REFERENCIA

4. METODOLOGÍA. 4.1 Materiales Equipo

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Propuesta de Trabajo. nuestro proyecto emprendedor I

SISTEMA InfoSGA Manual de Actualización Mensajeros Radio Worldwide C.A Código Postal 1060

GUÍA PARA EL ALUMNADO DE LOS CURSOS DE FP A TRAVÉS DE INTERNET.

**NOTA** las partes tachadas todavía no están escritas, se ira actualizando poco a poco el documento

L U I S P A T I Ñ O IN FOR M Á T I C A SIS T E M A S AVA N Z A DOS

Institución Educativa Inem Felipe Pérez de Pereira 2012 Estrategia taller. AREA: Sistemas de información Taller Previsto

Complejo Deportivo UCA. República Saharaui s/n Puerto Real (Cádiz) Tel Fax

MANUAL DE USUARIO. Sistema de Administración de Proyectos de Vinculación con la Colectividad (SAPVC) MANUAL DE USUARIO DOCENTE

Otros tipos de Consultas

UN PROBLEMA CON INTERÉS Y CALCULADORA

Preguntas Frecuentes. Plataforma ScienTI. Aplicativos CvLAC y GrupLAC

Figure 16-1: Phase H: Architecture Change Management

Monitorización de Equipos y Redes [NAGIOS ] VIRTUALITY

MATERIAL 2 EXCEL 2007

Como lo expresamos cuando describimos el problema objeto de

Introducción a Visual Studio.Net

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

SISTEMA DE BECAS AL EXTERIOR

CAPÍTULO 2 IMPORTANCIA DE LA ASIGNATURA OUTSOURCING EN TECNOLOGÍAS DE INFORMACIÓN

Los estados financieros proporcionan a sus usuarios información útil para la toma de decisiones

Capitulo V Administración de memoria

ESCUELA DE ADMINISTRACIÓN

Manual de usuario Página 1 ÍNDICE

Capítulo 1. Introducción

Las razones financieras ayudan a determinar las relaciones existentes entre diferentes rubros de los estados financieros

Usuarios y Permisos. Capítulo 12

Por qué es importante la planificación?

GESTIÓN DE LA DOCUMENTACIÓN

QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A)

Cómo Desarrollar un plan Estratégico

Transcripción:

Sistema experto: KingsHelper 08 David García Sánchez Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) 100029739@alumnos.uc3m.es Javier García Zurdo Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) 100029577@alumnos.uc3m.es María De Lozoya Nombela Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) 100032780@alumnos.uc3m.es RESUMEN El objetivo de este trabajo es la realización de un sistema experto basado en CLIPS, que nos aconsejará acerca de cuales son los mejores regalos que podemos comprar estas Navidades. Categorías y Descriptores I.2.1 [Computing Methodologies]: Artificial Intelligence Applications and expert systems. Términos Generales Design, Human factors Palabras clave CLIPS, Sistema experto, regalos, KingsHelper, árbol 1. INTRODUCTION Se considera a alguien un experto en un problema cuando este individuo tiene conocimiento especializado sobre dicho problema. En el área de los (SE) a este tipo de conocimiento se le llama conocimiento sobre el dominio. La palabra dominio se usa para enfatizar que el conocimiento pertenece a un problema específico. [1] Antes de la aparición del ordenador, el hombre ya se preguntaba si se le arrebataría el privilegio de razonar y pensar. En la actualidad existe un campo dentro de la inteligencia artificial al que se le atribuye esa facultad: el de los sistemas expertos (SE). Estos sistemas también son conocidos como Sistemas Basados en Conocimiento, los cuales permiten la creación de máquinas que razonan como el hombre, restringiéndose a un espacio de conocimientos limitado. En teoría pueden razonar siguiendo los pasos que seguiría un experto humano (médico, analista, empresario, etc.) para resolver un problema concreto. Este tipo de modelos de conocimiento por ordenador ofrece un extenso campo de posibilidades en resolución de problemas y en aprendizaje. Su uso se extenderá ampliamente en el futuro, debido a su importante impacto sobre los negocios y la industria.[2] Aplicaciones Sus principales aplicaciones se dan en las gestiones empresariales debido a que: a) Casi todas las empresas disponen de un ordenador que realiza las funciones básicas de tratamiento de la información: contabilidad general, decisiones financieras, gestión de la tesorería, planificación, etc. b) Este trabajo implica manejar grandes volúmenes de información y realizar operaciones numéricas para después tomar decisiones. Esto crea un terreno ideal para la implantación de los SE. Además los SE también se aplican en la contabilidad en apartados como: Auditoria(es el campo en el que más aplicaciones de SE se esta realizando) Fiscalidad, planificación, análisis financiero y la contabilidad financiera. Ventajas Estos programas proporcionan la capacidad de trabajar con grandes cantidades de información, que son uno de los grandes problemas que enfrenta el analista humano que puede afectar negativamente a la toma de decisiones pues el analista humano puede depurar datos que no considere relevantes, mientras un SE debido a su gran velocidad de proceso analiza toda la información incluyendo las no útiles para de esta manera aportar una decisión más sólida. Limitaciones Es evidente que para actualizar se necesita de reprogramación de estos (tal vez este sea una de sus limitaciones más acentuadas) otra de sus limitaciones puede ser el elevado costo en dinero y tiempo, además que estos programas son poco flexibles a cambios y de difícil acceso a información no estructurada. [3] Debido a la escasez de expertos humanos en determinadas áreas, los SE pueden almacenar su conocimiento para cuando sea necesario poder aplicarlo. Así mismo los SE pueden ser utilizados por personas no especializadas para resolver problemas. Además si una persona utiliza con frecuencia un SE aprenderá de el. Por otra parte la inteligencia artificial no ha podido desarrollar sistemas que sean capaces de resolver problemas de manera general, de aplicar el sentido común para resolver situaciones complejas ni de controlar situaciones ambiguas. El futuro de los SE da vueltas por la cabeza de cada persona, siempre que el campo elegido tenga la necesidad y/o presencia de un experto para la obtención de cualquier tipo de beneficio. [4]

1.1 Tareas que realiza un sistema experto 1.1.1 Monitorización La monitorización es un caso particular de la interpretación, y consiste en la comparación continua de los valores de las señales o datos de entrada y unos valores que actúan como criterios de normalidad o estándares. En el campo del mantenimiento predictivo los Sistemas Expertos se utilizan fundamentalmente como herramientas de diagnóstico. Se trata de que el programa pueda determinar en cada momento el estado de funcionamiento de sistemas complejos, anticipándose a los posibles incidentes que pudieran acontecer. Así, usando un modelo computacional del razonamiento de un experto humano, proporciona los mismos resultados que alcanzaría dicho experto. 1.1.2 Diseño Diseño es el proceso de especificar una descripción de un artefacto que satisface varias características desde un número de fuentes de conocimiento. El diseño se concibe de distintas formas: - El diseño en ingeniería es el uso de principios científicos, información técnica e imaginación en la definición de una estructura mecánica, máquina o sistema que ejecute funciones específicas con el máximo de economía y eficiencia. - El diseño industrial busca rectificar las omisiones de la ingeniería, es un intento consciente de traer forma y orden visual a la ingeniería de hardware donde la tecnología no provee estas características. Los SE en diseño ven este proceso como un problema de búsqueda de una solución óptima o adecuada. Las soluciones alternas pueden ser conocidas de antemano o se pueden generar automáticamente probándose distintos diseños para verificar cuáles de ellos cumplen los requerimientos solicitados por el usuario, ésta técnica es llamada generación y prueba, por lo tanto estos SE son llamados de selección. En áreas de aplicación, la prueba se termina cuando se encuentra la primera solución; sin embargo, existen problemas más complejos en los que el objetivo es encontrar la solución óptima. 1.1.3 Planificación La planificación es la realización de planes o secuencias de acciones y es un caso particular de la simulación. Está compuesto por un simulador y un sistema de control. El efecto final es la ordenación de un conjunto de acciones con el fin de conseguir un objetivo global. Los problemas que presentan la planificación mediante SE son los siguientes: - Existen consecuencias no previsibles, de forma que hay que explorar y explicar varios planes. - Existen muchas consideraciones que deben ser valoradas o incluirles un factor de peso. - Suelen existir interacciones entre planes de subobjetivos diversos, por lo que deben elegirse soluciones de compromiso. - Trabajo frecuente con incertidumbre, pues la mayoría de los datos con los que se trabaja son más o menos probables pero no seguros. - Es necesario hacer uso de fuentes diversas tales como bases de datos. 1.1.4 Control Un sistema de control participa en la realización de las tareas de interpretación, diagnóstico y reparación de forma secuencial. Con ello se consigue conducir o guiar un proceso o sistema. Los sistemas de control son complejos debido al número de funciones que deben manejar y el gran número de factores que deben considerar; esta complejidad creciente es otra de las razones que apuntan al uso del conocimiento, y por tanto de los SE. Cabe aclarar que los sistemas de control pueden ser en lazo abierto, si en el mismo la realimentación o el paso de un proceso a otro lo realiza el operador, o en lazo cerrado si no tiene que intervenir el operador en ninguna parte del mismo. Reparación, correcta o terapia. La reparación, corrección, terapia o tratamiento consiste en la proposición de las acciones correctoras necesarias para la resolución de un problema. Los SE en reparación tienen que cumplir diversos objetivos, como son: Reparación lo más rápida y económicamente posible. Orden de las reparaciones cuando hay que realizar varias. Evitar los efectos secundarios de la reparación, es decir la aparición de nuevas averías por la reparación. 1.1.5 Simulación La simulación es una técnica consistente en crear modelos basados en hechos, observaciones e interpretaciones, sobre la computadora, a fin de estudiar el comportamiento de los mismos mediante la observación de las salidas para un conjunto de entradas. Las técnicas tradicionales de simulación requieren modelos matemáticos y lógicos que describen el comportamiento del sistema bajo estudio. El empleo de los SE para la simulación viene motivado por la principal característica de los SE, que es su capacidad para la simulación del comportamiento de un experto humano, que es un proceso complejo. En la aplicación de los SE para simulación hay que diferenciar cinco configuraciones posibles: 1. Un SE puede disponer de un simulador con el fin de comprobar las soluciones y en su caso rectificar el proceso que sigue. 2. Un sistema de simulación puede contener como parte del mismo a un SE y por lo tanto el SE no tiene que ser necesariamente de simulación. 3. Un SE puede controlar un proceso de simulación, es decir que el modelo está en la base de conocimiento del

SE y su evolución es función de la base de hechos, la base de conocimientos y el motor de inferencia, y no de un conjunto de ecuaciones aritmético lógicas. 4. Un SE puede utilizarse como consejero del usuario y del sistema de simulación. 5. Un SE puede utilizarse como máscara o sistema frontal de un simulador con el fin de que el usuario reciba explicación y justificación de los procesos. 1.1.6 Instrucción Un sistema de instrucción realizara un seguimiento del proceso de aprendizaje. El sistema detecta errores ya sea de una persona con conocimientos e identifica el remedio adecuado, es decir, desarrolla un plan de enseñanza que facilita el proceso de aprendizaje y la corrección de errores. 1.1.7 Recuperación de información Los Sistemas Expertos, con su capacidad para combinar información y reglas de actuación, han sido vistos como una de las posibles soluciones al tratamiento y recuperación de información, no sólo documental. La década de 1980 fue prolija en investigación y publicaciones sobre experimentos de este orden, interés que continua en la actualidad. Lo que diferencia a estos sistemas de un sistema tradicional de recuperación de información es que éstos últimos sólo son capaces de recuperar lo que existe explícitamente, mientras que un Sistema Experto debe ser capaz de generar información no explícita, razonando con los elementos que se le dan. Pero la capacidad de los SE en el ámbito de la recuperación de la información no se limita a la recuperación. Pueden utilizarse para ayudar al usuario, en selección de recursos de información, en filtrado de respuestas, etc. Un SE puede actuar como un intermediario inteligente que guía y apoya el trabajo del usuario final. [6] 2. DESCRIPCION DEL PROBLEMA Se acerca la Navidad, y nos guste o no, son fechas en las que las compras están a la orden del día. Estas compras se intensifican cuanto más se aproxima el día de Reyes. Es un día que gusta tanto a niños como a mayores, si bien resulta obvio que son los más pequeños los que viven este día con más ilusión. La ilusión de recibir regalos es muy grande, pero a la mayoría también nos hace ilusión que las cosas que regalamos sean del agrado de quien lo recibe. Lo mencionado anteriormente es muy bonito, pero, Cuántos quebraderos de cabeza nos llevamos a la hora de las compras? Cuántos días hemos perdido dando vueltas por los centros comerciales sin saber que comprar? En resumen, es muy difícil saber que regalar, a tus padres, hermanos, la novia Para solucionar este problema (a priori trivial) pero que nos afecta a la mayoría, hemos decidido desarrollar el KingsHelper 08 Esta herramienta, será nuestro ayudante particular en la búsqueda de regalos. KingsHelper 08 será un sistema experto basado en CLIPS, que mediante la realización de sencillas preguntas, nos indicará cuales son los regalos más adecuados que podemos hacer. 3. KingsHelper 08 En esta sección pasaremos a detallar algunos aspectos del diseño y su posterior implementación en el código de CLIPS. 3.1 Diseño Lo primero a tener en cuenta a la hora de diseñar KingsHelper 08, es que este está diseñado a partir de un diagrama de árbol en el que cada nodo tiene asociada una pregunta y todos sus nodos descendentes están ligados al valor de la respuesta de esta. En el extremo final, están las hojas, y es aquí donde nuestro sistema encuentra el resultado final a la búsqueda del regalo. En un principio el diseño del árbol se realizo de forma que cada nodo solo tuviese como máximo dos nodos descendientes, es decir, que cada pregunta sólo tuviese dos respuestas (si y no). Ante la ineficiencia y la dificultad que suponía la formulación de preguntas de respuesta si o no que diesen una sensación de inteligencia, este primer diseño en forma de árbol binario fue reestructurado de forma que las preguntas pudiesen ser respondidas por dos más palabras diferentes. A continuación se muestra una pequeña parte de la versión definitiva del árbol seguido para el diseño de KingsHelper 08. Concretamente las pertenecientes a las respuestas de un regalo para niños, educativo y que potencie su imaginación (figura 1) y regalo, juguete que pueda ser usado en la calle (figura 2)

3. DEFFACTS KNOWLEDGE BASE (base de conocimiento) 3.2.1 DEFTEMPLATE DEFINITIONS imaginacion le gust a pintar, colorear etc.? si no En este bloque definimos un constructor deftemplate creando una plantilla de forma similar a las estructuras en C. En nuestro caso definimos una plantilla para regla, la cual estará formada por dos elementos multislot. (deftemplate regla (multislot if) (multislot then)) cuadernos par a colorear u otra cosa? cuadernos - Aprende a colorear como si estuvieses en primero -Pinturas Disney otro -Pinto Yo - Rotuladores Carioca Joy - Estuche de temp eras y acuarelas calle Figura 1 que le parecen los j uegos de Mediterrane o? o prefiere algo ti po mecano? mediterraneo - Mini Nova - Astronova -Choconova que deporte le gusta mas? mecano -Tetris blocks ED UCA -MECANO 3.2.2 INFERENCE ENGINE RULES Este bloque será el encargado de controlar la ejecución global de las reglas, decidiendo qué regalas deben ejecutarse y cuándo. En él, definimos ocho reglas. Las ocho reglas son las necesarias para: realizar las preguntas, obtener el valor de las respuestas, decidir cual es el siguiente nodo en función del nodo en el que se está y la respuesta obtenida, evaluar si la respuesta es dada por teclado es válida o no, y las correspondientes a la introducción del inicio del programa y el final. Ejemplos: (defrule ask-question-no-legalvalues "" (declare (salience 10)) (not (legalanswers $?))?f1 <- (goal es?variable)?f2 <- (question?variable??text) -Balon -equipacio n de tu equipo favorito futbol baloncesto tenis otros -Balon -equipacio n de tu equipo favorito Figura 2 -Raqueta de tenis/pade l/badminto n -Bici/equipa miendo bici -cometa -patines => (retract?f1?f2) (format t "%s "?text) (assert (variable?variable (read)))) (defrule ask-question-legalvalues "" (declare (salience 10)) Como podemos ver, en las hojas encontramos los regalos que se darán como solución al camino seguido por el usuario según vaya respondiendo a las diferentes preguntas que le aparecerán en cada nodo. Notar como a diferencia de la primera versión encontramos preguntas con mas de dos respuestas y cada respuesta no se ve limitada a un si o un no.?f1 <- (goal es?variable)?f2 <- (question?variable??text $?answers) => (retract?f1) (assert (legalanswers son?answers)) (format t "%s "?text) 3.2 Implementación Como ya hemos comentado la implementación del KingsHelper 08 ha sido realizada en CLIPS un leguaje ideal para la realización de sistemas expertos. El código está formado por tres bloques: 1. DEFTEMPLATE DEFINITIONS 2. INFERENCE ENGINE RULES (motor de inferencia) (printout t?answers crlf) (bind?reply (read)) (if (member (lowcase?reply)?answers) then (assert (variable?variable?reply)) (retract?f2)

else (assert (goal es?variable)))) Que pertenece al fragmento del árbol: Tanto ask-question-no-legalvalues como ask-questionlegalvalues son las encargadas de imprimir las preguntas y a la vez comprobar si los valores escritos por teclado son los correctos para esa pregunta. educativo que clase de regalo estas buscando? juguete 3.2.3 DEFFACTS KNOWLEDGE Este bloque es el que contiene todas las preguntas escritas en función de las reglas definidas en los boques anteriores. que potencie sus conocimientoso su imaginacion? para que pueda j ugar en casa o en la calle? De acuerdo con las reglas anteriores la escritura de una pregunta junto con su situación en el árbol es muy simple ;si inicio es si (regla (if inicio es si and para_quien es nino) (then edad es nino)) (regla (if inicio es si and para_quien es joven) (then edad es joven)) (regla (if inicio es si and para_quien es adulto) (then edad es adulto)) (question para_quien es " para quien es el regalo?" nino joven adulto) 4. Ejecución En esta sección vamos a realizar algunas simulaciones del programa, a modo de ejemplos, para mostrar la funcionalidad del mismo para un par de casos diferentes. 4.1 Simulación 1 Vamos a imaginar que queremos comprar un regalo para nuestra novia, entonces, en base a los gustos que conocemos de ella, pediríamos ayuda al KingsHelper 08 y nos haría las siguientes preguntas El código anterior es el encargado de realizar la pregunta Para quién es el regalo? una vez se ha pulsado si para responder a la pregunta ha sido bueno este año? Y se corresponde con el trozo del árbol siguiente para quién es el regalo? niños jovenes adultos que clase de regalo estas buscando? que clase de regalo estás buscando? qué teparece algo deropa que pueda usar a diario? De esta forma si suponemos que el usuario escribe por teclado nino se cumpliría la primera de las tres reglas pasando a crearse la variable edad con el valor nino (subrayado). Una vez esto se pasaría a la parte del código que cumpliese la condición de edad es nino y volvería a formularse otra pregunta. En este caso el bloque de código que se ejecutaría sería: ;si edad es nino (regla (if edad es nino and clase_regalo es educativo) (then tipo es educativo)) (regla (if edad es nino and clase_regalo es juguete) (then tipo es juguete)) (question clase_regalo es " que clase de regalo estas buscando?" educativo juguete) Como el programa es un ayudante de los Reyes Magos, la primera pregunta para obtener regalos es evidente, y es haber sido bueno durante el año. Posteriormente nos pregunta sobre la edad de la persona a regalar, gustos, tipo de regalo que queremos hacer etc. Así recorriendo las ramas del árbol, el ayudante nos indica que un fular o un bolso serían buenos regalos.

4.2 Simulación 2 En esta segunda simulación vamos a imaginar que queremos comprar un regalo para nuestro hermano pequeño. Sabemos que le gustan los juegos de mesa, en los que jugar con sus amigos, pero no le gustan los juegos de preguntas. Así una posible ejecución del programa sería la siguiente: CLIPS distingue mayúsculas y minúsculas (case-sensitive), igual que el lenguaje C. 5.2 Representación del conocimiento CLIPS ofrece paradigmas heurísticos y procedurales para representar el conocimiento. 5.2.1 Conocimiento heurístico: reglas 5. CLIPS 5.1 Qué es CLIPS CLIPS (C Language Integrated Production System) es una herramienta para el desarrollo de sistemas expertos (SE) creada por la Software Technology Branch (STB), NASA/Lyndon B. Johnson Space Center. Los orígenes de CLIPS se remontan a 1984. Se diseñó para facilitar el desarrollo de software que modele el conocimiento humano (expertise): - Con propósitos específicos: alta portabilidad, bajo coste, y facilidad de integración. - CLIPS permite integración completa con otros lenguajes de programación como C o Ada. - Puede ser llamado desde un lenguaje procedural, realizando su función y devolver el control al programa que le llamó. - También se puede definir código procedural como funciones externas llamadas desde CLIPS. Cuando el código externo finaliza su ejecución devuelve el control a CLIPS. CLIPS es un entorno completo para la construcción de SE basados en reglas y/o objetos. La versión estándar de CLIPS proporciona un entorno de desarrollo interactivo orientado a texto, incluyendo una herramienta de depuración, ayuda on-line y un editor integrado, aunque se han desarrollado interfaces visuales para plataformas Macintosh, Windows 3.x y el sistema X Window. - Las reglas se utilizan para representar heurísticos que especifican un conjunto de acciones a realizar para una situación dada. - El creador del SE define una colección de reglas que, en conjunto, resuelven un problema. - Se puede pensar que las reglas son como sentencias IF-THEN de lenguajes procedurales como C o Ada. Sin embargo, las reglas actúan más bien como sentencias SIEMPRE QUE-ENTONCES. 5.2.2 Conocimiento procedural: funciones y objetos. Este tipo de conocimiento se expresa mediante funciones definidas por el usuario (deffunctions), funciones genéricas y la programación orientada a objetos (POO). Ésta en CLIPS soporta las cinco características generalmente aceptadas: clases, mensajes, abstracción, encapsulamiento, herencia y polimorfismo. Es posible desarrollar software utilizando sólo reglas, sólo objetos, o una mezcla de ambos. [5] 5.3. Características principales Las características principales de CLIPS son: - Representación del Conocimiento: CLIPS permite manejar una amplia variedad de conocimiento, soportando tres paradigmas de programación: el declarativo, el imperativo, y el orientado a objetos. La programación lógica basada en reglas permite que el conocimiento sea representado como reglas heurísticas que especifican las acciones a ser ejecutadas dada una situación. La POO permite modelar sistemas complejos como componentes modulares. La programación imperativa permite ejecutar algoritmos de la misma manera que en C, Java, LISP y otros lenguajes. - Portabilidad: CLIPS fue escrito en C con el fin de hacerlo más portable y rápido, y ha sido instalado en diversos sistemas

operativos (Windows 95/98/NT, MacOS X, Unix) sin ser necesario modificar su código fuente. CLIPS puede ser ejecutado en cualquier sistema con un compilador ANSI de C, o un compilador de C++. El código fuente de CLIPS puede ser modificado en caso que el usuario lo considere necesario, con el fin de agregar o quitar funcionalidades. - Integrabilidad: CLIPS puede ser embebido en código imperativo, invocado como una sub-rutina, e integrado con lenguajes como C, Java, FORTRAN y otros. CLIPS incorpora un completo lenguaje orientado a objetos (COOL) para la elaboración de sistemas expertos. Aunque está escrito en C, su interfaz más próxima se parece a LISP. Pueden escribirse extensiones a CLIPS sobre C, y al contrario, CLIPS puede ser llamado desde C. CLIPS puede ser extendido por el usuario mediante el uso de protocolos definidos. - Desarrollo Interactivo: La versión estándar de CLIPS provee un ambiente de desarrollo interactivo y basado en texto; este incluye herramientas para la depuración, ayuda en línea, y un editor integrado. Las interfaces de este ambiente tienen menús, editores y ventanas que han sido desarrollados para MacOS, Windows 95/98/NT, X Window, entre otros. - Verificación/Validación: CLIPS contiene funcionalidades que permiten verificar las reglas incluídas en el sistema experto que está siendo desarrollado, incluyendo diseño modular y particionamiento de la base de conocimientos del sistema, chequeo de restricciones estático y dinámico para funciones y algunos tipos de datos, y análisis semántico de reglas para prevenir posibles inconsistencias. - Documentación: En la página Web oficial de CLIPS se encuentra una extensa documentación que incluye un Manual de Referencia y una Guía del Usuario. - Bajo Costo: CLIPS es un software de dominio público. [6] 5.4 Estructura de un programa en CLIPS El shell (parte de CLIPS que realiza inferencias o razonamiento) provee los elementos básicos de un SE: 5.4.1. Memoria global de datos (memoria de trabajo, MT): conocimiento factual (fact-list e instancelist). Es una parte de la memoria del ordenador que se utiliza para almacenar los datos recibidos inicialmente para la resolución de un problema. Contiene conocimiento sobre el caso concreto en que se trabaja. También se registrarán en ella las conclusiones intermedias y los datos generados en el proceso de inferencia. Al memorizar todos los resultados intermedios, conserva el vestigio de los razonamientos efectuados; por lo tanto, se puede utilizar explicar las deducciones y el comportamiento del sistema. 5.4.2. Base de conocimiento (knowledge base): es un tipo especial de base de datos para la gestión del conocimiento. Provee los medios para la recolección, organización y recuperación computarizada de conocimiento. El más importante aspecto de una base de conocimiento es la calidad de la información que esta contiene. Las Mejores Bases de Conocimiento tienen artículos cuidadosamente redactados que se mantiene al día, un excelente sistema de recuperación de información (Motor de Búsqueda), y un delicado formato de contenido y estructura de clasificación. Una Base de Conocimiento puede usar una ontología para especificar su estructura (tipos de entidades y relaciones) y su esquema de clasificación. Una ontología, junto con un grupo de instancias de sus clases constituyen una Base de Conocimiento. Determinando que tipo de información es capturada, y donde se encuentra la información en una base de conocimiento es algo que es determinado por los procesos que respaldan al sistema. Una estructura robusta de procesos es la columna vertebral de cualquier Base de Conocimiento. Algunas Bases de Conocimiento tienen un componente de inteligencia artificial. Este tipo de Bases de Conocimiento pueden sugerir soluciones a problemas esporádicos en la retroalimentación por el usuario, y son capaces de aprender de la experiencia (sistemas expertos). Representación de Conocimiento, Razonamiento automatizado y argumentación son las áreas activas de la investigación de la inteligencia artificial. 5.4.3. Motor de inferencia (inference engine): es un programa que controla el proceso de razonamiento que seguirá el sistema experto. Utilizando los datos que se le suministran, recorre la base de conocimientos para alcanzar una solución. La estrategia de control puede ser de encadenamiento progresivo o de encadenamiento regresivo. En el primer caso se comienza con los hechos disponibles en la base de datos, y se buscan reglas que satisfagan esos datos, es decir, reglas que verifiquen la parte SI. Un programa escrito en CLIPS puede consistir en reglas, hechos y objetos. Un SE basado en reglas escrito en CLIPS es un programa dirigido por los datos (data driven), es decir, hechos y objetos. Las reglas pueden matchear con objetos y hechos, aunque los objetos pueden usarse por sí solos (mediante el envío de mensajes) sin utilizar el motor de inferencia. [7] 5.5 Ejemplo de CLIPS Como otros lenguajes para sistemas expertos, CLIPS trabaja con reglas y hechos. Algunos hechos pueden hacer que una regla sea aplicable. Una regla aplicable se activa. En principio las reglas y hechos se crean definiéndolos, como se muestra a continuación: (deffacts personas_empadronadas (persona (nombre "Manolo ) (edad 54)) (persona (nombre "Ignacio ) (edad 18)) (persona (nombre Marisa ) (edad 34)) ) En el fragmento de código de arriba se han definido 3 hechos: - Existe un objeto de la clase persona con nombre "Manolo" y edad 54. - Existe un objeto de la clase persona con nombre "Ignacio" y edad 18.

- Existe un objeto de la clase persona con nombre "Marisa" y edad 34. (defrule censar (persona (nombre?n) (edad?e)) (test (>?e 17)) => (assert (elector (nombre?n))) ) En el fragmento de código de arriba se ha definido una regla: - Para todo objeto de la clase persona con nombre n y edad e, si e es mayor que 17, existe un objeto de la clase elector con nombre n. [6] 5.6 Derivados de CLIPS Una de las razones del amplio uso de CLIPS está en sus derivados e interfaces con otros lenguajes, como: - JESS: implementación de CLIPS en Java. - FuzzCLIPS: incorpora a CLIPS la posibilidad de usar razonamiento difuso. - CLIPSMM: una interfaz libre de CLIPS con C++. 6. REFERENCIAS [1] Viejo Hernando Diego (2003). Sistemas expertos. Consultado en 06, 04, 2004 en http://www.divulga- ia.com/cursos/cursos.xml?numero=2&nombre=2003-9- 26a&numLecc=1. [2] Samper Márquez Juan José (2004). Introducción a los sistemas expertos. Consultado en 06, 03, 2004 en http://www.redcientifica.com/doc/doc199908210001.html. [3] Félix Justo (2004). Aplicaciones, ventajas y limitaciones de los sistemas expertos. Consultado en 06, 04, 2004 en http://efelix.iespana.es/efelix/expertaplicaciones.htm. [4] Montes Cerra Maria Clara (2003). Sistemas expertos. Consultado en 06, 05, 2004 en http://dis.eafit.edu.co/labs/labgic/articulos_%20publicar/ Sistemas%20expertos.doc. [5] http://www.geocities.com/aitorsjs/html/clips.pdf [6] http://es.wikipedia.org/wiki/clips [7] http://www.redcientifica.com/doc/doc199908210001.html - PHLIPS: extensión para PHP. - EHSIS: Implementación del lenguaje CLIPS con APIs adicionales y documentación en castellano. [6]