Introducción a CLIPS



Documentos relacionados
El lenguaje CLIPS. Javier Béjar Intel ligència Artificial 2016/2017. Facultat d Informàtica de Barcelona

Referencia. EXPERT SYSTEMS, Principles and Programming, Third Edition J. Giarrantano, G. Riley PWS Publishing Company, Boston 1998 ISBN

Inteligencia en Redes de Comunicaciones CLIPS. Julio Villena Román.

Contenido. Introducción Elementos básicos de programación Variables Restricciones

Inteligencia en Redes de Comunicaciones - 04b CLIPS

Tema 3: Representación de Hechos en CLIPS. Información sobre Conocimiento del Dominio

CLIPS v6.1 Resumen. Universidad Carlos III de Madrid Departamento de Informática docweb/

Artificial Intelligence: laboratory CLIPS

Práctica 1: Introducción a CLIPS

REPRESENTACIÓN DEL CONOCIMIENTO CLOS (CLIPS) Práctica 3

Control de la ejecución y diseño modular

Sistemas de producción: CLIPS

Manipulación de hechos en CLIPS.

Tema 10: Aplicaciones de SBC en CLIPS

Reglas. El constructor defrule y otros comandos relacionados

Ingeniería Técnica en Informática de Gestión

Contenido. Elementos básicos de un sistema de producción CLIPS Jess:

Ingeniería Técnica en Informática de Gestión

Representación del Conocimiento Otros formalismos. Licenciatura en Ciencias de la Computación. Introducción a la Inteligencia Artificial.

Tema 12: Aplicaciones de SBC: Decisión y metaintérpretes

Solución de un problema con CLIPS: Expert-Juego. Las 7 y media

Construcción de SSPP con CLIPS. Universidad Carlos III de Madrid Departamento de Informática

CLIPS. Confrontación de Patrones

Ingeniería Técnica en Informática de Gestión

Tema 8: Elementos condicionales y acciones procedimentales

Apellidos:... Nombre:...

TEMA I PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN N ORIENTADA A OBJETOS OBJETOS (I) OBJETOS (II)

Modulo 11. Clases y Objetos en Java

POO - Programación Orientada a Objetos

Construcción de SSPP con CLIPS. Universidad Carlos III de Madrid Departamento de Informática

Desarrollo de un juego de naipes en JESS

Programación Orientada a Objetos. Sesión 4: Herencia

Sistemas de Produccion en Clips

Introducción a la programación orientada a objetos

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Tema 6: Introducción a la programación basada en reglas

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

Licenciatura en Obras Públicas. Ingeniería del Conocimiento. Curso 08/09

Inteligencia Artificial. Sistemas Expertos y CLIPS

Lenguaje de programación Jess. Java Expert System Shell

Ingeniería Técnica en Informática de Sistemas Inteligencia Artificial Hoja 1: CLIPS I

CLIPS Definición de funciones

Ingeniería Técnica en Informática de Gestión

Solución SP-Cardio. Práctica V

Laboratorio de Casas Inteligentes Uso de Técnicas de Inteligencia Artificial para Operar una Casa Practica No. 8

Tema 7: Polimorfismo. Índice

05/03/2008. x: perro (x) Hechos. perro (capricho) mamífero (perro) mamifero(x) Un perro es un mamífero. Representaciones internas

MANUAL BÁSICO DEL LENGUAJE SQL

TUTORIAL DE CLIPS. VERSION 0.8 / 9 de marzo de 2000

Forma Básica Clase Java

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde:

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

UNIDAD 2: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACiÓN R

CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance

BORRADOR! "! # $ % &! ' ( ) * ) * #! +,,! - # # # # # + #,,! # # +,# #!.,( # # /! +, #

Resolución de Problemas en LBR

Inteligencia Artificial. Facultad de Ciencias Exactas y Tecnología Universidad Nacional de Tucumán Prof. Ing. Franco D. Menendez

Herencia. Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra.

APÉNDICE D. INTRODUCCIÓN A SQL

El curso esta orientado para toda persona que desee aprender todos las funciones de esta Base de Datos.

Sistemas Inteligentes de Gestión. Relación de ejercicios CLIPS. Sistemas expertos basados en reglas con encadenamiento hacia adelante

