Documente Academic
Documente Profesional
Documente Cultură
Facultad de Informática
CLIPS
1
Índice
Motivación ........................................................................................................4
Desarrollo .........................................................................................................5
Principales Características ...................................................................................7
Base Teórica ......................................................................................................8
Sistemas de Producción............................................................................................................ 8
Algoritmo RETE .................................................................................................................... 11
Características de los Sistemas de Producción....................................................................... 12
CLIPS ............................................................................................................13
Representación del conocimiento........................................................................................... 13
Estructura de un programa en CLIPS..................................................................................... 13
PROGRAMACIÓN BÁSICA EN CLIPS ............................................................................. 13
MEMORIA DE TRABAJO (MT).......................................................................................... 13
BASE DE CONOCIMIENTO (BC) ...................................................................................... 17
MOTOR DE INFERENCIA .................................................................................................. 21
EJECUCIÓN DE PROGRAMAS .......................................................................................... 22
PROGRAMACIÓN ORIENTADA A OBJETOS EN CLIPS: COOL.................................. 22
Ejemplos de CLIPS ...........................................................................................24
Ventajas ..........................................................................................................27
Desventajas .....................................................................................................27
BIBLIOGRAFÍA ..............................................................................................28
2
Los sistemas expertos son programas que reproducen el proceso intelectual de un experto
humano en un campo particular, pudiendo mejorar su productividad, ahorrar tiempo y dinero,
conservar sus valiosos conocimientos y difundirlos más fácilmente.
3
Motivación
Los orígenes del "C Language Integrated Production System" (CLIPS) data de 1984. Es una
herramienta para el desarrollo de sistemas expertos (SE) creada por la Software Technology
Branch (STB), NASA/Lyndon B. Johnson SpaceCenter.
En este tiempo, la sección de inteligencia artificial se había interiorizado sobre el uso de las
docenas de prototipos, usando el hardware y software disponible para la época. Sin embargo,
a pesar de las demostraciones extensas del potencial de los sistemas expertos, pocos de estos
usos fueron puestos en forma regular. Esta falta de tecnología de los sistemas expertos dentro
de los apremios operacionales de la NASA, se podía remontar en gran parte al uso del lisp
como lenguaje para casi todas las herramientas del software en aquella época. En detalle, tres
problemas obstaculizaron el uso de las herramientas basadas en lisp dentro de la NASA: la
disponibilidad baja del lisp en una variedad amplia de computadoras convencionales, el alto
costo de herramientas avanzadas y de hardware de lisp, y de la integración pobre del lisp con
otros lenguajes. Dado estos problemas era más que evidente que se debería desarrollar una
propia herramienta para la construcción de Sistemas Expertos.
La versión del prototipo de CLIPS fue desarrollada en 1985 en dos meses. La atención
particular fue dada a hacer la herramienta compatible con los sistemas expertos usados en
inteligencia artificial.
La sintaxis de CLIPS fue hecha para asemejarse muy de cerca a la sintaxis de un subconjunto
de la herramienta del sistema experto del ART desarrollada por Inference Corporation.
Aunque estuvieron modelados originalmente de ART, CLISP fue desarrollado enteramente
sin ayuda de la inferencia o del acceso al código de fuente del ART.
El intento original para CLISP era ganar la penetración y el conocimiento útil sobre la
construcción de las herramientas y poner la base para la construcción de una herramienta de
reemplazo para las herramientas comerciales que eran utilizadas por aquel entonces.
4
Desarrollo
Versión Descripción
La versión 1,0 demostró la viabilidad del Después del desarrollo adicional, llegó a ser
concepto del proyecto. evidente que CLIPS sería una herramienta de
bajo costo ideal para los propósitos del
entrenamiento. Otro año del desarrollo y del
uso interno mejoraban su portabilidad,
funcionamiento, funcionalidad, y
documentación de soporte.
La versión 3,0 de CLIPS fue puesta a Otros realces transformaron CLISP de una
disposición fuera de la NASA en el verano de herramienta de entrenamiento en una
1986. herramienta útil para el desarrollo.
5
La versión 5,0 de CLIPS, lanzada en 1991 Introdujo dos nuevos paradigmas de
programación: programación procedural
(según lo encontrado en lenguajes tales como
C y Ada) y programación orientada a
objetos.
La versión 5,1 de CLIPS, lanzada a fines de Mejora del software requerida para apoyar
1991, las interfaces desarrolladas y/o realzadas de
Windows, de MSDOS, y de Macintosh .
6
Principales Características
• Representación del Conocimiento: CLIPS provee una herramienta cohesiva para manejar
una variedad amplia de conocimiento, soporta tres diversos paradigmas de programación:
basado en las reglas, orientado al objeto y procedural. La programación basada en las
reglas permite que el conocimiento sea representado como heurística, que especifica un
sistema de acciones que se realizarán para una situación dada. La programación orientada
a objeto permite que los sistemas complejos sean modelados como componentes
modulares (que se puedan reutilizar fácilmente para modelar otros sistemas o para crear
nuevos componentes). Las capacidades de programación procedurales proveídas por
CLIPS son similares a las capacidades encontradas en lenguajes tales como C, Java, Ada,
y lisp.
7
Base Teórica
Sistemas de Producción
Un Sistema de Producción ofrece un mecanismo de control dirigido por patrones para la
resolución de problemas. Representación del conocimiento experto.
Se puede apreciar que las nubes están oscuras y está levantándose viento, y cuando se dan
estos hechos siempre llueve copiosamente.
o Estado Inicial
o Estado Final
8
• Memoria de producción: Conjunto de reglas que representan el conocimiento. Las
Reglas consisten de un conjunto de premisas o condiciones (lado izquierdo) y una o
más acciones o conclusiones.
• Si hay más de una regla que aplique, selecciona una de estas (resolución de conflicto).
Si tenemos una serie de reglas encadenadas estas pueden ser "ejecutadas" de diversas
maneras, es decir, la máquina de inferencia puede seleccionar o encadenar (chaining) las
reglas de diferentes formas. Existen dos formas básicas de encadenamiento:
En ambos casos podemos tener prioridad lateral o prioridad por profundidad. También se
pueden combinar ambas estrategias (encadenamiento mezclado) o utilizar formas de control
9
más especificas para el problema. La selección de la forma de encadenamiento depende de
varios factores:
• Determinístico - en cada ciclo del intérprete sólo hay una regla que se puede ejecutar,
es decir hay un "camino" único para la solución de problemas.
• No-determinístico - en cada ciclo puede haber varias reglas que pueden ejecutarse, es
decir que hay varios "caminos" o soluciones posibles.
Los sistemas "reales" son generalmente no-determinísticos, por lo que tiene que haber una
estrategia para seleccionar una regla cuando varias se apliquen, o estén en conflicto en cierto
instante. A este mecanismo se le conoce como resolución de conflicto. Este mecanismo es
muy importante para la efectividad de los sistemas expertos. Se debe basar en dos principios
fundamentales:
Aunque varían las formas de resolución de conflicto, casi todas combinan tres técnicas:
10
2. Reglas recientes (recency) - seleccionar las reglas que involucren datos mas recientes
en la memoria de trabajo. Para esto se indica el tiempo de llegada de cada elemento en la
MT y sirve para mantenerse en la frontera de la solución.
Estas técnicas son genéricas y aunque no garantizan la mejor solución, proveen generalmente
una solución adecuada.
La otra alternativa es usar técnicas más específicas para el problema, aunque se pierde
generalidad en el intérprete.
Meta-reglas son reglas que permiten controlar el razonamiento del problema (meta-reglas),
diferenciándose de las reglas que resuelven el problema (reglas a nivel objeto), pueden ser de
dos tipos:
Desde luego que las segundas son más difíciles de encontrar y existe investigación para
encontrar meta-reglas o formas de razonamiento que se apliquen a clases de problemas
diagnóstico, diseño, planificación)
Algoritmo RETE
El apareamiento de patrones (pattern-matching) es costoso computacionalmente. Tiene que
decidir si una lista arbitraria coincide con otra y depende del tamaño y número de variables
en la lista. El algoritmo RETE hace más eficiente este proceso. Para ello elimina dos fuentes
principales de ineficiencia:
11
1. Las reglas generalmente comparten condiciones y es ineficiente tratar de aparear todas
las condiciones con los elementos en la Memoria de Trabajo (ciclos dentro de la iteración
o internos)
Para hacer esto más eficiente, el algoritmo construye una red ordenada en forma de árbol que
contiene todos los patrones en las condiciones (sólo una vez) y se usa para revisar contra la
Memoria de Trabajo evitando los ciclos internos. Se tiene un conjunto de identificadores que
indican que elementos de la MT coinciden con las reglas y este solo se actualiza cada ciclo,
evitando los ciclos externos.
Un sistema de producción se dice que es monotónico si la aplicación de una regla nunca evita
que más tarde se pueda aplicar otra regla que también pudo ser aplicada al momento en que
la primera fue seleccionada.
12
CLIPS
El shell (parte de CLIPS que realiza inferencias o razonamiento) provee los elementos básicos de un
SE:
1. memoria global de datos (memoria de trabajo, MT): conocimiento factual (fact-list e instance-list).
2. base de conocimiento (knowledge base): contiene las reglas de la base de reglas.
3. motor de inferencia (inference engine): controla la ejecución global de las reglas: decide qué reglas
deben ejecutarse y cuándo.
Todos los elementos de la memoria de trabajo (MT) son entidades que corresponden o bien a hechos o
bien a instancias de una clase de objetos.
13
La MT consta de una lista de hechos (fact-list) y de una lista de instancias (instance-list).
Un hecho es una forma básica de alto nivel para representar información. Es la unidad de datos
fundamental utilizada en las reglas. Un hecho se compone de una serie de campos(slots). Un campo es un
lugar, con o sin nombre, que puede llevar asociado un valor.
Tipos primitivos de datos también llamados valores de un único campo (single-field values)
INFORMACIÓN SIMBÓLICA
• Símbolos (SYMBOL); cualquie r secuencia de caracteres ASCII imprimibles.
• Cadenas de caracteres (STRING); un conjunto de cero o más caracteres ASCII imprimibles
encerrados entre comillas dobles (").
INFORMACIÓN NUMÉRICA
• Enteros (INTEGER).
• Punto flotante (FLOAT).
Funciones.
Una función es un fragmento de código ejecutable (identificado por un nombre) que devuelve un valor o
que tiene un efecto lateral útil. Distinguiremos ambos tipos de funciones denominando comandos o
acciones a aquellas funciones que no devuelven valores, pero que generalmente tendrán algún efecto
lateral útil.
Las llamadas a funciones usan notación prefija: los argumentos de una función aparecen después del
nombre de ésta y todo ello entre paréntesis (al estilo de LISP).
14
Constructores.
Son estructuras sintácticas identificadas por una palabra reservada del lenguaje que permiten definir
funciones, reglas, hechos, clases, etc., que alteran el entorno de CLIPS añadiéndolas a la base de
conocimiento. Los constructores no devuelven ningún valor. Su sintaxis también es similar a la
definición de funciones.
Existen tres formas de representar la información en CLIPS: hechos, objetos y variables globales
Un hecho es una lista de valores atómicos que pueden ser referenciados por la posición que ocupan
dentro del hecho (hechos ordenados) o bien por un nombre (hechos no ordenados). La forma de acceder a
un hecho de la MT es mediante un índice o dirección (fact index).
Un hecho puede ser añadido a la MT, eliminado, modificado o duplicado ya sea directamente por el
usuario a través de comandos o mediante un programa CLIPS.
HECHOS ORDENADOS
• Secuencia de cero o más campos separados por espacios y delimitados por paréntesis.
• El campo inicial suele expresar una relación entre los campos siguientes.
Ejemplo (lista-de-la-compra pan leche arroz)
• Los campos de un hecho ordenado pueden ser de cualquier tipo primitivo de datos, excepto el
primero, que debe ser un símbolo.
• No es necesario declararlos.
• No existe restricción alguna en el orden de los campos.
• Para coincidir con una regla sus campos deben aparecer en el mismo orden que indique la regla.
Es decir, los hechos ordenados “codifican” la información según la posición. Para acceder a esa
información el usuario debe saber la información que almacena el hecho y qué campo la contiene.
HECHOS NO ORDENADOS
15
Los hechos no ordenados se distinguen de los ordenados mediante el primer campo. El primer campo de
cualquier hecho debe ser un símbolo, pero si éste coincide con el nombre de un constructor deftemplate,
entonces se considera no ordenado.
No importa el orden en el que se referencia el campo y/o el orden en el que aparezcan los campos.
Además, podemos restringir el tipo, valor y rango numérico, entre otros, de los campos de un hecho no
ordenado: son los atributos de los campos
Se puede restringir su tipo, valor, rango numérico y la cardinalidad (el número mínimo y máximo de
valores para un campo); se pueden especificar valores por defecto. Todas estas características ayudan en
el desarrollo y mantenimiento de un SE proporcionando un fuerte tipado y comprobación de restricciones.
Atributo allowed-
Especifica los valores concretos permitidos para un tipo específico. Existen siete atributos de esta clase:
allowed-symbols, allowed-strings, allowed-lexemes, allowed-integers, allowed-floats, allowed-numbers y
allowed-values
(deftemplate persona
(slot sexo (type SYMBOL)(allowed-symbols hombre mujer)))
Los hechos de las sentencias deffacts son añadidas a la MT utilizando el comando reset. El
comando reset elimina todos los hechos que hubiera en la lista de hechos actual, y a continuación
añade los hechos correspondientes a sentencias deffacts.
Un programa CLIPS puede ser ejecutado mediante el comando run. Pero puesto que las reglas requieren
de hechos para ejecutarse, el comando reset es el método clave para iniciar o reiniciar un sistema experto
16
en CLIPS. Así, el comando reset provoca la activación de algunas reglas, y el comando run inicia la
ejecución del programa.
Objetos
Una instancia es una instanciación o ejemplo específico de una clase (que representa un conjunto de
objetos con las mismas propiedades). En CLIPS un objeto puede ser cualquier valor de un tipo primitivo
de datos (un entero, un string, un símbolo, una dirección externa, etc.) o una instancia de una clase
definida por el usuario.
Clase: patrón para propiedades comunes y conducta de los objetos que son instancias. Los objetos se
dividen en dos categorías: tipos primitivos e instancias de clases definidas por el usuario. Estos dos tipos
difieren en la forma en que se referencian, en cómo se crean y se borran, y en cómo se especifican sus
propiedades.
Herencia: permite definir las propiedades y conducta de una clase en función de otras clases mientras los
hechos no tienen herencia.
El consecuente de una regla es un conjunto de acciones a ser ejecutadas cuando la regla es aplicable.
Estas acciones se ejecutan cuando el motor de inferencia de CLIPS es instruido para que comience la
ejecución de las reglas aplicables.
Una regla CLIPS es una entidad independiente: no es posible el paso de datos entre dos reglas.
Sintaxis: (defrule <nombre-regla> [<comentario>]
[<declaración>]
<elemento-condición>* ; Parte izquierda (LHS)
=>
<acción>*) ; Parte dcha. (RHS) de la regla
Si se introduce en la base de reglas una nueva regla con el mismo nombre que el de una existente, la
nueva regla reemplazará a la antigua.
17
El comentario, que debe ser un string, se usa normalmente para describir el propósito de la regla o
cualquier otra información que el programador desee. Estos comentarios pueden ser visualizados junto
con el resto de la regla usando el comando ppdefrule:
Sintaxis: (ppdefrule <nombre-regla>)
Si una regla no tiene parte izquierda, es decir, no tiene elementos condicionales, entonces el hecho
(initial-fact) actuará como el elemento condicional para ese tipo de reglas, y la regla se activará cada vez
que se ejecute un comando reset.
Elemento condicional (EC) especifica restricciones sobre elementos de las listas de hechos e instancias:
sólo se satisface si existe una entidad (hecho o instancia) que cumple las restricciones expresadas.
Colección de restricciones de campos, comodines, y variables que se usan para restringir el conjunto de
hechos o instancias que satisfacen el pattern.
Ej.: Con restricciones literales.
(altitud es 1000 metros)
18
Se usa para evaluar expresiones en la parte izquierda de una regla, interviniendo en el proceso de pattern-
matching. El EC test se satisface si la llamada a la función que aparezca dentro de él devuelve cualquier
valor distinto de FALSE; en caso contrario, este EC no se satisface.
Recuérdese que CLIPS supone que todas las reglas tienen un and implícito que rodea todos los elementos
condicionales de la LHS. Esto significa que todos los EC que aparezcan en la LHS de la regla deben
satisfacerse para que la regla se active.
Este EC permite que se produzca el pattern matching cuando al menos exista un hecho que satisfaga la
regla, sin tener en cuenta el número total de hechos que pudiesen matchear. Esto permite una sola
activación para una regla con la que matcheen un conjunto de hechos.
El EC exists está implementado mediante una combinación de and’s y not’s. Los EC’s dentro de un
exists se incluyen dentro de un and y luego dentro de dos not.
Permite el matching basado en un conjunto de EC’s que son satisfechos por cada ocurrencia de otro EC.
Su funcionamiento es el contrario que el de exists. Para que el EC forall se satisfaga, todo lo que matchee
con <primer-EC> debe tener hechos que matcheen todos los demás EC que aparecen acontinuación de
<primer-EC>.
Las acciones o comandos (para distinguirlas de las funciones) son operaciones que no devuelven un valor,
pero tienen algún efecto lateral útil.
Acciones procedurales.
19
Ligaduras. La función bind sirve para asignar un valor a una variable, es decir, su efecto es el de una
asignación, similar a la que permiten otros lenguajes con el símbolo “:=“.
Sintaxis: (bind <variable> <expresión>*)
Para mayor información puede referirse a las sitios recomendados en la sección de enlaces.
Funciones predefinidas
o E/S
o Matemáticas
o Conversión
o de strings
o de manejo de valores multicampo
o funciones de entorno.
Nombres lógicos.
Los nombres lógicos permiten referenciar un dispositivo de E/S sin tener que entender los detalles de la
implementación de la referencia. Muchas funciones en CLIPS usan nombres lógicos. Un nombre lógico
puede ser un símbolo, un número, ó un string. A continuación se muestra una lista de los nombres lógicos
predefinidos en CLIPS:
El valor devuelto por la función es la última acción o expresión evaluada dentro de la función. Si una
deffunction no tiene acciones, devolverá el símbolo FALSE. Si se produce algún error mientras se ejecuta
la función, cualquier otra acción de la función aún no ejecutada se abortará, y la función devolverá el
símbolo FALSE.
20
MOTOR DE INFERENCIA
Ciclo básico
1. Si se ha alcanzado el número de ciclo de desencadenamie nto expresados o no hay foco actual, entonces
PARAR.
Si no, seleccionar para ejecutar la regla tope de la agenda del módulo actual.
Si no hay reglas en dicha agenda, entonces eliminar el foco actual de la pila de focos y actualizar
al siguiente de la pila.
Si la pila de focos está vacía, entonces PARAR, si no ejecutar 1. de nuevo.
2. Se ejecutan las acciones de la parte derecha de la regla seleccionada. Incrementar el nº de reglas
desencadenadas.
Si se usa return, entonces eliminar el foco actual de la pila de focos.
4. Si se utiliza prioridad dinámica (dynamic salience), entonces se reevalúan los valores de prioridad de
las reglas de la agenda. Ir al paso 1.
Filtrado (match)
“Construye una instanciación para cada conjunto de elementos que satisfacen una regla”
La agenda es la lista de todas las reglas cuyas condiciones se satisfacen y todavía no se han ejecutado.
La agenda es la lista de todas las reglas cuyas condiciones se satisfacen y todavía no se han ejecutado.
Cada módulo tiene su propia agenda, y su funcionamiento es similar al de una pila: la regla tope de la
agenda es la primera que se ejecuta.
Cuando una regla se activa de nuevo, se sitúa en la agenda en base a los siguientes factores:
a) las nuevas reglas activadas se sitúan por encima de todas las reglas de menor prioridad
(salience) y por debajo de todas las reglas de mayor prioridad.
b) entre las reglas de igual prioridad, se utiliza la estrategia de resolución de conflictos actual para
determinar su situación relativa.
21
c) si los pasos (a) y (b) no son suficientes para determinar el orden, las reglas se colocan
arbitrariamente en relación con las otras reglas (no aleatoriamente, sino que depende de la
implementación de las reglas).
CLIPS posee siete estrategias: profundidad (depth), anchura (breadth), simplicidad (simplicity),
complejidad (complexity), aleatoria (random), orden lexicográfico (lex), y means-end analysis.
Ejecución (act)
Una vez seleccionada una regla, ésta se ejecuta.
Las acciones se ejecutan en el orden en el que han sido escritas.
A los elementos creados o modificados, se les asigna un índice de hecho (fact index) mayor que todos
los existentes. Las modificaciones realizadas en la MT son propagadas al conjunto conflicto (agendas).
EJECUCIÓN DE PROGRAMAS
22
La definición de nuevas clases permite la abstracción de nuevos tipos de datos. Los slots y los gestores de
mensajes de las clases describen las propiedades y la conducta de un nuevo grupo de objetos.
COOL soporta la encapsulación: requiere el paso de mensajes para manipular las instancias de las clases
definidas por el usuario. Una instancia no puede responder a un mensaje para el que no tenga definido el
correspondiente gestor de mensajes.
COOL permite especificar las propiedades y la conducta de una clase en términos de una o más
superclases no relacionadas: herencia múltiple .
Para cada nueva clase, COOL utiliza la jerarquía de clases existente para establecer un orden lineal
llamado lista de precedencia de clases. Las instancias de estas clases pueden heredar propiedades (slots)
y conducta (gestores de mensajes) de cada una de las clases en la lista de precedencia.
COOL proporciona 17 clases predefinidas que no pueden ser ni eliminadas ni modificadas por el usuario.
El esquema de la jerarquía de las clases es el siguiente:
El uso de objetos en CLIPS es el mismo que el hecho para otros programas de programación, la forma en
que son invocados los mensajes o las consultas varían, pero tienen su uso análogo por lo que habrá gran
tiempo en el uso de ellos. Para mayor información consulte referencias.
23
Ejemplos de CLIPS
Los sistemas expertos han existido desde más de 30 años con una amplia gama de estudios y aplicaciones
incluyendo control y gestión del ambiente. Se puede considerar el aire normal si contiene más del 99%
de los siguientes gases: nitrógeno 79.9% oxígeno 19.4%, argón 0.84 y dioxido de carbono en 0.03%. En
Malasia a partir de la regulación de 1995 existe el compromiso de mejora, se reportaron datos de la
contaminación donde la contaminación del aire ocupa el 69%. Esto motivo al desarrollo de estudios para
evaluar la calidad del aire para tomar medidas correctivas.
El sistema Expert System for Air Pollution Management -ES-APM –, fue creado para ayudar a los
administradores del proyecto en estados de planeación, identificación, predicción y evaluación del
impacto ambiental si aplicarán un determinado plan de corrección. Los objetivos del proyecto son
realizar reportes de concernientes a la contaminación del aire, extraer reglas de expertos y literatura. Usar
estas reglas para producir un SE y desarrollar un SE que pueda usarse para producir reportes.
El sistema ES-APM es un sistema experto basado en reglas de soporte a las decisiones en la predicción de
la contaminación aérea debida al desarrollo. El sistema fue construido con CLIPS, una variedad de
metodologías fueron integradas para su construcción, se tomaron las reglas de expertos, se adoptaron para
representar factores de incertidumbre y finalmente el sistema es usado para la predicción precisa de la
contaminación aérea.
Para mayor información de características técnicas, módulos de desarrollo, arquitectura y conclusiones se
pueden dirigir a http://eng.iiu.edu.my/seminar/archive/Air%20pollution%20forecasting.ppt.
El mundo de bloques
(deftemplate objeto
(slot nombre (type SYMBOL) (default ?NONE))
(slot localizacion (type SYMBOL) (default almacen)))
(deftemplate robot
(slot nombre (type SYMBOL) (default ?NONE))
(slot localizacion (type SYMBOL) (default hangar))
(slot sostiene (type SYMBOL) (default ?DERIVE)))
(deffacts hechos-iniciales
(robot (nombre Roby))
(objeto (nombre cubo))
(objetivo Roby coger cubo))
(defrule crea-objetivo-ir-hacia
“Crea un subobjetivo ir-hacia a partir de un objetivo coger"
(objetivo ?robot coger ?objeto)
(objeto (nombre ?objeto) (localizacion ?loc))
=>
(assert (objetivo ?robot ir-hacia ?loc)))
24
CLIPS> (reset)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (robot (nombre Roby) (localizacion hangar) (sostiene nil))
f-2 (objet (nombre cube) (localizacion almacen))
f-3 (objetivo Roby coger cubo)
For a total of 4 facts.
CLIPS> (agenda)
0 crea-objetivo-ir-hacia: f-3,f-2
For a total of 1 activation.
CLIPS> (run)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (robot (nombre Roby) (localizacion hangar) (sostiene nil))
f-2 (objeto (nombre cube) (localizacion almacen))
f-3 (objetivo Roby coger cubo)
f-4 (objetivo Roby ir-hacia almacen)
For a total of 5 facts.
EJEMPLO CONCRETO
"Pepe es una persona"
"Pepe vive en Toledo"
"Toda persona que viva en Toledo es española"
"Toda persona que viva en España es Europea"
persona(pepe)
toledano(pepe)
español(x) :- toledano(x)
europeo(x) :- español(x)
CLIPS> (reset)
CLIPS> (assert (persona pepe))
<f-1>
CLIPS> (assert (toledano pepe))
<f-1>
CLIPS> (defrule español
persona ?x)
(toledano ?x)
=>
(assert (español ?x))
(printout t ?x " es español." crlf) )
25
CLIPS> (defrule europeo
(persona ?x)
(español ?x)
=>
(europeo ?x)
(printout t ?x " es europeo." crlf) )
CLIPS> (run)
26
Ventajas
• Modularidad: Los lenguajes basados en reglas son muy modulares.
• Cada regla es una unidad del conocimiento que puede ser añadida, modificada o
eliminada independientemente del resto de las reglas.
• Expresibilidad.
Desventajas
• Ineficiencia: La ejecución del proceso de reconocimiento de patrones es muy ineficiente.
• Opacidad: Es difícil examinar una base de conocimiento y determinar que acciones van a
ocurrir.
• La división del conocimiento en reglas hace que cada regla individual sea fácilmente
tratable, pero se pierde la visión global.
27
BIBLIOGRAFÍA
Descripción
What´s CLIPS, http://www.ghg.net/clips/WhatIsCLIPS.html, 8-feb-05
Historia de CLIPS
Historia del CLIPS, http://gigiman.epublish.cl/articles/epublish_20021211145455.html
CLIPS History, http://202.41.85.117/courses/AAI/CD-1/CLIPS/History.html
Ejemplos de Aplicaciones
http://tryke.elcurriculum.com/2004/12/00015.html
http://www.ghg.net/clips/OtherWeb.html
http://tryke.blogcindario.com/ficheros/html/clips.html#indice1
http://eng.iiu.edu.my/seminar/archive/Air%20pollution%20forecasting.ppt
28