Sie sind auf Seite 1von 6

Introduccin a CLIPS 6.

24
Brian Steve Estrada Guzmn Universidad de San Carlos de Guatemala brianseg014@gmail.com Mayo 2013

Resumen: El presente artculo es una introduccin a la construccin de sistemas expertos en la herramienta CLIPS, tratando temas como su definicin, historia, constructores y funciones. El principal objetivo es mostrar conceptualmente el comportamiento de la herramienta en sus diferentes estados durante la ejecucin, causado por la interaccin entre todos sus elementos que se relacionan para lograr un objetivo. Abstract: This paper is an introduction to build expert systems in CLIPS tool, including topics like its definition, history, constructors and functions. The main goal is to show conceptually the behavior of the tool in different states while running, caused by the interaction between all its elements and due to their relations to reach an end common. Palabras claves: CLIPS, Programacin lgica, Programacin orientada a objetos, Sistemas expertos. Programacin imperativa,

1.

Introduccin

Los sistemas expertos [1] son programas que capturan la experiencia y conocimiento de una persona experta en un tema concreto, de tal modo que una persona no experta se pueda aprovechar esa informacin. CLIPS [2] es un entorno de desarrollo simple y orientado a texto que permite la construccin y ejecucin de sistemas expertos utilizando unidades de conocimiento llamadas hechos y una serie de reglas. Para el uso de lenguajes como CLIPS [3] es necesario un completo cambio en la forma de pensar al momento de programar. La

diferencia fundamental con este tipo de lenguajes es que declaran lo que hay que hacer pero no especifican de forma explcita la manera de obtenerlo. Esto es debido a que cuentan con un motor de inferencia para encontrar la solucin que cumple con dichas condiciones. El resto del artculo se tratar a detalle la sintaxis de los constructores y funciones ms importantes de la herramienta que nos permitirn la construccin de un sistema experto bsico. Adems en ciertas ocasiones se presentan analogas con otros lenguajes para facilitar el entendimiento y la funcionalidad que puede proveer una funcin o un constructor.

2.

Interaccin con CLIPS Cuando nos referimos a un valor almacenado se le llama campo. Los datos primitivos se les refieren como valor de campo simple. Un valor multicampo es una secuencia de cero o ms valores de campo simple. 3.2. Funciones

Es posible ejecutar CLIPS de tres formas distintas: interactivamente utilizando la consola, interactivamente utilizando una combinacin de ventana/ratn/men y como un sistema embebido en un programa que el usuario provee. La interfaz genrica de CLIPS provee un entorno con la funcionalidad mnima necesario como lo es una plataforma para el desarrollo y ejecucin del sistema, y comandos para la verificacin de estados en el programa. Actualmente est disponible para su uso en Macintosh, Windows 3.1 y ambientes con X Window. 3. Elementos bsicos de programacin

Son piezas de cdigo ejecutables identificadas por un nombre especfico que retornan un valor u ocasionan un efecto. Funciones definidas por usuario y funciones definidas por el sistema son piezas de cdigo escritas en lenguajes externos como C o Fortran y enlazadas al ambiente de CLIPS. Adems se provee un constructor para que el usuario pueda crear sus propias funciones directamente dentro del ambiente de CLIPS, utilizando su sintaxis. 3.3. Constructores Los constructores son funciones de CLIPS que permiten al usuario la creacin de elementos con un propsito especfico, como la definicin de una plantilla o una regla. Existen once constructores en CLIPS en los cuales se abordaran ms adelante los esenciales para la construccin de un sistema experto simple. 3.4. Hechos Los hechos son la unidad bsica de informacin que contienen el conocimiento del experto. Representan el mensaje en el sistema de comunicacin [3] en las diferentes partes del programa.

3.1. Tipos de datos Provee de ocho tipos primitivos de datos para la representacin de informacin, a continuacin se listan los ms importantes: Entero: Es cualquier nmero que tiene opcional un signo seguido solamente de dgitos. Flotante: Cualquier otro nmero que no puede ser almacenado como entero. Smbolo: Es cualquier secuencia de caracteres que inicia con cualquier carcter imprimible ASCII y es seguido de cero o ms caracteres imprimibles ACSII. Cadena de caracteres: Es un conjunto de caracteres que inicia con comillas dobles, seguido de cero o ms caracteres imprimibles y terminado con comillas dobles.

