Departamento de Ciencia de la Computación IIC3194 – Metodologías Emergentes en la Ingeniería de Software Razonamiento basado en reglas JESS Ingeniería.

Slides:



Advertisements
Presentaciones similares
Nos comunicamos
Advertisements

Ayudantía Pre-Actividad 5 Multimedios. Ayudantía Pre-Actividad 5 (1) creación de varias clases, y composición (2) manejo de threads (3) manejo de excepciones.

Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;
Lucio Salgado CLIPS Lucio Salgado
Lenguajes basados en reglas
Daniel Correa Botero. Las capas en azul representan módulos prediseñados que no se deben programar.
Sistemas de Razonamiento Lógico
Tema 2: Lenguaje PHP básico
Luis Miguel Li Loo Luis Miguel Burgos Jorge Luis Ocampo.
Curso Inteligencia Artificial (30223)
Programación por capas: Capa de Clases
CAPITULO 2 La Representación del Conocimiento
Sistemas Expertos Caso de Estudio: Selecci ó n de un microcontrolador.
Copyright © 1997 José Angel Bañares Última revisión: Octubre, 2002 Programación en Lenguajes basados en reglas. Aspectos metodológicos. Programación en.
Sesión 6 Sentencias de Repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Lenguaje C.
Curso José Ángel Bañares 18/10/2013. Dpto. Informática e Ingeniería de Sistemas. Inteligencia Artificial (30223) Lección 8. Eficiencia en sistemas.
Metodos de Inferencia Lenin Herrera.
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
* FRAUSTO JIMENEZ GABRIELA * * HERNANDEZ TORRES ANA LAURA * * MANDUJANO JUAN CARLOS * * NOVA MARIN YARELI PAULINA * * ZAVALA CORTE JOCELYN ARELI *
Variables y Shapes. Variables ► Lugares de la memoria que reciben un nombre ► En VB no es necesario declarar las variables  A=8 ► Se declaran con Dim.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capítulo 1 “Elementos de Programación”
Capítulo 2 – Estructuras de Control
Programación por Capas: Motor de templates, Vista y Controlador Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa.
SISTEMAS EXPERTOS 2004 QUÉ ES CLISP ?. INTRODUCCIÓN A CLISP Características Generales: -Fácil implementación y modificación: rapidez para demostrar algoritmos.
Microsoft© Visual Basic . Net.
Copyright © 1997 José Ángel Bañares Última revisión: Octubre., 2002 Programación en Lenguajes basados en reglas. Aspectos metodológicos II. Programación.
1 © José Angel Bañares Copyright © 1998 JoséAngel Bañares Última revisión: Marz., 1999 Resolución de Problemas en LBR Departamento de Informática e Ingeniería.
Buenos días, Buenos días
Estructura de Control Repeticiones(Loops) Ejercicios
Sistema Experto Construcción. Un sistema experto puede ser construido así:  Un ingeniero entrevista al experto y aprende de lo que el hace y como lo.
Lenguajes basados en reglas
Aplicaciones de la Lógica
Fundamentos de Sistemas Expertos
Joscelyn Vega Chaparro Carlos Gonzalez Gatica.  Definición 1:  Es una aplicación informática capaz de solucionar un conjunto de problemas que exigen.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Sistemas Basados en Reglas
 Los sistemas expertos son llamados así porque emulan el razonamiento de un experto en un dominio concreto y en ocasiones son usados por éstos. Con los.
Desarrollo de sistemas expertos basados en reglas
Capítulo 2 “Subprogramas/Funciones - Arreglos”
El corazón rojo.
Programación orientada a objetos Capítulo 4 Agrupar objetos.
MEJORES FORMAS DE APRENDER A PROGRAMAR. EL CONO DE DALE Edgar Dale fue un pedagogo estadounidense conocido por su famoso cono de la experiencia. Estudió.
Son sistemas de computación que emulan la habilidad de tomar decisiones de un especialista humano en un dominio restringido. Son programas que tienen.
Los colores en español.
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
la blusa ______________________ 2. el pantalón ______________________
¿Con qué color asocias?/emociones
1-   Abrir la terminal de comandos MS-DOS y crear una estructura de archivos y directorios igual a esta.
 Es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
