Sistemas de producción: CLIPS

Documentos relacionados
Práctica 1: Introducción a CLIPS

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

Tema 1(I): Programación basada en reglas con CLIPS

CLIPS. Confrontación de Patrones

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

Reglas. El constructor defrule y otros comandos relacionados

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

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

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

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

Inteligencia en Redes de Comunicaciones Jess

7. Programación lógica y Sistemas Expertos

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

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Ed. Física Lenguaje Matemática Lenguaje. Matemática Lenguaje Ed. Física Artes Música. Orientación Tecnología

Contenido. Jess: Introducción Elementos básicos de programación Funcionamiento del motor de inferencias Desarrollo de aplicaciones con Jess

Sistemas Inteligentes de Gestión. Tutorial de CLIPS

Tema 2: Equivalencias y formas normales

Taller de Resolución de Problemas Computacionales

Tema 6 Organización y gestión de la memoria

Lenguaje de programación Jess. Java Expert System Shell

P L A N I F I C A C I O N

Guía práctica de estudio 03: Algoritmos

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

Guía práctica de estudio 03: Algoritmos

Ejercicios de CLIPS. Inteligencia en Redes de Comunicaciones

PHP: Lenguaje de programación

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

Introducción. Francisco J. Martín Mateos. Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Lógica informática ( )

Sistema experto: KingsHelper 08

Nombre de la asignatura: Diseño Estructurado de Algoritmos. Carrera: Ingeniería en Sistemas Computacionales. Clave de la asignatura: SCB-9316

Redes Semánticas. IIMAS Inteligencia Artificial. Alumno: Vicente Iván Sánchez Carmona Profesora: Dr. Ana Lilia Laureano

4. DIAGRAMAS DE INTERACCIÓN INTRODUCCIÓN DIAGRAMAS DE SECUENCIA Objetos Mensajes

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

CLIPS - Code Snippets

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Departamento de Informática Universidad Técnica Federico Santa María. Tema 1: Algoritmos

DE LOS NÚMEROS NATURALES Y ENTEROS

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Clasificación de sistemas

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

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Introducción a la Geometría Computacional. Análisis de Algoritmos

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR. Ingeniería Aplicada TEÓRICA SERIACIÓN 100% DE OPTATIVAS DISCIPLINARIAS

Proposicional. Curso Mari Carmen Suárez de Figueroa Baonza

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

CONTENIDOS MÍNIMOS del ÁREA DE MATEMÁTICAS

REESCRIBIR ECUACIONES CON MÚLTIPLES VARIABLES Ejemplo 2. Ejemplo 4

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

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

INSTITUTO TECNOLOGICO DE LAS AMERICAS CARRERA DE TECNOLOGO EN DESARROLLO DE SOFTWARE PRECALCULO

DATOS GENERALES 60 HORAS 3 HORAS

ESCUELA SUPERIOR POLITECNICA DEL LITORAL

Usando el Sistema Operativo

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Concurrencia y paralelismo

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Presentación 13. Introducción 15

Programación con C Intermedio

Apuntadores (Punteros)

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Evolución de la Programación Orientada a Objetos

Lenguajes (gramáticas y autómatas)

Lenguajes de marcado para presentación de Páginas web.

UML (Lenguaje de Modelado Unificado) y Diagramas de Casos de Uso

Carrera: Bachillerato acelerado con orientación en computación. Horas semanales: 4 (cuatro) Cuat./ año de vigencia: 1/ 2012

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

OPTIMIZACIÓN Y SIMULACIÓN PARA LA EMPRESA. Tema 4 Optimización no Lineal

Ing. Eduardo Cruz Romero w w w. tics-tlapa. c o m

PLANIFICACIÓN ANUAL NM3 TERCERO MEDIO

TEMARIOS PRUEBAS SEMESTRALES 2015 PRIMER SEMESTRE DEPARTAMENTO DE MATEMÁTICA

Tema: Entorno a C# y Estructuras Secuenciales.

Introducción a las Redes Neuronales

Programación Orientada a Objetos

Threads, SMP y Microkernels. Proceso

CONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2017

