Clips parte4 resumen

Preview:

Citation preview

CLIPS

Parte 4RESUMEN

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.

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

Representación del conocimiento

� Ofrece dos paradigmas� Conocimiento heuristico:

� Se usa reglas� Se usa reglas

� Conocimiento procedural� Funciones y objetos

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).

PROGRAMACION BASICA

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

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

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

Tipos primitivos

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

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

FACT-ADDRESS, INSTANCE-ADDRESS.

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)

Constructores

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

Comentarios

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

� En otras partes se usa ;

Abstraccion de datos ….

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

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))

)

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)

Hechos Ordenados

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

Hechos no ordenados

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

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

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)))

Definir Plantillas

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

)

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

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)))

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.

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) ...)

Reglas

(defrule regla-ejemplo "Ejemplo de una regla"

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

)

Mas reglas-Variables

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

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

)

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*)

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

Mas reglas-Evaluaciones

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

)

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 )

)

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

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

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

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

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.

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

GRACIAS