Métodos instruccionales
Los colores As a brainstorming or Do Now activity, play the song “Los Colores” (Track 4) from Sing, Laugh, Dance and Eat Tacos. Directions: Write down.
Hola Pg Los Colores y Animales. Objectivos 1. Students will combine animal, color and size vocabulary to form simple sentences. 2. At the end of.
Programación en Visual Basic
Los Colores. Blanco Negro Rojo Azul Amarillo.
Arquitectura de Computadores Clase 21 Memoria Virtual IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería.
Lenguaje de programación: Lua Fundamentos de lenguaje de programación. Iván Cardemil Patricio Tudela Camilo Rojas Llosect Moscoso.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Curs de Postgrau Visual Basic .NET: Introducció
Sistemas expertos con Clips Instituto Tecnológico Superior de San Miguel El Grande Ing. Miguel Angel Marcial Martínez.
Transcripción de la presentación:

Departamento de Ciencia de la Computación IIC3194 – Metodologías Emergentes en la Ingeniería de Software Razonamiento basado en reglas JESS Ingeniería de Software Orientada a Agentes (AOSE) Prof. Rosa A. Alarcón II-Sem. 2006

Sistema basado en reglas  Fines de los 80, AI creo expectativas que fueron defraudadas.  Sistemas expertos emulan razonamiento humano en un dominio especifico.  Sistemas expertos basados en reglas RBS razonan sobre hechos (facts) de un problema usando reglas del tipo IF … THEN.  Potencian muchas aplicaciones de manera no obstructiva.  Son una de las aplicaciones basadas en AI mas usadas productivamente.

RBS  Representacion como tripletas atributo-objeto-valor + reglas de inferencias plausibles que los conectan.  Base independiente de reglas (conocimiento o base de conocimiento, es permanente) + un motor de inferencia (shell) + una memoria de trabajo temporal que contiene una serie de hechos (facts). Shell

RBS actualmente  Mycin (Buchanan y Shortliffe, 1984).  XCON (McDermontt, 1982).  Arquitecturas cognitivas, como ACT (Anderson, 1983) y SOAR (Laird et al., 1987).  Componente externa “pluggable” (shell). Extensiblee, integrable, flexible.  Empresas grandes (optimizar procesos y procedimientos), proveedores de servicios especializados, herramientas.  Inferencia de reglas de negocio.  Jboss Rules

Ejemplo1 (JESS) ( defrule mortal (human ?X) => (assert (mortal ?X)) ) (assert (human Socrates)) (watch facts) (run) ==> f-1 (MAIN::mortal Socrates) Reglas (permanente) Facts (temporales) Proceso de inferencia (RETE) resultado

Ejemplo2 (JESS) (deftemplate human (slot name) ) ( defrule mortal (human (name ?X)) => (assert (mortal ?X)) ) (assert (human (name (Socrates))) ) (watch all) (run) FIRE 1 MAIN::mortal f-0 ==> f-1 (MAIN::mortal Socrates) “Conceptos” Reglas (permanente) Facts (temporales) Proceso de inferencia (RETE) resultado

Ejemplo 3 (deftemplate being (slot name)) (deftemplate mortal extends being) (deftemplate immortal extends being) (deftemplate monster extends mortal) (deftemplate human extends mortal) (deftemplate god extends immortal) (defrule list-all-humanoids (being (name ?n)) => (printout t ?n " is a being " crlf) ) (defrule list-all-mortals (mortal (name ?n)) => (printout t ?n " is mortal " crlf) ) (deffacts beings (human (name Bob)) (monster (name Gollum)) (god (name Zeus)) ) (reset) (run)

Ejecución y resultado  (batch examples\\beings.clp)  Zeus is a being  Gollum is mortal  Gollum is a being  Bob is a being  Bob is mortal  5

JESS  Atomo: simbolo (variable), nil, TRUE, FALSE.  Numeros:  Strings: “hola”  Lista: (+ 2 3) (a b c) () (2) (“a”) (deftemplate being (slot name))  Comentarios: ; comen tario  Variables: ?x  Multivariables: $?arreglo ; ( )