Guía 3 Del estudiante Modalidad a distancia. Modulo CÁLCULO UNIVARIADO INGENIERÍA DE SISTEMAS II SEMESTRE

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD DE CIENCIAS PROGRAMA DE MATEMÁTICAS PLAN DE ESTUDIOS

INTERFACES INTELIGENTES. ING. MA. MARGARITA LABASTIDA ROLDÁN E mail:

CONTENIDO OBJETIVOS TEMÁTICOS HABILIDADES ESPECIFICAS



PRÁCTICA No. 2 FORMA POLAR DE UN NUMERO COMPLEJO. Otra forma de expresar un número complejo es la forma polar o forma módulo-argumento,

PRÁCTICA No. 2 FORMA POLAR DE UN NUMERO COMPLEJO. Otra forma de expresar un número complejo es la forma polar o forma módulo-argumento,

Anexo 10. Pruebas verificadas

Tema 3.- Predicados y sentencias condicionales

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC:

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Tema 1 Introducción a los Sistemas Basados en el Conocimiento

ANEXO XVII DE LA RESOLUCION N

Ejercicios ejemplo: verificación de algoritmos del valor suma de una sucesión matemática. (CU00238A)

Recursos. Temas. Tiempo. Evaluación. Competencias:

PRECALCULO INSTITUTO TECNOLÒGICO DE LAS AMÈRICAS CARRERA DE TECNÓLOGO EN MECATRONICA. Precálculo. Nombre de la asignatura: MAT-001

Transcripción:

Francisco J. Martín Mateos Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla

Sistemas de producción: Ejemplo Reglas para identificar un animal Si el animal tiene pelos entonces es mamífero Si el animal produce leche entonces es mamífero Si el animal es mamífero y tiene pezuñas entonces es ungulado Si el animal es mamífero y rumia entonces es ungulado Si el animal es ungulado y tiene el cuello largo entonces es una jirafa Si el animal es ungulado y tiene rayas negras entonces es una cebra Cómo identificamos un animal que tiene pelos, pezuñas y rayas negras?

Sistemas de producción Un sistema de producción es un mecanismo computacional basado en reglas de producción de la forma: Si se cumplen las condiciones entonces se ejecutan las acciones El conjunto de las reglas de producción forma la base de conocimiento que describe como evoluciona un sistema Las reglas de producción actúan sobre una memoria de trabajo o base de datos que describe el estado actual del sistema Si la condición de una regla de producción se satisface entonces dicha regla está activa El conjunto de reglas de producción activas en un instante concreto forma el conjunto de conflicto o agenda La estrategia de resolución selecciona una regla del conjunto de conflicto para ser ejecutada o disparada modificando así la memoria de trabajo

Ciclo de ejecución Reglas Hechos Equiparacion de patrones Agenda Resolucion de conflictos Disparo

Sistemas de producción Componentes: Base de hechos (memoria de trabajo). Elemento dinámico Base de reglas (base de conocimiento). Elemento estático Motor de inferencia (produce los cambios en la memoria de trabajo) Elementos adicionales: Algoritmo de equiparación de patrones: Algoritmo para calcular eficientemente la agenda Estrategia de resolución de conflictos: Proceso para decidir en cada momento qué regla de la agenda debe ser disparada

Resolución de conflictos Una activación sólo se produce una vez Estrategias más comunes: Tratar la agenda como una pila Tratar la agenda como una cola Elección aleatoria Regla más específica (número de condiciones) Activación más reciente (en función de los hechos) Regla menos utilizada Mejor (pesos)

Reglas de producción Modelo de regla: <Condiciones> <Acciones> Condiciones Existencia de cierta información Ausencia de cierta información Relaciones entre datos Acciones Incluir nueva información Eliminar información Presentar información en pantalla

CLIPS CLIPS CLanguage Integrated Production Systems http://clipsrules.sourceforge.net/ Lenguaje basado en reglas de producción. Desarrollado en el Johnson Space Center de la NASA. Relacionado con OPS5 y ART Características: Conocimiento: Reglas, objetos y procedimental Portabilidad: implementado en C Integración y Extensibilidad: C, Java, FORTRAN, ADA Documentación Bajo coste: software libre