Tema: Clases y Objetos en C++. Parte II.

Oracle Database 11g: Conceptos Fundamentales de SQL y PL/SQL Nuevo

UNIDAD I. ALGORITMOS

SISTEMAS INTELIGENTES

Introducción a Protégé

Estructuras de control condicionales

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Introducción Instalación Elementos básicos. Hechos. Reglas Primeros ejemplos. Referencias/Documentación

POO: Clases y objetos

Tema 2. Funciones Lógicas. Algebra de Conmutación. Representación de circuitos digitales. Minimización de funciones lógicas.

Lenguajes basados en reglas

Representación del Conocimiento

Laboratorio Nº1: Programación de SE con la herramienta CLIPS

Ingeniería Técnica en Informática de Gestión

Características del lenguaje SQL

Expresión, Operador, Operando, Asignación, Prioridad

INDICE Capitulo 1. El Turbo C++ y el Lenguaje C Capitulo 2. Declaración e inicialización de variables Capitulo 3. Funciones de entrada y salida

1.2. Es Java un lenguaje ideal para aprender a programar? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar?

Inteligencia Artificial Inferencia en lógica

Las listas son una sucesión de cero o más elementos. Esta es una definición muy simple y que no aclara demasiado en términos informáticos.

Sistema CLIPS (Apuntes)

Sistemas Expertos. Caso de Estudio: Selección de un microcontrolador

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Redes Semánticas. Redes semánticas. Limitaciones de las redes semánticas. Notas

Inteligencia en Redes de Comunicaciones Jess

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

Sensor-IA: Sistema experto para el control en tiempo real de procesos de mecanizado

Operando1 operador de relación Operando2

Oracle Express y Toad for Oracle

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España.

Transact-SQL. Declaraciones del Data Control Language (DCL) que se utilizan para determinar quién ve o modifica los datos.