Los hechos se podrn utilizar para comunicar informacin entre reglas, ya que al crear nuevos hechos se podrn instanciar nuevas reglas que recuperarn la informacin almacenada. Otra utilidad es de establecer mecanismos de control que permitan modificar como hace la exploracin el motor de inferencia. Se pueden crear hechos que permitan activar o desactivar la ejecucin de las reglas y as imponer cierto orden de ejecucin. Los hechos se pueden trabajar a grandes rasgos en dos categoras, los cuales se definen a continuacin: Hechos ordenados: Consiste en un smbolo seguido de cero o ms campos separados por espacios y delimitado por parntesis a sus extremos. Codifican la informacin posicionalmente, por tanto, para acceder a la informacin es necesario conocer tanto la informacin que est almacenada como si no que campo contiene la informacin. Hechos no ordenados: Provee al usuario la habilidad de abstraer la estructura del hecho asignando nombres a cada campo del hecho.

3.5. Variables globales Son variables que se definen en todos los mbitos que se encuentran en el ambiente de CLIPS. Estas variables son similares a las encontradas en lenguajes de programacin de procedimientos como C, con la diferencia que no estn restringidas a recibir un nico tipo de valor. Los valores de una variable global puede ser asignada en su constructor y mediante una funcin en cualquier otro lugar de ejecucin. 4. Constructores

4.1. Deftemplate Su funcin principal es la creacin de un plantilla para la codificacin de hechos no ordenados. Para acceder a la informacin el usuario debe conocer no solo los datos contenidos en el hecho si no que el campo contiene cada dato. Este constructor es anlogo a grabar una definicin de estructura en lenguajes como C. Se deben definir ciertos atributos para ajustar el uso de la plantilla, a continuacin se listan algunos de ellos: Valor predeterminado: Determina el valor que deber tomar un campo en caso no sea especificado en la definicin de la plantilla. Puede ser un valor constante (calculado al definir la plantilla) o dinmico (calculado al construir un hecho). Tipo: Puede adquirir cualquier tipo primitivo enumerado anteriormente en este artculo.

Los hechos ordenados y los hechos no ordenados se distinguen entre s por el primer smbolo. Si el smbolo corresponde al nombre de un hecho no ordenado, entonces es un hecho no ordenado, de lo contrario es un hecho ordenado. Es importante considerar que no pueden existir hechos duplicados en la lista de hechos, independientemente si son ordenados o no ordenados.

4.2. Deffacts Permite definir los hechos que sern automticamente ingresados la lista de hechos cuando se ejecute un reseteo.

4.3. Defrule Es una coleccin de condiciones y acciones a realizar en caso las condiciones se cumplan. El desarrollador debe utilizar las reglas para describir cmo resolver un problema. Las reglas se activaran en base a la existencia o no existencia de hechos o instancias de clases definidas por el usuario. El lado izquierdo de la regla contendrn todas las condiciones, las cuales pueden ser: patrn, prueba, y, o, no, existe, para todos y lgico. Los patrones son las comparaciones ms complejas y consisten en una coleccin de restricciones de campos, comodines y variables usado para limitar un conjunto de hechos o instancias a comparar. Los comodines son utilizados para representar cualquier tipo de campo o multicampo. Las variables locales utilizan un signo de interrogacin seguido de un comodn. Es posible utilizar conectores para realizar operaciones bsicas como una negacin con ligadura. La prueba se refiere a una verificacin de falso o verdadero a funciones u operaciones. Los elementos condicionales de o trabajan de un modo especial. Permite que una regla se active si por lo menos un elemento condicional es verdadero, sin embargo, se activar por cada elemento condicional que se verdadero. En su mayora las reglas que se definan requerirn de un hecho especial que solamente se agrega a la lista de hechos al momento de ejecutar un reinicio del programa, llamada hecho inicial.

4.4. Defglobal Con este constructor se puede definir, establecer y acceder a las variables globales dentro del ambiente de CLIPS. Las variables globales pueden ser accedidas como parte de un proceso de comparacin de patrones, pero modificarlos no invocar el proceso. Las variables globales son establecidas a su valor original al reste del programa. En una sola definicin del constructor es posible la creacin de muchas variables globales. En referencia a la sintaxis y la diferencia entre una variable local y global es que ambas inician con un signo de interrogacin, sin embargo, las variables globales estn encerradas dentro de asteriscos. 4.5. Deffunction Nuevas funciones pueden ser declaradas directamente en CLIPS. Est compuesto por: nombre, comentario opcional, una lista de cero o ms parmetros requeridos, un parmetro comodn opcional para manejar un nmero variable de argumentos y una secuencia de acciones, que sern ejecutadas en orden cuando la funcin sea llamada. Una funcin puede aceptar exactamente o al menos un nmero especificado de argumentos, dependiendo de si un comodn se est usando o no. Los parmetros regulares especifican el nmero mnimo de argumentos que deben ser pasados a la funcin. 4.6. Defclass (COOL) Este es un hbrido de caractersticas de muchos sistemas orientados a objetos as como nuevas ideas.

