PDF de programación - Sistemas Inteligentes de Gestión - Tutorial de CLIPS

Imágen de pdf Sistemas Inteligentes de Gestión - Tutorial de CLIPS

Sistemas Inteligentes de Gestión - Tutorial de CLIPSgráfica de visualizaciones

Publicado el 16 de Abril del 2017
720 visualizaciones desde el 16 de Abril del 2017
1,3 MB
70 paginas
Creado hace 13a (16/04/2011)
Sistemas Inteligentes de Gestión



Tutorial de CLIPS



© Juan Carlos Cubero & Fernando Berzal



Sistemas Inteligentes de Gestión: CLIPS 1







Índice

CLIPS ............................................................................................................................... 3
Referencias ................................................................................................................... 3
Hechos y reglas ................................................................................................................. 4
Vectores ordenados de características .......................................................................... 5
Registros ....................................................................................................................... 5
Uso de la memoria de trabajo ....................................................................................... 7
Reglas ......................................................................................................................... 10
El ciclo de control de CLIPS ...................................................................................... 11
Emparejamiento en vectores ordenados de características ......................................... 13
Reglas con varios patrones ......................................................................................... 16
Emparejamiento en registros ...................................................................................... 17
Refracción ................................................................................................................... 21
Direcciones de hechos ................................................................................................ 22
Restricciones sobre campos ........................................................................................ 24
Estrategias de resolución de conflictos ........................................................................... 26
Estrategia “primero en profundidad” (LIFO) ............................................................. 27
Estrategia “primero en anchura” (FIFO) .................................................................... 27
Por complejidad .......................................................................................................... 28
Por antigüedad ............................................................................................................ 28
LEX ............................................................................................................................ 29
Especificación de prioridades ..................................................................................... 29
Funciones aritméticas y lógicas ...................................................................................... 30
Funciones aritméticas ................................................................................................. 30
Funciones lógicas ....................................................................................................... 31
Emparejamiento y restricciones avanzadas .................................................................... 34
Restricciones sobre campos ........................................................................................ 34
Elementos condicionales ............................................................................................ 35
Uso de hechos de control ................................................................................................ 40
TMS ................................................................................................................................ 46
Modularización ............................................................................................................... 56
Ficheros .......................................................................................................................... 67
Apéndice: Atributos de los campos ................................................................................ 68


Sistemas Inteligentes de Gestión: CLIPS 2





CLIPS

CLIPS es un shell para el desarrollo de sistemas expertos que utiliza una estrategis de
control irrevocable con encadenamiento hacia adelante.

Desarrollado originalmente en la NASA a mediados de los 80, puede integrarse con
C/C++ (en ambas direcciones). De hecho, su nombre es un acrónimo derivado de “C
Language Integrated Production System”

La sintaxis (y el nombre) de CLIPS están inspirados en OPS (“Official Production
System”), un shell para el desarrollo de sistemas expertos creado en 1977 por Charles
Forgy durante su doctorado con Allen Newell en la Carnegie-Mellon University.

La primera implementación de OPS se realizó en LISP, de ahí la sintaxis de CLIPS que
puede resultar algo extraña para el que sólo haya utilizado lenguajes imperativos tipo C,
C++ o Java. No en vano, hay quien interpreta el nombre de LISP [LISt Processing]
como “Lots of Insipid Silly Parentheses”]