(X)HTML. World Wide Web es uno de los servicios que se pueden encontrar en Internet, pero no el único (correo electrónico, FTP, news...

MICROSOFT ACCESS 2013 (COMPLETO)

2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

Programación Java SE 7

Eficiencia en Sistemas de Reconocimiento de Patrones

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Lenguaje de programación Jess. Java Expert System Shell

Funciones & Estructuras de control

Transcripción:

Introducción a CLIPS Inteligencia Artificial 5 o Informática IA curso 2008-2009 CCIA Noviembre 2008 IA 0809 (CCIA) CLIPS Noviembre-2008 1 / 10

Introducción a CLIPS CLIPS: C Language Integrated Production Systema Entorno para el desarrollo de sistemas expertos Desarrollado en C con licencia libre Web: http://clipsrules.sourceforge.net/ Define lenguaje para definición de hechos(frames) y reglas Integra elementos del paradigma funcional y orientado a objetos Uso desde intérprete o integrado en programas C Derivados: JESS: implementación Java Web: http://www.jessrules.com/ FuzzyCLIPS: extensión con soporte para lógica difusa Web: http://www.iit.nrc.ca/ir_public/fuzzy/ IA 0809 (CCIA) CLIPS Noviembre-2008 2 / 10

Comandos Inicio: $ clips Finalización: (exit) (clear): elimina los hechos de la memoria activa (reset): inicia/reinicia el intérprete elimina hechos y reglas activadas restaura la situación inicial (hechos iniciales) (load "fich.clp"): carga un fichero (save "fich.clp"): guarda reglas y hechos de sesión actual (run) : inicia encadenamiento hacia adelante finaliza cuando no existan reglas que aplicar (run <n>): inicia encadenamiento hacia adelante finaliza cuando haya ejecuta n reglas (facts): muestra los hechos de la memoria activa (instances): muestra las instancias de la memoria activa (agenda): muestra las reglas activadas (en orden) (watch facts rules...): modo de depuración muestra lista de hechos reglas.. cada vez que se modifican IA 0809 (CCIA) CLIPS Noviembre-2008 3 / 10

Hechos Frames simplificadas (no hay niveles de indentación) Formadas por conjuntos { de slots (ranuras) un valor simple Pares atributo-valor lista de valores Tres opciones Frames anónimas (ordered facts) Formato libre: nombre + lista plana de valores Usados para representar relaciones/propiedades simples Ejemplo: (cerca Vigo Pontevedra) Frames con estructura (non-ordered facts) La lista de slots admitidos se declara con deftemplate (asignatura "descripción de IA" (nombre "inteligencia artificial") (curso 5) (creditos 9) (profesor "...")) Objetos (instances) Similares a frames con estructura Pertenecientes a una clase declarada con defclass IA 0809 (CCIA) CLIPS Noviembre-2008 4 / 10

Comandos manejo de hechos Añadir a memoria activa: (assert <hecho>) CLIPS > (assert (persona (nombre "juan pérez pérez") (edad 25) (padres "lucas" "ana"))) Eliminar de memoria activa: (retract <ref. a hecho>) CLIPS > (retract 1) [elimina el hecho n o 1] CLIPS > (retract?res) [elimina el hecho apuntado por variable?res] Modificar campos: (modify <ref. hecho> <nuevo slot>...) CLIPS > (modify 1 (nombre "juan luis pérez pérez")) Copiar: (duplicate <ref. hecho> <nuevo slot>...) CLIPS > (duplicate 1 (nombre "antonio pérez pérez") (edad 24)) IA 0809 (CCIA) CLIPS Noviembre-2008 5 / 10

Plantillas de hechos Definen la estructura de las frames no ordenadas (non-ordered facts) Asigna nombre al tipo de frame Listado de ranuras (slots) indicando sus características (facets) clase de slot: simple, multivaluado tipo de su contenido: STRING, SYMBOL, INTEGER,.. rango de valores valor por defecto, etc,... Nota: El orden de los slots en un hecho no es relevante Esquema (deftemplate <nombre frame> (slot <nombre>) (slot <nombre> (type <tipo>) (default <valor>)...) (multislot <nombre> (type <tipo>) (default <valor>)...)... ) Ejemplo (deftemplate persona (slot nombre (type STRING)) (slot edad (type INTEGER) (range 0 120)) (multislot padres (type STRING) (cardinality 0 2))) IA 0809 (CCIA) CLIPS Noviembre-2008 6 / 10

Hechos iniciales Por defecto, al inicio de la ejecución o después del comando (clear), siempre existirá el hecho inicial (initial-fact) Cada vez que se ejecuta el comando (reset)) se incluyen en la memoria activa los hechos definidos con el constructor deffacts y las instancias (objetos) definidas con definstances (deffacts <nombre-deffacts> <hecho 1>... <hecho n> ) Ejemplo: (deffacts personas-iniciales (persona (nombre "juan") (edad 26) (padres "luis" "ana")) (persona (nombre "ana") (edad 59)) (persona (nombre "luis") (padres "pedro" "eva") ) Nota: secuencia típica de comandos CLIPS > (reset) CLIPS > (run) [inserta hechos iniciales => se activan reglas] [inicia la ejecución de las reglas] IA 0809 (CCIA) CLIPS Noviembre-2008 7 / 10

Reglas (defrule) { condiciones sobre hechos/instancias Lado izquierdo (patrones) pueden incluir variables añadir/modificar/borrar hechos/instancias interacción con usuario (leer/escribir) Lado derecho (acciones) uso de variables definidas en lado izq. acción (halt): detiene inferencias Sintaxis: (defrule <nombre regla> <comentario (opc.)> (declare (salience <prioridad>)) [opcional] (patron 1)... (patron n) => (accion 1)... (accion m) ) De entre las reglas que cumplan todas sus precondiciones en la memoria activa actual, el motor de inferencias seleccionará una o varias a ejecutar (y su orden). IA 0809 (CCIA) CLIPS Noviembre-2008 8 / 10

(defrule hermanos (persona (nombre?n1) (padres?p $?)) (persona (nombre?n2) (padres?p $?)) => (assert (hermanos (hijo1?n1) (hijo2?n2))) (printout t "hermanos "?n1?n2 " hijos de "?p crlf) ) (defrule activar-aspersor (sensor (tipo temperatura) (ubicacion?id-habitacion) (activado si))?hab <- (habitacion (id?id-habitacion) (aspersor apagado)) (sensor (tipo presencia) (ubicacion?id-habitacion) (activado)) => (assert (alarma (tipo fuego) (ubicacion?id-habitacion)) (assert (accion (tipo desalojo) (ubicacion?id-habitacion)) (modify?hab (aspersor encendido)) ) IA 0809 (CCIA) CLIPS Noviembre-2008 9 / 10

Variables { variables simples:?<nombre> Sintaxis: variables multivaluadas: $?<nombre> Nota:Variables anónimas (comodines):? (1 valor) $? (n valores) Normalmente se asignan (toman valor) en el lado izquierdo (condiciones) Puede asignárseles valor explícitamente con el comando (bind <variable> <expresion>) { lado derecho: correspondencia de patrones compleja Uso lado izquierdo: acceso a sus valores Pueden referirse al valor de un slot (persona (edad?edad)) Pueden mantener una referencia a un hecho/objeto (operador <-)?hecho <-(persona (nombre "juan") (edad?edad)) IA 0809 (CCIA) CLIPS Noviembre-2008 10 / 10

Condiciones sobre slots y variables Restricciones sobre slots negación (~): (persona (edad ~25)) conjunción (&): (persona (edad ~25 & ~26)) Util para extraer e valor de una variable a la vez que se aplica la restricción (edad?edad & 25) disyunción ( ): (persona (edad 25 26)) Restricciones sobre variables: comando (test <operador> <argumentos>) Generalmente en lado izquierdo (también posible en lado derecho) Operadores: and, or, not, <, >, =,... Pueden usarse funciones definidas por el usuario (deffunc... ) Usa notacion prefija + paréntesis para expresiones complejas (persona (edad? edad)) (test (and (>=?edad 25) (<=?edad 65))) /* edad en 25 y 65 */ IA 0809 (CCIA) CLIPS Noviembre-2008 11 / 10

Patrones complejos Por defecto deben verificarse todos los patrones para que una regla se active AND implícito Pueden usarse otros operadores para agrupar los patrones del lado izquierdo (or <patrones>): al menos uno de los patrones debe satisfacerse en la memoria activa actual la regla sea activará una vez para cada patrón que se satisfaga (and <patrones>): todos os patrones debe satisfacerse en la memoria activa actual (not <patron>): el patrón no debe satisfacerse en la memoria activa actual (exist <patrones>): uno o más patrones deben satisfacerse, pero la regla se activará una única vez (forall <patron> <patrones>): exige que el conjunto de hechos que satisfagan el primer patrón deban satisfacer los demás (logical <patron>): establece un vínculo lógico entre el patrón IA 0809 (CCIA) del lado derecho y losclips hechos que se añadannoviembre-2008 en las 12 / 10

Proceso de inferencia Emparejar hechos/instancias con reglas Reglas activadas se mantienen en la agenda Una agenda por cada módulo que componga el sistema Funciona como pila: próxima regla a ejecutar en la cima Posibilidad de usar prioridades (salience) Ante empates en agenda ejecutar antes reglas mayor salience refracción: sólo se seleccionan para ejecución reglas que no fueran activadas en el pasado por el conjunto de hechos/instancias actual Pueden indicarse distintas estrategias de resolución de conflictos Deciden en caso de empates entre reglas de igual prioridad Comando (set-stretegy <estrategia>) Profundidad (depth): estrategia por defecto, nuevas activaciones por encima Anchura (breadth): activaciones nuevas quedan por debajo Simplicidad (simplicity): preferencia a activaciones de reglas menos específicas ( n o comparaciones en lado izq.) Complejidad (complexity): preferencia a activaciones de reglas más específicas Lex y Mea: preferencia por las activaciones nuevas de reglas más específicas Aletoria (random) IA 0809 (CCIA) CLIPS Noviembre-2008 13 / 10

Orientación a Objetos COOL: Clips Object-Oriented Language Amplicación de CLIPS para dar soporte a características de la POO (herencia, encapsulación,...) Clases predefinidas: Clases de usuario heredan de USER INITIAL-OBJECT usado para instancias inciales (comando (clear)) IA 0809 (CCIA) CLIPS Noviembre-2008 14 / 10

Definición de clases Operador deffclass (defclass nombre [comentario] (is-a <nombre superclase>) (role concrete abstract) (pattern-match reactive non-reactive) <definición slots> <definición handlers> ) [opcional] [opcional] En cada clase se especifica Su superclase (is-a) [es posible herencia múltiple] Si es abstracta o concreta (puede tener instancias) (role) Si los cambios en sus slots pueden disparar los patrones de las reglas (pattern-match reactive) o no (pattern-match non-reactive) Lista de slots con sus restricciones limitar el acceso al slot: (visibility public private), (access read-write read-only initializa-only) indica si crear handlers get y set para ese slot: (create-accesor?none read write read-write) IA 0809 (CCIA) CLIPS Noviembre-2008 15 / 10

(defclass ser_vivo (is-a USER) (role abstract) (slot nombre (type STRING)) (defclass vegetal (is-a ser_vivo) (role abstract) ) (defclass animal (is-a ser_vivo) (role abstract) (slot edad)) (defclass mamifero (is-a animal) (role abstract) (slot num_patas (type INTEGER)) (defclass gato (is-a animal) (role concrete) (slot raza (type STRING)) (slot color (type SYMBOL))) (defclass perro (is-a animal) (role concrete) (slot raza (type STRING)) (slot color (type SYMBOL))) (defclass hombre (is-a animal) (role concrete) (slot pais (type SYMBOL)) (slot DNI (type SYMBOL))) IA 0809 (CCIA) CLIPS Noviembre-2008 16 / 10

Definición y uso de instancias Creación: (make-instance [<instancia>] of <nombre clase> <definicion slots>) (make-instance alumno1 of hombre (nombre "juan") (edad 26)) (make-instance of hombre (nombre "luis") (edad 56)) Modificación: (modify-instance <instancia> <redefinicion slots>) (modify-instance alumno1 (nombre "juan antonio")) Copia: (duplicate-instance <instancia> [to <nueva instancia>] <redefinicion slots>) (duplicate-instance alumno1 to alumno2 (nombre "pedro")) (duplicate-instance alumno2 to alumno3) Borrado: (make-instance <ref. instancia>) (unmake-instance alumno1) (unmake-instance?referencia) Otra opción: usar handler delete ((send [instancia]) delete) (send [alumno1] delete) IA 0809 (CCIA) CLIPS Noviembre-2008 17 / 10

Definición y uso de instancias Declaración instancias iniciales: (definstances) Instancias a crear al inicio de la ejecución (comando (reset)) Siempre existe objeto initial-object (de clase INITIAL-OBJECT) (definstances personas (juan of hombre (nombre "juan") (luis of hombre (nombre "luis") (pablo of hombre (nombre "pablo")) Definición de handlers: (defmessage-handler <clase> <handler> (<parametros>) <lista instru Acceso a variables y ejecución de handlers (métodos) ([instancia] send <nombre handler> <paramatros>) En slots donde { se defina modificador create-accessor se crean get-<nombre slot> dos handlers set-<nombre slot> ([juan] send set-edad 26) ([pablo] send imprimir) ([juan] send get-nombre) IA 0809 (CCIA) CLIPS Noviembre-2008 18 / 10

Uso de objetos en reglas Se pueden crear precondiciones en el lado izquierdo de las reglas que hagan referencia objetos o al valor de sus slots usando la palabra clave object (object <lista 8restricciones>) < <restriccion> = : Ejemplo (is-a <nombre clase>) (name <restriccion sobre nombre>) (<nombre slot> <restriccion sobre slot>) (defrule fuego-misma-planta (object (is-a sensor-humo) (habitacion?id_habitacion) (activo SI)) (object (is-a habitacion) (id?id_habitacion) (piso?piso) (aspersor encendido))?h1 <- (object (is-a habitacion) (piso?piso)) => (modify-instance?h1 (aspersor encendido)) (bind?nombre-habitacion [?h1] get-nombre) (printout "Encendido aspersor en la habitacion "?nombre-habitacion " del piso "?piso crlf)) ) IA 0809 (CCIA) CLIPS Noviembre-2008 19 / 10

Otras posibilidades Definición de funciones: (deffunc...) División en módulos: (defmodule...)) exportación e importaciones de elementos: plantillas, hechos, reglas, clases,... Uso de factores de certidumbre asoicados a reglas y hechos Simulación de razonamiento hacia atrás IA 0809 (CCIA) CLIPS Noviembre-2008 20 / 10