Sistema experto
Transcription
Sistema experto
Sistema experto: KingsHelper 08 David García Sánchez Javier García Zurdo María De Lozoya Nombela Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) [email protected] Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) [email protected] Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) [email protected] 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. - 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 - Existen muchas consideraciones que deben ser valoradas o incluirles un factor de peso. 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 conocimiento) BASE (base de 3.2.1 DEFTEMPLATE DEFINITIONS imaginacion ¿le 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. gust a pintar, colorear etc.? (deftemplate regla si (multislot if) no (multislot then)) ¿cuadernos par a ¿ colore a r u ot ra c osa ? Medi terrane o?¿o prefiere algo ti po mecan o? 3.2.2 INFERENCE ENGINE RULES que le parecen los j uegos de Este bloque será el encargado de controlar la ejecución global de las reglas, decidiendo qué regalas deben ejecutarse y cuándo. otro cuadern os mecano mediterraneo - Aprende a colorear como si estuvieses en primero - Pinturas Di sney -Pin to Yo - Rot ul adores Carioca Joy - Est uche de t emp eras y acuarelas - Mini Nova - As tronova -Choconova -Tetris blocks EDUCA -M ECANO 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: Figura 1 (defrule ask-question-no-legalvalues "" (declare (salience 10)) calle (not (legalanswers $?)) ?f1 <- (goal es ?variable) ¿que deporte l e gusta mas? ?f2 <- (question ?variable ? ?text) futbol balo ncesto tenis => otros (retract ?f1 ?f2) - Bal on - Balon -equi pacio n de t u equipo fav orit o -equipacio n de tu equipo favorit o -Raqueta de tenis /pade l/badminto n (format t "%s " ?text) -Bici/equipa miendo bici -cometa -patines (assert (variable ?variable (read)))) (defrule ask-question-legalvalues "" Figura 2 (declare (salience 10)) ?f1 <- (goal es ?variable) 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. ?f2 $?answers) <- (question ?variable ? ?text => (retract ?f1) (assert (legalanswers son ?answers)) (format t "%s " ?text) 3.2 Implementación (printout t ?answers crlf) 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: (bind ?reply (read)) 1. DEFTEMPLATE DEFINITIONS 2. INFERENCE ENGINE RULES (motor de inferencia) (if (member (lowcase ?reply) ?answers) then (assert ?reply)) (retract ?f2) (variable ?variable else (assert (goal es ?variable)))) Que pertenece al fragmento del árbol: ¿que c la se de re ga l o 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. 3.2.3 DEFFACTS KNOWLEDGE e sta s bus ca ndo? educativo ¿ Este bloque es el que contiene todas las preguntas escritas en función de las reglas definidas en los boques anteriores. que pote ncie sus c onoci mi ento so su i ma gina cion? juguete ¿para que pue da j uga r e n c a sa o e n l a c a lle ? De acuerdo con las reglas anteriores la escritura de una pregunta junto con su “situación” en el árbol es muy simple 4. Ejecución ;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 adulto) inicio es si and para_quien es (then edad es adulto)) (question para_quien es "¿para regalo?" nino joven adulto) quien es 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 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 ¿que c la se de re ga lo jovenes a dult os ¿qu e clas e de regalo estás bus cando? e st as busc a ndo? ¿qué t e pa rece al go d e ropa que p ueda usar a di ari o? 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) 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. (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) 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 información (Motor de Búsqueda), y un delicado formato contenido y estructura de clasificación. Una Base Conocimiento puede usar una ontología para especificar estructura (tipos de entidades y relaciones) y su esquema clasificación. Una ontología, junto con un grupo de instancias sus clases constituyen una Base de Conocimiento. de de de su de de 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))) ) 6. REFERENCIAS [1] Viejo Hernando Diego (2003). Sistemas expertos. Consultado en 06, 04, 2004 en http://www.divulgaia.com/cursos/cursos.xml?numero=2&nombre=2003-926a&numLecc=1. En el fragmento de código de arriba se ha definido una regla: [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. - 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] [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. 5.6 Derivados de CLIPS [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. 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++. - PHLIPS: extensión para PHP. - EHSIS: Implementación del lenguaje CLIPS con APIs adicionales y documentación en castellano. [6] [5] http://www.geocities.com/aitorsjs/html/clips.pdf [6] http://es.wikipedia.org/wiki/CLIPS [7] http://www.redcientifica.com/doc/doc199908210001.html
Documents pareils
Sistema experto: vendedor de coches
Establece una comunicación sencilla entre el usuario y el sistema.
El usuario puede consultar con el sistema a través de menús,
gráficos, etc., y éste le responde con resultados. También es
interes...