NOTA: Posteriormente, OPS se reprogramó, por cuestiones de eficiencia, en
BLISS ["Basic Language for Implementation of System Software" o "System
Software Implementation Language, Backwards"], un lenguaje de programación
de sistemas diseñado en CMU que pasó a un segundo plano debido al auge del
lenguaje de programación C.

http://en.wikipedia.org/wiki/BLISS_programming_language



Referencias


- Sitio web oficial de CLIPS:


http://clipsrules.sourceforge.net/

Jess [Java Expert System Shell], descendiente de CLIPS para Java:

http://www.jessrules.com/

-



- Libro de texto:



Joseph C. Giarratano & Gary D. Riley:
Expert Systems:
Principles and Programming
Thomson, 4th edition, 2005.
ISBN 0534384471


- Más información:


http://es.wikipedia.org/wiki/CLIPS



Sistemas Inteligentes de Gestión: CLIPS 3





Hechos y reglas



El entorno de trabajo de CLIPS nos muestra:


- La Memoria de trabajo (ventana Facts).



- El “conjunto conflicto” (ventana Agenda).


Además, nos permite inspeccionar otros elementos (por ejemplo, instancias de objetos).



A la hora de representar datos, CLIPS nos permite utilizar:


1. Vectores ordenados de características.



2. Registros.

3. Instancias de clases (objetos).



A continuación veremos cómo se usan los dos primeros:



Sistemas Inteligentes de Gestión: CLIPS 4





Vectores ordenados de características

(Pedro 45 V NO) sería un ejemplo de vector ordenado.

Cada valor corresponde, según un orden definido por el programador, a un atributo.

Desde la línea de comandos de CLIPS, puede “asertarse” un hecho mediante (assert):

CLIPS> (assert (Pedro 45 V NO))

Obviamente, este hecho será distinto al hecho (Pedro 45 NO V), dado que el orden es
fundamental en la definición de hechos de esta forma.

Una buena práctica consiste en anteponer un nombre de relación al vector ordenado de
características, como por ejemplo: (Persona Pedro 45 NO V)



Registros

Para evitar errores asociados a la utilización de vectores ordenados de características,
normalmente resulta más recomendable definir registros (templates).

Primero, definiremos el tipo de dato registro con (deftemplate). A continuación,
utilizaremos (assert) para establecer uno o varios hechos del tipo definido.

CLIPS> (deftemplate Persona

(field Nombre)
(field Edad)
(field Sexo)
(field EstadoCivil) )



CLIPS> (assert (Persona

(Nombre Juan)
(Edad 30)
(EstadoCivil casado)
(Sexo V)))


- Cada vez que se añade un hecho (vector o registro), CLIPS devuelve un
identificador de hecho, empezando desde 0 (a no ser que se haya asertado
automáticamente con (reset) el hecho inicial, en cuyo caso, éste es el que tiene
índice 0).


- CLIPS es sensible a mayúsculas y minúsculas, por lo que persona sería distinto

a Persona.


- Si no se especifica un campo de un registro, CLIPS le asigna automáticamente

un valor nulo (nil en CLIPS).


- No pueden definirse estructuras anidadas, con un template dentro de otro. Para

hacer esto tendríamos que utilizar clases.

Sistemas Inteligentes de Gestión: CLIPS 5





NOTA: Aunque actualmente se haga referencia a los campos de los registros con el
término field, antes de la versión 6 de CLIPS, se utilizaba el término slot
(tradicionalmente usado en I.A. para modelos de representación del conocimiento
basados en marcos).



multifield

Dentro de un template, si queremos que un campo sea un vector ordenado de
características, usamos el identificador multifield, en vez de field:


(deftemplate Persona
(field Nombre)
(field Edad)

)

(assert (Persona

(Nombre Juan Carlos Cubero)
(Edad 39))

)

Error: “The single field slot Nombre can only contain a single field”



(deftemplate Persona

(multifield Nombre)
(field Edad)



)

(assert (Persona

(Nombre Juan Carlos Cubero)
(Edad 33))

)

Correcto!!



Tanto con field como con multifield, podríamos haber utilizado comillas dobles:

(assert (Persona

(Nombre “Juan Carlos Cubero”)
(Edad 33))

)



Sistemas Inteligentes de Gestión: CLIPS 6





Uso de la memoria de trabajo

(deffacts)

Para no tener que estar asertando hechos desde línea de comandos de CLIPS, podemos
utilizar el comando (deffacts) para asertarlos desde un fichero (con extensión .clp
por convención).



personas.clp

; Datos de personas

(deftemplate Persona
(field Nombre)
(field Edad)
(field Sexo)
(field EstadoCivil)



)

(deffacts VariosHechos

(Persona

(Nombre JuanCarlos)
(Edad 33))

(Persona

(Nombre Mar
  • Links de descarga
http://lwp-l.com/pdf3050

Comentarios de: Sistemas Inteligentes de Gestión - Tutorial de CLIPS (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad