QU ES CLIPS?
CLIPS (C Language Integrated Production System) es una herramienta para el desarrollo de sistemas expertos (SE). Se dise para facilitar el desarrollo de software que modele el conocimiento humano.
Reglas, que se formulan a partir del conocimiento heurstico basado en la experiencia. Deffunction, o funciones generalizadas, que se formulan a partir de conocimiento procedural. Programacin orientada a objetos
Lnea de comandos
Los comandos pueden ser llamadas a funciones, construcciones, variables locales o globales o constantes.
Punto flotante:
152.21 27e-7 -57.2 -25e-8
Ejemplo :
CLIPS (Quicksilver Beta 3/26/08) CLIPS> (deftemplate Hombreacusado (slot nombre (type STRING) (default ?NONE)) (slot edad (type INTEGER) (range 17 100) (default ?NONE)) (slot condicion (type SYMBOL) (allowed-values inocente sospechoso condenado antecedentes) (default inocente))) CLIPS> (facts) f-0 (initial-fact) For a total of 1 fact. CLIPS> (assert (Hombreacusado (nombre "Mario")(edad 30)(condicion sospechoso))) <Fact-1> CLIPS> (assert (Hombreacusado (nombre "Daniel")(condicion condenado)(edad 19))) <Fact-2> CLIPS> (assert (Hombreacusado (nombre "Venito")(condicion antecedentes))) [TMPLTRHS1] Slot edad requires a value because of its (default ?NONE) attribute. CLIPS> (facts) f-0 (initial-fact) f-1 (Hombreacusado (nombre "Mario") (edad 30) (condicion sospechoso)) f-2 (Hombreacusado (nombre "Daniel") (edad 19) (condicion condenado)) For a total of 3 facts. CLIPS> (assert (Hombreacusado (nombre "Venito")(condicion antecedentes)(edad 17))) <Fact-3> CLIPS> (facts) f-0 (initial-fact) f-1 (Hombreacusado (nombre "Mario") (edad 30) (condicion sospechoso)) f-2 (Hombreacusado (nombre "Daniel") (edad 19) (condicion condenado)) f-3 (Hombreacusado (nombre "Venito") (edad 17) (condicion antecedentes)) For a total of 4 facts. CLIPS>
El lenguaje proporciona las operaciones y funciones aritmticas bsicas: +, -, *, /, div, max, min, abs, float e integer.
Las expresiones numricas se representan en CLIPS en el estilo conocido como notacin prefija.
FUNCIONES
Parte de cdigo ejecutable identificado por un nombre especfico que puede devolver o no un valor til. Funciones definidas por el sistema: aquellas que estn implementadas en CLIPS. Ej.
FUNCIONES (Cont.)
Funciones definidas por el usuario:
Funciones externas: escritas en un leguaje externo (Ej. C, FORTRAN). Funciones definidas directamente en CLIPS utilizando la sintaxis de CLIPS (deffunctions). Funciones genricas: se pueden definir utilizando los constructores defgeneric y defmethod. Permite ejecutar diversas partes del cdigo dependiendo de los parmetros que se pasan.
Constructor deffunction
Sintaxis: (deffunction <nombre_funcion> (<parametros>) (<contenido>) ) Ej. Realice una funcin que devuelva el factorial de un nmero n.
CONSTRUCTORES
Son sentencias de CLIPS que permiten crear objetos. La llamada a un constructor se realiza siempre entre parntesis y suele empezar con la palabra def. Altera el entorno de CLIPS adicionndolas a la base del conocimientos. Los constructores no tienen un valor de retorno.
CONSTRUCTORES (Cont.)
Con la excepcin de defglobal los constructores permiten incorporar en su definicin un comentario directamente con comillas ( ). En las dems partes pueden intercalarse con el cdigo usando el punto y coma (;).
CONSTRUCTORES (Cont.)
Algunos constructores:
Defrule: define reglas. Deffacts: define hechos. Deftemplate: define plantillas. Defglobal: define variables globales. Deffunction: define funciones externas. Defclass: define clases.
CONSTRUCTORES (Cont.)
Ej.
ABSTRACCIN DE DATOS
Hay tres formatos principales para representacin de la informacin en CLIPS: Hechos
Hechos ordenados Hechos no ordenados Hechos iniciales
la
Hechos:
Representan un fragmento de informacin que se ha colocado en la llamada lista de hechos (fact-list) Un identificador de hecho es una notacin abreviada para la visualizacin de un hecho que sigue la siguiente forma: f-<ndice de hecho>
Ej. f-10, se refiere al hecho con "ndice de hecho" 10.
Hechos:
Comandos de manejo de hechos: Aadir un hecho: (assert <hecho>). Eliminar un hecho: (retract <ref. a hecho>). Modificar campos: (modify < ref. a hecho >). Copiar:(duplicate <ref. hecho> <nuevo slot> ...)
Hechos ordenados
Los hechos ordenados consisten en un smbolo seguido de una secuencia de cero o ms campos separados por espacios y delimitados por parntesis. El primer campo de un hecho de orden especifica una "relacin" que se aplica a los campos que quedan en "el hecho de pedido". Ej. (padre de Jack Bill) afirma que Bill es el padre de Jack.
Ej.(deftemplate X9354A))
client
(nombre
Joe)(ide
Ejemplo:
Ej.:
Hechos iniciales
El constructor deacts permite establecer un conocimiento inicial o a priori , mediante la especicacin de una lista de hechos. Cuando el entorno CLIPS se restablece (mediante el comando reset) cada hecho especificado en los constructores deffacts se aade a la lista de hechos (fact-list).
Ejemplo:
OBJETOS
Un objeto se define como un smbolo, cadena, nmero, valor multicampo, una direccin externa o una instancia de una clase definida por el usuario. Se describe en dos partes bsicas:
Propiedades Comportamiento.
Una clase es una plantilla que agrupa a un conjunto de objetos con propiedades y comportamiento comunes.
Defclass: permite crear clases, especifica las ranuras (atributos) de una nueva clase de objetos. Defmessage-handler crea los elementos procedimentales (mtodos) de una clase de objetos.
Ejemplo:
Tipos Primitivos
Se referencian dando su valor. Se crean y suprimen implcitamente en CLIPS. No tienen nombre o ranuras (slots). Sus clases estn predefinidas por CLIPS. Ejemplo: smbolo, cadena, nmero, etc.
HERENCIA Las propiedades y comportamientos de los objetos puede heredarse, es decir, a una clase se le puede asignar directamente ranuras y manipuladores de mensajes de otras clases.
OBJETOS INICIALES
Definstances: permite construir un conjunto de objetos con conocimientos inicial o a priori, que son una coleccin de instancias definidas por el usuario.
VARIABLES GLOBALES
Defglobal: permite crear variables globales cuyo valor es independiente de los constructores y puede accederse desde cualquier ambiente de CLIPS. Sintaxis: (defglobal ?*<nombre_variable>* =<valor>)
Ejemplo:
Si hay ms de una regla que aplicarse, el motor de inferencia utiliza una estrategia de solucin de conflicto que selecciona la regla que debe aplicarse primero.
Ejemplo:
Todo libro que est disponible se puede prestar. Si BD es un libro. Si BD est disponible. => BD se puede prestar.
2. Conocimiento Procedimental
Las funciones genricas y el constructor deffunctions permite al usuario definir componentes ejecutables que o bien desarrollan un conjunto de actividades tiles o retornan un valor. defmodules permite una base de conocimiento para dividirse.
Deffunction
Permite definir una nueva funcin en CLIPS. El valor que devuelve es el ltimo valor de la ultima expresin evaluada en deffunction. Sintaxis:
(deffunction <nombre_funcin>
(<?parametro>*[<$ ?parametro-wilcard>]) <accion>*)
Ejemplos:
Funcin suma CLIPS> (deffunction suma(?a ?b) (bind ?suma (+ ?a ?b)) (printout t Suma = ?suma crlf) (+ ?a ?b) ) CLIPS> (suma 3 4) Suma = 7
Funcin hipotenusa: (deffunction Hipotenusa (?m ?n) (printout t El resultado es: crlf) (sqrt (+ (* ?m ?m) (* ?n ?n))) )
Funciones genricas
Permite definir un nuevo cdigo procedural directamente en CLIPS. Son mucho mas potentes ya que se pueden sobrecargar. Por ejemplo:
Es posible sobrecargar al operador + para hacer una concatenacin de cadenas, sin embargo el operador + seguir realizando suma aritmtica.
Defmodules
Permite que el conocimiento se divida en mdulos, cada constructor definido debe ser colocado en un mdulo.