Hechos en CLIPS Estructura de un hecho simple (<simbolo> <datos>*) Ejemplos: (conjunto a b 1 2 3) (1 2 3 4) no es un hecho válido Conjunto de hechos iniciales (deffacts <nombre> <hecho>*) Acción: Añadir hechos (assert <hecho>*)

Reglas en CLIPS Estructura de una regla (I): (defrule <nombre> <condicion>* <accion>*) Ejemplo: (defrule mamifero-1 (tiene-pelos) (assert (es-mamifero)))

Interacción con CLIPS Cargar el contenido de un archivo: (load <archivo>) Inicialización: (reset) Ejecución: (run) Limpiar la base de conocimiento: (clear) Ayuda del sistema: (help)

Ejemplo Reglas (defrule mamifero-1 (tiene-pelos) (assert (es-mamifero))) (defrule ungulado-1 (es-mamifero) (tiene-pezugnas) (assert (es-ungulado))) (defrule jirafa (es-ungulado) (tiene-cuello-largo) (assert (es-jirafa))) Conjunto de hechos iniciales (deffacts hechos-iniciales (tiene-pelos) (tiene-pezugnas) (tiene-rayas-negras)) (defrule mamifero-2 (da-leche) (assert (es-mamifero))) (defrule ungulado-2 (es-mamifero) (rumia) (assert (es-ungulado))) (defrule cebra (es-ungulado) (tiene-rayas-negras) (assert (es-cebra)))

Ejemplo: tabla de seguimiento Hechos E Agenda D f0 (initial-fact) 0 f1 (tiene-pelos) 0 mamifero-1: f1 1 f2 (tiene-pezugnas) 0 f3 (tiene-rayas-negras) 0 f4 (es-mamifero) 1 ungulado-1: f4,f2 2 f5 (es-ungulado) 2 cebra: f5,f3 3 f6 (es-cebra)

Plantillas Estructura de una plantilla (I): (deftemplate <nombre> <campo>*) <campo> := (slot <nombre-campo>) Ejemplos: (deftemplate persona (slot nombre) (slot ojos)) (persona (nombre Ana) (ojos verdes)) (persona (nombre Juan) (ojos negros))

Variables simples y restriciones Variables simples:?x,?y,?gv32 Toman un valor simple (número, símbolo o cadena de texto) Restricciones (I): Condiciones sobre las variables que se comprueban en el momento de verificar las condiciones de una regla Negativas: (dato?x& a) Disyuntivas: (dato?x&a b) Conjuntivas: (dato?x& a& b) Acción: Presentar información en pantalla (printout t <dato>*)

Ejemplo (deftemplate persona (slot nombre) (slot ojos)) (deffacts personas (persona (nombre Ana) (ojos verdes)) (persona (nombre Juan) (ojos negros)) (persona (nombre Luis) (ojos negros)) (persona (nombre Blanca) (ojos azules))) (defrule empareja (persona (nombre?nombre1) (ojos?ojos1&azules verdes)) (persona (nombre?nombre2&?nombre1) (ojos negros)) (printout t?nombre1 " tiene los ojos "?ojos1 crlf) (printout t?nombre2 " tiene los ojos negros" crlf) (printout t "------------------------" crlf))

Variables múltiples y eliminaciones Variables: $?x, $?y, $?gv32 Toman un valor múltiple Estructura de una regla (II): (defrule <nombre> <condicion>* <accion>*) <condicion> := <patron> (not <patron>) <variable-simple> <- <patron> Acción: Eliminar hechos: (retract <identificador-hecho>*) <identificador-hecho> := <variable-simple> Variables mudas: Toman un valor que no es necesario recordar Simple:? Múltiple: $?

Ejemplo Unión de conjuntos (deffacts datos-iniciales (conjunto 1 a b) (conjunto 2 b c)) (defrule inicio (assert (union))) (defrule union?union <- (union $?u) (conjunto? $??e $?) (not (union $??e $?)) (retract?union) (assert (union?e?u))) Ejercicio: Intersección de conjuntos