Funciones de JESS  (+ 2 3) (+ (+ 2 3) (* 3 3))  (printout t "The answer is " 42 "!" crlf)  (batch examples\\hello.clp) ;ejecuta archivo  (bind ?x Socrates) ;asigna valor a variable  (clear) ;borra facts, reglas, etc.  (create$ 1 2 3) ;(bind $?lista (create$ 1 2 3))  (exit)  (foreach ?x (create$ a b c d) (printout t ?x crlf) var valores accion  (if (> ?x 100) then (bind ?y TRUE) else (bind ?y FALSE)  (eq 2 2.0) ; FALSE  (eq* 2 2.0) ; TRUE  (retract 2) ; borra el FACT 2  (str-compare “a” “ab”) ; 0 iguales, - a a

Socrates de nuevo (clear) (deftemplate human (slot name)) (defrule mortal (human (name ?X)) => (assert (mortal ?X)) ) (defrule mostrar (mortal ?X) => (printout t crlf "Mortal "?X crlf crlf) ) (assert (human (name Socrates))) (watch facts) (run) (assert (human (name Juan))) (run) Jess> (batch examples\\socrates1.clp) ==> f-1 (MAIN::mortal Socrates) Mortal Socrates ==> f-2 (MAIN::human (name Juan)) ==> f-3 (MAIN::mortal Juan) Mortal Juan 2 Jess>

Ejercicio  Hagamos un juego reactivo, donde dos personajes conversen y dependiendo de lo que se diga (insulto, broma o amenaza), se enojan, rien, o escapan.

Solución (deftemplate personaje (slot nombre)) (deftemplate conversacion (slot emisor) (slot receptor) (slot palabra)) (deftemplate emocion (slot personaje) (slot nombre)) (defrule gatilla_enojo (conversacion (emisor ?e) (receptor ?r) (palabra ?p)) (test (eq ?p insulto)) => (assert (emocion (personaje ?r) (nombre enojado))) ) (defrule gatilla_risa (conversacion (emisor ?e) (receptor ?r) (palabra ?p)) (test (eq ?p broma)) => (assert (emocion (personaje ?r) (nombre risa))) ) (defrule gatilla_corre (conversacion (emisor ?e) (receptor ?r) (palabra ?p)) (test (eq ?p amenaza)) => (assert (emocion (personaje ?r) (nombre corre))) ) (deffacts escena1 (personaje (nombre Juan)) (personaje (nombre Maria)) (conversacion (emisor Juan) (receptor Maria) (palabra insulto)) (conversacion (emisor Juan) (receptor Maria) (palabra broma)) (conversacion (emisor Juan) (receptor Maria) (palabra insulto)) (conversacion (emisor Juan) (receptor Maria) (palabra amenaza)) ) (reset) (run)

Resultado Jess> (batch examples\\juego1.clp) 3 Jess> (facts) f-0 (MAIN::initial-fact) f-1 (MAIN::personaje (nombre Juan)) f-2 (MAIN::personaje (nombre Maria)) f-3 (MAIN::conversacion (emisor Juan) (receptor Maria) (palabra insulto)) f-4 (MAIN::conversacion (emisor Juan) (receptor Maria) (palabra broma)) f-5 (MAIN::conversacion (emisor Juan) (receptor Maria) (palabra amenaza)) f-6 (MAIN::emocion (personaje Maria) (nombre corre)) f-7 (MAIN::emocion (personaje Maria) (nombre risa)) f-8 (MAIN::emocion (personaje Maria) (nombre enojado)) For a total of 9 facts. Jess> Problema: la inferencia es “desordenada”

Modificación (deftemplate personaje (slot nombre)) (deftemplate conversacion (slot emisor) (slot receptor) (slot palabra)) (deftemplate emocion (slot personaje) (slot nombre)) (defrule gatilla_enojo(conversacion (emisor ?e) (receptor ?r) (palabra ?p)) (test (eq ?p insulto)) => (assert (emocion (personaje ?r) (nombre enojado))) ) (defrule gatilla_risa (conversacion (emisor ?e) (receptor ?r) (palabra ?p)) (test (eq ?p broma)) => (assert (emocion (personaje ?r) (nombre risa))) ) (defrule gatilla_corre (conversacion (emisor ?e) (receptor ?r) (palabra ?p)) (test (eq ?p amenaza)) => (assert (emocion (personaje ?r) (nombre corre))) ) (deffacts escena1 (personaje (nombre Juan)) (personaje (nombre Maria)) ) (reset) (watch all) (run) (assert (conversacion (emisor Juan) (receptor Maria) (palabra insulto)) ) (run) (assert (conversacion (emisor Juan) (receptor Maria) (palabra broma)) ) (run) (assert (conversacion (emisor Juan) (receptor Maria) (palabra insulto)) ) (run) (assert (conversacion (emisor Juan) (receptor Maria) (palabra amenaza)) ) (run)

Resultado Jess> (batch examples\\juego2.clp) <== Focus MAIN ==> f-3 (MAIN::conversacion (emisor Juan) (receptor Maria) (palabra insulto)) ==> Activation: MAIN::gatilla_enojo : f-3, FIRE 1 MAIN::gatilla_enojo f-3, ==> f-4 (MAIN::emocion (personaje Maria) (nombre enojado)) ==> f-5 (MAIN::conversacion (emisor Juan) (receptor Maria) (palabra broma)) ==> Activation: MAIN::gatilla_risa : f-5, FIRE 1 MAIN::gatilla_risa f-5, ==> f-6 (MAIN::emocion (personaje Maria) (nombre risa)) ==> f-7 (MAIN::conversacion (emisor Juan) (receptor Maria) (palabra amenaza)) ==> Activation: MAIN::gatilla_corre : f-7, FIRE 1 MAIN::gatilla_corre f-7, ==> f-8 (MAIN::emocion (personaje Maria) (nombre corre)) 1 Jess>

Unión de JADE y JESS  La idea es tener un agente que tenga una conducta de razonamiento.  JadeJessBehaviour  Metodos “assert” y “run”  JADE -> JESS  Y un metodo para escuchar la inferencia.  JESS -> JADE  MyEventHandler  Recibe objectos “Fact”

JESS extendido  Pueden añadirse funciones a JESS.  send ( ACLMessage )  JessSend  Contadores.  Tiempo discreto.  …

Ejercicio  4 golfistas estan parados en un tee, en una línea de izquierda a derecha. Cada golfista usa diferentes pantalones de color; uno usa pantalones rojos.  El golfista a la derecha inmediata de Fred está usando los pantalones azules.  Joe está en segundo lugar en línea.  Bob está usando los pantalones grises.  Tom no está en la posición uno o cuatro, y no está usando los pantalones anaranjados.  ¿En qué orden estan los cuatro golfistas y de qué color es el pantalon de cada uno?

Solución  (deftemplate pants-color (slot of) (slot is))  (deftemplate position (slot of) (slot is))  (defrule generate-possibilities  =>  (foreach ?name (create$ Fred Joe Bob Tom)  (foreach ?color (create$ red blue gray orange)  (assert (pants-color (of ?name)  (is ?color))))  (foreach ?position (create$ )  (assert (position (of ?name)  (is ?position))))))

Solución (defrule find-solution (position (of Fred) (is ?p1)) (pants-color (of Fred) (is ?c1)) (position (of ?n&~Fred) (is ?p&:(eq ?p (+ ?p1 1)))) (pants-color (of ?n&~Fred) (is blue&~?c1)) (position (of Joe) (is ?p2&2&~?p1)) (pants-color (of Joe) (is ?c2&~?c1)) (position (of Bob) (is ?p3&~?p1&~?p&~?p2)) (pants-color (of Bob&~?n) (is gray&?c3&~?c1&~?c2)) (position (of Tom&~?n) (is ?p4&~1&~4&~?p1&~?p2&~?p3)) (pants-color (of Tom) (is ?c4&~orange&~blue&~?c1&~?c2&~?c3)) => (printout t Fred " " ?p1 " " ?c1 crlf) (printout t Joe " " ?p2 " " ?c2 crlf) (printout t Bob " " ?p3 " " ?c3 crlf) (printout t Tom " " ?p4 " " ?c4 crlfb crlf) )