36
CLIPS Parte 4 RESUMEN

Clips parte4 resumen

Embed Size (px)

Citation preview

Page 1: Clips parte4 resumen

CLIPS

Parte 4RESUMEN

Page 2: Clips parte4 resumen

El sistema CLIPS

� CLIPS es un entorno para desarrollar sistemas expertos.

� Define un lenguaje que permite la representación de: Define un lenguaje que permite la representación de: � conocimiento declarativo (marcos)� conocimiento procedimental (reglas de

producción)

� Su base es un motor de inferencias con razonamiento hacia adelante.

Page 3: Clips parte4 resumen

CLIPS

� Lenguaje Integrado de Sistemas de produccion C.

� Herramienta para el desarrollo de � Herramienta para el desarrollo de Sistemas expertos

� Entorno completo para construir SE basados en reglas y/o objetos

� Sensible a mayusculas y minusculas

Page 4: Clips parte4 resumen

Representación del conocimiento

� Ofrece dos paradigmas� Conocimiento heuristico:

� Se usa reglas� Se usa reglas

� Conocimiento procedural� Funciones y objetos

Page 5: Clips parte4 resumen

Estructura de un programa en CLIPS

� Provee los elementos basicos de un SE� Memoria Global de datos(MT): � Memoria Global de datos(MT):

conocimiento factual� Base de conocimientos: Reglas� Motor de Inferencia: Controla la

ejecucion de reglas

� Un programa consiste: reglas, hechos y objetos).

Page 6: Clips parte4 resumen

PROGRAMACION BASICA

� MEMORIA DE TRABAJO� Estructura� Elementos basicos de programacion� Elementos basicos de programacion� Abstraccion de datos

Page 7: Clips parte4 resumen

Estructura

� Todos los elementos de MT son:� Hechos� Instancias de una clase de objetos� Instancias de una clase de objetos

� Hecho� Unidad de datos fundamental� Forma basica para representar

informacion

Page 8: Clips parte4 resumen

Elementos basicos de programacion

� Tres elementos� Tipos primitivos

� Para representar informacion� Para representar informacion

� Funciones� Para manipular datos

� Constructores� Para añadir conocimiento a la BC

Page 9: Clips parte4 resumen

Tipos primitivos

� Son valores de unico campo� Informacion simbolica: SYMBOL,

STRINGSTRING� Informacion numerica: INTEGER,FLOAT� Direcciones: EXTERNAL-ADDRESS,

FACT-ADDRESS, INSTANCE-ADDRESS.

Page 10: Clips parte4 resumen

Funciones

� Fragmento de codigo ejecutable quedevuelve un valor o tiene efecto lateral util.Tipos� Tipos� Funciones predefinidas� Funciones definidas por el usuario

� Usan notacion prefija(+ 4 (* 3 4) 2)

Page 11: Clips parte4 resumen

Constructores

� Son estructuras sintacticas que se usan para definir elementos como funciones, reglas, hechos, clases, etc.funciones, reglas, hechos, clases, etc.

Page 12: Clips parte4 resumen

Comentarios

� La mayoria sino todos los constructores permiten incorporar un comentario entre comilas(“).comentario entre comilas(“).

� En otras partes se usa ;

Page 13: Clips parte4 resumen

Abstraccion de datos ….

� Tres formas de representar informacion en CLIPS� Hechos� Hechos� Objetos� Variables globales

Page 14: Clips parte4 resumen

Definición de Hechos iniciales

(deffacts iniciales "Todos los hechos "(puerta abierta)(interruptor encendido)(datos 5)(valor 3)(valor 3)(refrigerador (nom ref1) (tipo electrodomestico) (marca lg) (precio 5))(refrigerador (nom ref2) (tipo electrodomestico) (marca phi) (precio 7))(refrigerador (nom ref3) (tipo electrodomestico) (marca brastem) (precio 10))(refrigerador (nom ref4) (tipo electrodomestico) (marca lg) (precio 8))

)