Ejemplo: tabla de seguimiento Hechos E S Agenda D S f0 (initial-fact) 0 inicio: f0 1 f1 (conj-1 a b) 0 f2 (conj-2 b c) 0 f3 (union) 1 2 union: f3,f1, 2 union: f3,f1, 2 union: f3,f2, 2 union: f3,f2, 2 f4 (union b) 2 3 union: f4,f1, 3 union: f4,f2, 3 f5 (union c b) 3 4 union: f5,f1, 4 f6 (union a c b) 4

Plantillas y reglas Estructura de una plantilla (II): (deftemplate <nombre> <campo>*) <campo> := (slot <nombre-campo>) (multislot <nombre-campo>) Estructura de una regla (III): (defrule <nombre> <condicion>* <accion>*) <condicion> := <patron> (not <patron>) <variable-simple> <- <patron> (test <llamada-a-una-funcion>) Funciones matemáticas: Básicas: +, -, *, / Comparaciones: =,!=, <, <=, >, >= Exponenciales: **, sqrt, exp, log Trigonométricas: sin, cos, tan

Ejemplo Clasificación de elementos (deftemplate triangulo (slot nombre) (multislot lados)) (deffacts triangulos (triangulo (nombre A) (lados 3 4 5)) (triangulo (nombre B) (lados 6 8 9)) (triangulo (nombre C) (lados 6 8 10))) (defrule inicio (assert (triangulos-rectangulos)))

Ejemplo Clasificación de elementos (defrule almacena-triangulo-rectangulo?h1 <- (triangulo (nombre?n) (lados?x?y?z)) (test (=?z (sqrt (+ (**?x 2) (**?y 2)))))?h2 <- (triangulos-rectangulos $?a) (retract?h1?h2) (assert (triangulos-rectangulos $?a?n))) (defrule elimina-triangulo-no-rectangulo?h <- (triangulo (nombre?n) (lados?x?y?z)) (test (!=?z (sqrt (+ (**?x 2) (**?y 2))))) (retract?h)) (defrule fin (not (triangulo)) (triangulos-rectangulos $?a) (printout t "Lista de triangulos rectangulos: " $?a crlf))

Problemas de terminación Una misma regla se puede activar con distinto conjunto de hechos dando lugar a una iteración infinita en el proceso de deducción (deftemplate rectangulo (slot nombre) (slot base) (slot altura)) (deffacts informacion-inicial (rectangulo (nombre A) (base 9) (altura 6)) (rectangulo (nombre B) (base 7) (altura 5)) (rectangulo (nombre C) (base 6) (altura 8)) (rectangulo (nombre D) (base 2) (altura 5)) (suma 0)) (defrule suma-areas-de-rectangulos (rectangulo (base?base) (altura?altura))?suma <- (suma?total) (retract?suma) (assert (suma (+?total (*?base?altura))))) Ejercicio: Corregir ejemplo anterior

Restricciones evaluables Restricciones (II): Evaluables: (dato?x&:<llamada-a-un-predicado>) Ejemplo: (defrule maximo (vector $??x $?) (not (vector $??y&:(>?y?x) $?)) (printout t "El maximo es "?x crlf))

Ejemplo Ordenación de los elementos de un vector (defrule inicial (vector $?x) (assert (vector-aux?x))) (defrule ordena?f <- (vector-aux $?b?m1?m2&:(<?m2?m1) $?e) (retract?f) (assert (vector-aux $?b?m2?m1 $?e))) (defrule final (not (vector-aux $?b?m1?m2&:(<?m2?m1) $?e)) (vector $?x) (vector-aux $?y) (printout t "La ordenacion de "?x " es "?y crlf))

Restricciones evaluables Hechos E S Agenda D S f0 (initial-fact) 0 f1 (vector 3 2 1 4) 0 inicial: f1 1 f2 (vector-aux 3 2 1 4) 1 2 ordena: f2 2 ordena: f2-2 f3 (vector-aux 2 3 1 4) 2 3 ordena: f3 3 f4 (vector-aux 2 1 3 4) 3 4 ordena: f4 4 f5 (vector-aux 1 2 3 4) 4 final: f0,,f1,f5 5

Bibliografía Giarratano, J.C. y Riley, G. Expert Systems Principles and Programming (2nd ed.) (PWS Pub. Co., 1994) Cap. 7: Introduction to Clips Giarratano, J.C. CLIPS 6.0 User s Guide