Figura 1: Relaciones de herencia entre clases Todas las clases a excepcin de initial-object son abstractas, lo que significa que solamente pueden ser usadas para herencia, puesto que instancias directas son ilegales. Este constructor especifica las propiedades y el comportamiento de una clase de objeto. Consiste en cinco elementos: nombre, listado de super clases de las cuales va a heredar atributos y manejadores de mensajes, un especificador de si es abstracto, un especificador si se puede utilizar para el lado izquierdo de las reglas y un listado de atributos. Todas las clases definidas por el usuario deben heredar de la ltima clase y para este fin COOL provee de clases del sistema predefinidas para usar como base en la derivacin de nuevas clases. Soporta herencia mltiple, esto significa que puede heredar los atributos de varias clases. Esto produce una serie de problemas que debe ser solucionado con precedencia entre las clases. Las clases utilizan los especificadores para establecer propiedades a la clase, siendo el uno de ellos el rol. El rol puede ser abstracto o concreto. Abstracto significa que no puede ser instanciado y concreto lo opuesto.

Tambin es posible la definicin de un tipo de atributo, siendo estos los mismos utilizados en las plantillas. Los accesos son manejadores de mensajes que generan automticamente para obtener y establecer los valores para atributos de las clases. Las instancias de los objetos se pueden realizar mediante el constructor definstance, el cual tiene una funcionalidad semejante a deffacts, con la diferencia de enfocarse en la definicin de instancias de objetos. Otra forma de definir una instancia de objeto es mediante la funcin make, a la cual adems se le pueden establecer los valores iniciales a los slots. 4.7. Defmessage-hanler Son los manejadores de mensajes. Estos manejan mensajes internos del sistema que van dirigidos hacia los objetos instanciados de una clase. Mediante estos manejadores de mensajes es posible la definicin de funciones para los objetos que pueden modificar los valores de los mismos, efectuarles operaciones, entre otras acciones.

5.

Funciones

CLIPS ofrece funciones de alto nivel pre programadas para facilitar el uso del sistema. Entre las ms importante tenemos: Clear: Elimina toda la informacin de la memoria (incluye el programa y todos los hechos) Reset: Reinicia la memoria cargando eliminando todos los hechos de la lista de hechos, reiniciando los valores de las variables globales y agregando los hechos definidos en deffacts. Run: Ejecuta el programa. Agenda: Muestra las reglas que se van a activar y los hechos que permiten dicha activacin. Assert: Agrega un hecho ordenado o no a la lista de hechos. Modify: Modifica un hecho, eliminando el anterior y agregando uno nuevo con la informacin modificada. Retract: Extrae el hecho indicado en un fact-index.

desarrollo. La unidad de conocimiento son los hechos, los cuales pueden ser ordenados (un vector de smbolos) o no ordenandos mediante el uso de plantillas definidas a travs de deftemplate (abstraen la estructura para poder nombrar los campos). Estas unidades de informacin son controladas mediante las reglas, que estn compuestas de dos partes, el lado izquierdo (conjunto de condiciones que se deben cumplir) y el lado derecho (un conjunto de acciones que son ejecutadas si el lado izquierdo se cumple. Entre las acciones que pueden activar una regla est la inclusin o eliminacin de hechos de la lista de hechos. Adems el sistema permite el manejo de variables globales y otra variedad de herramientas para el control del flujo de estados del programa. 7. Referencias bibliogrficas
[1] Carlos Soto. Sistema experto de diagnstico mdico del sndrome de Guillian Barr. Universidad del Per. 2002. [2] Chris Culbert. Volume 1. Basic Programming Guide. Houston, TX. Junio 2006. [3] Creative Commons. CLIPS - Code Snippets. California 94305, USA. 2011.

6.

Conclusiones

Los sistemas expertos son programas que contiene el conocimiento de un experto en un rea de conocimiento determinado. Por tanto, pueden ser de utilidad para las personas no expertas, contestando preguntas y realizando evaluaciones. Una forma de construir sistemas expertos es mediante el desarrollo en un entorno integrado como CLIPS, el cual provee un conjunto de caractersticas que facilitan el

Das könnte Ihnen auch gefallen