Page 15: Clips parte4 resumen

Hechos

� Los dos elementos que permiten representar problemas utilizando reglas de producción son los hechos y las reglas.

� Los hechos en CLIPS pueden ser de dos tipos: – ordered facts– deftemplate facts– deftemplate facts

� Los ordered facts tienen formato libre, por lo tanto no tienen una estructura predefinida, siguen el esquema general:

(relación p1 p2 ... pn)

• relación ha de ser un símbolo; el resto de parámetros puede ser de cualquier tipo, por ejemplo:

(padre Juan Pedro)(num-hijos Juan 2)

Page 16: Clips parte4 resumen

Hechos Ordenados

(puerta abierta)(interruptor encendido)(datos 5)(datos 5)(valor 3)

Page 17: Clips parte4 resumen

Hechos no ordenados

� (refrigerador (nom ref1) (tipo electrodomestico) (marca lg) (precio 5))5))

� (refrigerador (nom ref2) (tipo electrodomestico) (precio 7) (marca phi))

Page 18: Clips parte4 resumen

Hechos

� La creación de hechos se realiza mediante la sentencia assert (uno solo) o deffacts (un conjunto), por ejemplo:

(assert (padre Pepe Juan))(assert (padre Pepe Juan))(assert (persona (nombre "pedro") (edad 25)))(deffacts mis-hechos

(casa roja) (pelota verde)(persona (nombre "luis”) (edad 33)))

Page 19: Clips parte4 resumen

Definir Plantillas

(deftemplate refrigerador(slot nom)(slot tipo)(slot tipo)(slot marca)(slot precio)(slot energia)

)

Page 20: Clips parte4 resumen

Hechos� Los deftemplate facts tienen una estructura

predefinida; pueden asimilarse a representaciones al estilo de las ontologías.

� En estos hechos se define una serie de campos (slots) que enmarcan su estructura. campos (slots) que enmarcan su estructura. Cada campo puede tener una serie de restricciones como:� tipo� cardinalidad� un valor por defecto que puede ser:

� una constante� un función para calcularlo

Page 21: Clips parte4 resumen

Hechos

� Sintaxis:(deftemplate nombre-template "comentario“

(slot nombre-slot1)(slot nombre-slot2))(slot nombre-slot2))

� Por ejemplo:(deftemplate persona “persona humana /

hombre”(slot nombre (type STRING))(slot edad (type INTEGER) (default 0)))

Page 22: Clips parte4 resumen

Hechos

� (facts) permite saber que hechos hay definidos.

� (clear) borra todos los hechos � (clear) borra todos los hechos definidos.

� (retract <índice-hecho>) elimina el hecho identificado por el índice dado.

� (get-deftemplate-list) retorna la lista de deftemplates definidos.

Page 23: Clips parte4 resumen

Reglas

� Las reglas en CLIPS están formadas por:� Una parte izquierda (LHS) que define las

condiciones a cumplirUna parte derecha (RHS) que define las � Una parte derecha (RHS) que define las acciones a realizar

� Sintaxis:(defrule nombre-regla "comentario"

(condición-1) (condición-2) ...=>(acción-1) (acción-2) ...)

Page 24: Clips parte4 resumen

Reglas

(defrule regla-ejemplo "Ejemplo de una regla"

(interruptor encendido)(interruptor encendido)(puerta abierta)=>(assert (comida estropeada))

)

Page 25: Clips parte4 resumen

Mas reglas-Variables

(defrule regla-ejemplo-1 "Ejemplo de una regla"

(refrigerador (nom ?x))(refrigerador (nom ?x))(puerta abierta)=>(printout t ?x )

)

Page 26: Clips parte4 resumen

Variables

� Para poder establecer patrones en las condiciones de las reglas hacen falta variables

� Las variables en CLIPS se denotan poniendo un interrogante delante del nombre (?variable)

� Existen variables anónimas (no importa su valor) para un valor ? o para múltiples valores $?

� Durante la ejecución de las reglas se buscan los valores que instancien las variables y permitan cumplir las condiciones

� Las variables de las reglas son locales, si queremos definir variables globales debemos usar la construcción defglobal (las variables globales se denotan ?*variable*)

Page 27: Clips parte4 resumen

Notación

� square brackets [...] � contents are optional:� (example [test])

� pointed brackets (less than / greater than signs) < ... >>

� replace contents by an instance of that type� (example <char>)

� star *� replace with zero or more instances of the type� <char>*

� plus +� replace with one or more instances of the type� <char>+ (is equivalent to <char> <char>* )

� vertical bar |� choice among a set of items:� true | false

Page 28: Clips parte4 resumen

Mas reglas-Evaluaciones

(defrule eje-test(datos ?x)(valor ?y)(valor ?y)(test (>= (abs (- ?y ?x)) 1))=>(printout t "siempre")

)

Page 29: Clips parte4 resumen

Mas reglas-Operadores lógicos

(defrule regla-ejemplo-2 "Ejemplo de una regla"

(refrigerador (nom ?x) (precio 5 | 10))(refrigerador (nom ?x) (precio 5 | 10))(puerta abierta)=>(printout t ?x )

)

Page 30: Clips parte4 resumen

Reglas de CLIPS: LHS

� En la parte izquierda de una regla pueden aparecer diferentes tiposde condiciones:

� Patrones constantes, con variables o con wildcards: se instanciandirectamente con hechos en la base de hechos.

� Expresiones not, and, or, exist y forall con patrones.

30

� Tests de expresiones sobre las variables vinculadas.

� Los patrones indican qué tipo de hechos deben instanciar las reglasy se establecen a través de restricciones sobre variables o valoresconstantes.

� Estas restricciones se pueden combinar mediante conectivaslógicas:

~ (no)& (y)| (o)

30

Page 31: Clips parte4 resumen

Ejemplos de LHS

� Personas de nombre juan o pedro: (persona (nombre juan|pedro))

� Personas con nombres diferentes:

31

� Personas con nombres diferentes: (persona (nombre ?x)) (persona (nombre ?y&~?x))

� Nadie se llama pedro: (not (persona (nombre pedro)))

� Todo el mundo es mayor de edad:

(forall (persona (nombre ?n) (edad ?x)) (test (> ?x 18)))

31

Page 32: Clips parte4 resumen

El lenguaje de reglas de CLIPS

� En la parte derecha de las reglas (RHS) podemosponer cualquier sentencia válida en CLIPS

� Podemos obtener la dirección de un hecho parausarlo en la RHS mediante el operador <-, por

32

usarlo en la RHS mediante el operador <-, porejemplo:(defrule mi-regla

?x <- (persona (nombre juan))=>

(retract ?x))

32

Page 33: Clips parte4 resumen

Reglas de CLIPS: módulos

� Las reglas de CLIPS se pueden agrupan/organizar en módulos.

� La ventaja principal es el poder estructurar el conocimiento y poder enfocar la ejecución de las

33

conocimiento y poder enfocar la ejecución de las reglas según su objetivo.

� La definición de un módulo se realiza mediante la construcción: (defmodule <nombre> "comentario" <export-import>)

33

Page 34: Clips parte4 resumen

Reglas de CLIPS módulos

� Nada de lo definido en un módulo es visible salvo que lo exportemos.

� Para utilizar construcciones de otro � Para utilizar construcciones de otro módulo también tenemos que importarlas explícitamente.

� Existe un módulo por defecto llamado MAIN al que pertenece todo lo no definido en otro módulo.

Page 35: Clips parte4 resumen

El lenguaje de programación

� CLIPS incluye un lenguaje de programación que permite definir nuevasfunciones o programar las acciones a

35

funciones o programar las acciones a realizar en la parte derecha de las reglas.

� Toda sentencia o estructura de control esuna función que recibe unos parámetrosy retorna un resultado (paradigmafuncional).

35

Page 36: Clips parte4 resumen

GRACIAS