SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
CLIPS
Parte 4
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.
CLIPS
Lenguaje Integrado de Sistemas de
produccion C.
Herramienta para el desarrollo deHerramienta 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 reglasSe 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 programacionElementos basicos de programacion
Abstraccion de datos
Estructura
Todos los elementos de MT son:
Hechos
Instancias de una clase de objetosInstancias 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 informacionPara 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 que
devuelve un valor o tiene efecto lateral
util.
TiposTipos
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
HechosHechos
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 cumplir
Una parte derecha (RHS) que define lasUna 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 tipos
de condiciones:
Patrones constantes, con variables o con wildcards: se instancian
directamente 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 reglas
y se establecen a través de restricciones sobre variables o valores
constantes.
Estas restricciones se pueden combinar mediante conectivas
ló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) podemos
poner cualquier sentencia válida en CLIPS
Podemos obtener la dirección de un hecho para
usarlo en la RHS mediante el operador <-, por
32
usarlo en la RHS mediante el operador <-, por
ejemplo:
(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 otroPara 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 nuevas
funciones 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 es
una función que recibe unos parámetros
y retorna un resultado (paradigma
funcional).
35
GRACIAS

Mais conteúdo relacionado

Mais procurados (20)

Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Semana 4 Javascript funciones y Metodos
Semana 4   Javascript funciones y MetodosSemana 4   Javascript funciones y Metodos
Semana 4 Javascript funciones y Metodos
 
Estructuras de control en PHP
Estructuras de control en PHPEstructuras de control en PHP
Estructuras de control en PHP
 
Funciones
FuncionesFunciones
Funciones
 
Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
 
Tipos De Datos Abstractos Colas
Tipos De Datos Abstractos ColasTipos De Datos Abstractos Colas
Tipos De Datos Abstractos Colas
 
Triggers ii
Triggers iiTriggers ii
Triggers ii
 
Base de datos relacional
Base de datos relacionalBase de datos relacional
Base de datos relacional
 
Actividad 9
Actividad 9Actividad 9
Actividad 9
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
PILAS
PILASPILAS
PILAS
 
Pseudocódigo
PseudocódigoPseudocódigo
Pseudocódigo
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion Uno
 
Jflambert lyada -ayudantia 1 prolog
Jflambert   lyada -ayudantia 1 prologJflambert   lyada -ayudantia 1 prolog
Jflambert lyada -ayudantia 1 prolog
 
Estructuras de Control
Estructuras de ControlEstructuras de Control
Estructuras de Control
 
Fpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.com
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
COMANDOS ddl
COMANDOS ddlCOMANDOS ddl
COMANDOS ddl
 
Repaso c
Repaso cRepaso c
Repaso c
 

Destaque

1. introduccion 1x
1. introduccion 1x1. introduccion 1x
1. introduccion 1xnorma8avila
 
3. introduccion parte3x
3. introduccion parte3x3. introduccion parte3x
3. introduccion parte3xnorma8avila
 
2. introduccion 2x
2. introduccion 2x2. introduccion 2x
2. introduccion 2xnorma8avila
 
1. sistemas computacionales parte1
1. sistemas computacionales parte11. sistemas computacionales parte1
1. sistemas computacionales parte1norma8avila
 
Ing. sist. basados conocimient ox
Ing. sist. basados conocimient oxIng. sist. basados conocimient ox
Ing. sist. basados conocimient oxnorma8avila
 
3. introduccion 3x
3. introduccion 3x3. introduccion 3x
3. introduccion 3xnorma8avila
 
Ing. sist. basados conocimient ox
Ing. sist. basados conocimient oxIng. sist. basados conocimient ox
Ing. sist. basados conocimient oxnorma8avila
 
6. repres e infer parte3
6. repres e infer parte36. repres e infer parte3
6. repres e infer parte3norma8avila
 
1. sistemas computacionales parte1
1. sistemas computacionales parte11. sistemas computacionales parte1
1. sistemas computacionales parte1norma8avila
 
Conoc reglas-juego
Conoc reglas-juegoConoc reglas-juego
Conoc reglas-juegonorma8avila
 
5. repres e infer parte2
5. repres e infer parte25. repres e infer parte2
5. repres e infer parte2norma8avila
 
4. introducciónx
4. introducciónx4. introducciónx
4. introducciónxnorma8avila
 
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTESPANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTESESCOM
 
1. sistemas computacionales parte3
1. sistemas computacionales parte31. sistemas computacionales parte3
1. sistemas computacionales parte3norma8avila
 
Algoritmos Genéticos
Algoritmos GenéticosAlgoritmos Genéticos
Algoritmos GenéticosESCOM
 
7. repres e infer parte4
7. repres e infer parte47. repres e infer parte4
7. repres e infer parte4norma8avila
 
4. repres e infer parte1
4. repres e infer parte14. repres e infer parte1
4. repres e infer parte1norma8avila
 

Destaque (20)

1. introduccion 1x
1. introduccion 1x1. introduccion 1x
1. introduccion 1x
 
3. introduccion parte3x
3. introduccion parte3x3. introduccion parte3x
3. introduccion parte3x
 
2. introduccion 2x
2. introduccion 2x2. introduccion 2x
2. introduccion 2x
 
1. sistemas computacionales parte1
1. sistemas computacionales parte11. sistemas computacionales parte1
1. sistemas computacionales parte1
 
Ing. sist. basados conocimient ox
Ing. sist. basados conocimient oxIng. sist. basados conocimient ox
Ing. sist. basados conocimient ox
 
3. introduccion 3x
3. introduccion 3x3. introduccion 3x
3. introduccion 3x
 
Ing. sist. basados conocimient ox
Ing. sist. basados conocimient oxIng. sist. basados conocimient ox
Ing. sist. basados conocimient ox
 
6. repres e infer parte3
6. repres e infer parte36. repres e infer parte3
6. repres e infer parte3
 
1. sistemas computacionales parte1
1. sistemas computacionales parte11. sistemas computacionales parte1
1. sistemas computacionales parte1
 
Conoc reglas-juego
Conoc reglas-juegoConoc reglas-juego
Conoc reglas-juego
 
5. repres e infer parte2
5. repres e infer parte25. repres e infer parte2
5. repres e infer parte2
 
4. introducciónx
4. introducciónx4. introducciónx
4. introducciónx
 
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTESPANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
 
1. sistemas computacionales parte3
1. sistemas computacionales parte31. sistemas computacionales parte3
1. sistemas computacionales parte3
 
Algoritmos Genéticos
Algoritmos GenéticosAlgoritmos Genéticos
Algoritmos Genéticos
 
7. repres e infer parte4
7. repres e infer parte47. repres e infer parte4
7. repres e infer parte4
 
4. repres e infer parte1
4. repres e infer parte14. repres e infer parte1
4. repres e infer parte1
 
4. aprendizaje
4. aprendizaje4. aprendizaje
4. aprendizaje
 
Patio 77
Patio 77Patio 77
Patio 77
 
4. aprendizaje
4. aprendizaje4. aprendizaje
4. aprendizaje
 

Semelhante a Introducción a CLIPS: Lenguaje, Hechos, Reglas y Módulos

GUÍA RÁPIDA LENGUAJE C/AL
GUÍA RÁPIDA LENGUAJE C/ALGUÍA RÁPIDA LENGUAJE C/AL
GUÍA RÁPIDA LENGUAJE C/ALmakac0 makac0
 
Sistemas de producción: Introducción a CLIPS
Sistemas de producción: Introducción a CLIPSSistemas de producción: Introducción a CLIPS
Sistemas de producción: Introducción a CLIPSfmartin6
 
Sesion1 Php Basico
Sesion1 Php BasicoSesion1 Php Basico
Sesion1 Php BasicoHugo Flores
 
Algoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.pptAlgoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.pptDjJoss
 
Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navisionpabloesp
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacionkarenyulithza
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programaciónMilton Escobar
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpAna Ruth G H
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02kevinwm17
 
Presentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BPresentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BJoselyn Serrano
 
Ii corte algoritmo_tr_1era_clase
Ii corte algoritmo_tr_1era_claseIi corte algoritmo_tr_1era_clase
Ii corte algoritmo_tr_1era_clasetammyrodriguez2010
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++Ryoga Luis
 

Semelhante a Introducción a CLIPS: Lenguaje, Hechos, Reglas y Módulos (20)

Taller completo
Taller completoTaller completo
Taller completo
 
GUÍA RÁPIDA LENGUAJE C/AL
GUÍA RÁPIDA LENGUAJE C/ALGUÍA RÁPIDA LENGUAJE C/AL
GUÍA RÁPIDA LENGUAJE C/AL
 
Sistemas de producción: Introducción a CLIPS
Sistemas de producción: Introducción a CLIPSSistemas de producción: Introducción a CLIPS
Sistemas de producción: Introducción a CLIPS
 
Sesion1 Php Basico
Sesion1 Php BasicoSesion1 Php Basico
Sesion1 Php Basico
 
Algoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.pptAlgoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.ppt
 
Clase 13, 9/10/2007
Clase 13, 9/10/2007Clase 13, 9/10/2007
Clase 13, 9/10/2007
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
 
Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navision
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacion
 
Programación de código
Programación de códigoProgramación de código
Programación de código
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programación
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# Sharp
 
Ambiente
 Ambiente Ambiente
Ambiente
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambiente de programacin en pascal
Ambiente de programacin en pascalAmbiente de programacin en pascal
Ambiente de programacin en pascal
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
 
Presentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BPresentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA B
 
Ii corte algoritmo_tr_1era_clase
Ii corte algoritmo_tr_1era_claseIi corte algoritmo_tr_1era_clase
Ii corte algoritmo_tr_1era_clase
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++
 

Mais de norma8avila

Clip ejemplos animales
Clip ejemplos animalesClip ejemplos animales
Clip ejemplos animalesnorma8avila
 
7. repres e infer parte4
7. repres e infer parte47. repres e infer parte4
7. repres e infer parte4norma8avila
 
Ejemplos distribuciones
Ejemplos distribucionesEjemplos distribuciones
Ejemplos distribucionesnorma8avila
 
7. introducción parte 6
7. introducción parte 67. introducción parte 6
7. introducción parte 6norma8avila
 
6. introducción parte 5
6. introducción parte 56. introducción parte 5
6. introducción parte 5norma8avila
 
5. introduccion parte 4
5. introduccion parte 45. introduccion parte 4
5. introduccion parte 4norma8avila
 
Actividad 1 contabilidad
Actividad 1 contabilidadActividad 1 contabilidad
Actividad 1 contabilidadnorma8avila
 
2. tipos de cuentas
2. tipos de cuentas2. tipos de cuentas
2. tipos de cuentasnorma8avila
 
1. principios contables
1. principios contables1. principios contables
1. principios contablesnorma8avila
 
1. representación el conocimiento
1. representación el conocimiento1. representación el conocimiento
1. representación el conocimientonorma8avila
 
Lectura1 historia de la admon
Lectura1 historia de la admonLectura1 historia de la admon
Lectura1 historia de la admonnorma8avila
 
1. introduccion 1x
1. introduccion 1x1. introduccion 1x
1. introduccion 1xnorma8avila
 
Practica 1 intro
Practica 1 introPractica 1 intro
Practica 1 intronorma8avila
 

Mais de norma8avila (20)

Clip ejemplos animales
Clip ejemplos animalesClip ejemplos animales
Clip ejemplos animales
 
8. diagramas
8. diagramas8. diagramas
8. diagramas
 
8. diagramas
8. diagramas8. diagramas
8. diagramas
 
Ejemplo
Ejemplo Ejemplo
Ejemplo
 
Clips parte2x
Clips parte2xClips parte2x
Clips parte2x
 
8. diagramas
8. diagramas8. diagramas
8. diagramas
 
Clips parte1
Clips parte1Clips parte1
Clips parte1
 
Practica2 solax
Practica2 solaxPractica2 solax
Practica2 solax
 
7. repres e infer parte4
7. repres e infer parte47. repres e infer parte4
7. repres e infer parte4
 
Ejemplos distribuciones
Ejemplos distribucionesEjemplos distribuciones
Ejemplos distribuciones
 
7. introducción parte 6
7. introducción parte 67. introducción parte 6
7. introducción parte 6
 
6. introducción parte 5
6. introducción parte 56. introducción parte 5
6. introducción parte 5
 
5. introduccion parte 4
5. introduccion parte 45. introduccion parte 4
5. introduccion parte 4
 
Actividad 1 contabilidad
Actividad 1 contabilidadActividad 1 contabilidad
Actividad 1 contabilidad
 
2. tipos de cuentas
2. tipos de cuentas2. tipos de cuentas
2. tipos de cuentas
 
1. principios contables
1. principios contables1. principios contables
1. principios contables
 
1. representación el conocimiento
1. representación el conocimiento1. representación el conocimiento
1. representación el conocimiento
 
Lectura1 historia de la admon
Lectura1 historia de la admonLectura1 historia de la admon
Lectura1 historia de la admon
 
1. introduccion 1x
1. introduccion 1x1. introduccion 1x
1. introduccion 1x
 
Practica 1 intro
Practica 1 introPractica 1 intro
Practica 1 intro
 

Introducción a CLIPS: Lenguaje, Hechos, Reglas y Módulos

  • 2. 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.
  • 3. CLIPS Lenguaje Integrado de Sistemas de produccion C. Herramienta para el desarrollo deHerramienta para el desarrollo de Sistemas expertos Entorno completo para construir SE basados en reglas y/o objetos Sensible a mayusculas y minusculas
  • 4. Representación del conocimiento Ofrece dos paradigmas Conocimiento heuristico: Se usa reglasSe usa reglas Conocimiento procedural Funciones y objetos
  • 5. 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).
  • 6. PROGRAMACION BASICA MEMORIA DE TRABAJO Estructura Elementos basicos de programacionElementos basicos de programacion Abstraccion de datos
  • 7. Estructura Todos los elementos de MT son: Hechos Instancias de una clase de objetosInstancias de una clase de objetos Hecho Unidad de datos fundamental Forma basica para representar informacion
  • 8. Elementos basicos de programacion Tres elementos Tipos primitivos Para representar informacionPara representar informacion Funciones Para manipular datos Constructores Para añadir conocimiento a la BC
  • 9. Tipos primitivos Son valores de unico campo Informacion simbolica: SYMBOL, STRINGSTRING Informacion numerica: INTEGER,FLOAT Direcciones: EXTERNAL-ADDRESS, FACT-ADDRESS, INSTANCE- ADDRESS.
  • 10. Funciones Fragmento de codigo ejecutable que devuelve un valor o tiene efecto lateral util. TiposTipos Funciones predefinidas Funciones definidas por el usuario Usan notacion prefija (+ 4 (* 3 4) 2)
  • 11. Constructores Son estructuras sintacticas que se usan para definir elementos como funciones, reglas, hechos, clases, etc.funciones, reglas, hechos, clases, etc.
  • 12. Comentarios La mayoria sino todos los constructores permiten incorporar un comentario entre comilas(“).comentario entre comilas(“). En otras partes se usa ;
  • 13. Abstraccion de datos …. Tres formas de representar informacion en CLIPS HechosHechos Objetos Variables globales
  • 14. 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)) )
  • 15. 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)
  • 16. Hechos Ordenados (puerta abierta) (interruptor encendido) (datos 5)(datos 5) (valor 3)
  • 17. Hechos no ordenados (refrigerador (nom ref1) (tipo electrodomestico) (marca lg) (precio 5))5)) (refrigerador (nom ref2) (tipo electrodomestico) (precio 7) (marca phi))
  • 18. 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)))
  • 19. Definir Plantillas (deftemplate refrigerador (slot nom) (slot tipo)(slot tipo) (slot marca) (slot precio) (slot energia) )
  • 20. 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
  • 21. 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)))
  • 22. 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.
  • 23. Reglas Las reglas en CLIPS están formadas por: Una parte izquierda (LHS) que define las condiciones a cumplir Una parte derecha (RHS) que define lasUna 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) ...)
  • 24. Reglas (defrule regla-ejemplo "Ejemplo de una regla" (interruptor encendido)(interruptor encendido) (puerta abierta) => (assert (comida estropeada)) )
  • 25. Mas reglas-Variables (defrule regla-ejemplo-1 "Ejemplo de una regla" (refrigerador (nom ?x))(refrigerador (nom ?x)) (puerta abierta) => (printout t ?x ) )
  • 26. 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*)
  • 27. 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
  • 28. Mas reglas-Evaluaciones (defrule eje-test (datos ?x) (valor ?y)(valor ?y) (test (>= (abs (- ?y ?x)) 1)) => (printout t "siempre") )
  • 29. 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 ) )
  • 30. Reglas de CLIPS: LHS En la parte izquierda de una regla pueden aparecer diferentes tipos de condiciones: Patrones constantes, con variables o con wildcards: se instancian directamente 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 reglas y se establecen a través de restricciones sobre variables o valores constantes. Estas restricciones se pueden combinar mediante conectivas lógicas: ~ (no) & (y) | (o) 30
  • 31. 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
  • 32. El lenguaje de reglas de CLIPS En la parte derecha de las reglas (RHS) podemos poner cualquier sentencia válida en CLIPS Podemos obtener la dirección de un hecho para usarlo en la RHS mediante el operador <-, por 32 usarlo en la RHS mediante el operador <-, por ejemplo: (defrule mi-regla ?x <- (persona (nombre juan)) => (retract ?x) ) 32
  • 33. 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
  • 34. Reglas de CLIPS módulos Nada de lo definido en un módulo es visible salvo que lo exportemos. Para utilizar construcciones de otroPara 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.
  • 35. El lenguaje de programación CLIPS incluye un lenguaje de programación que permite definir nuevas funciones 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 es una función que recibe unos parámetros y retorna un resultado (paradigma funcional). 35