agentes inteligentes m.c. juan carlos olivares rojas [email protected]...

103
Agentes Inteligentes M.C. Juan Carlos Olivares Rojas [email protected] [email protected] @jcolivares http://antares.itmorelia.edu.mx/~jc olivar

Upload: amaranto-olivero

Post on 23-Jan-2016

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes Inteligentes

M.C. Juan Carlos Olivares Rojas

[email protected]@hotmail.com

@jcolivareshttp://antares.itmorelia.edu.mx/~jcolivar

Febrero, 2010

Page 2: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Competencia Específica

• Conoce los fundamentos teóricos de la teoría de agentes y poderla aplicar en la práctica.

Page 3: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes• Es un software (que puede incluir

hardware) que trabaja de manera autónoma y es capaz de realizar una serie de problemas de forma razonada.

• Los agentes se caracterizan por tener bien delimitados sus alcances. Generalmente reciben entrada a través de estímulos y realizan acciones hacia el exterior.

Page 4: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura de Agentes

Page 5: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes Inteligentes• Un agente es algo que razona (agente

viene del latín agere, hacer).

• Aparte de la autonomía y la racionalidad un agente debe de ser adaptable y en muchos casos “sociable”; es decir, poderse comunicar con otros agentes e incluso con el hombre mismo.

• Algunos autores a los agentes les llaman softbot.

Page 6: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes Inteligentes

Page 7: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Aplicación de los Agentes

Inteligencia y Conocimiento

Patrones

Agentes

Coordinación y Sincronización

Robótica Móvil

Robótica de Manipuladores

Procesamiento de Imágenes

Redes Neuronales

Page 8: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes Inteligentes• Se trata de emular la inteligencia natural

Razonamiento

Percepción

Memoria

Aprendizaje

Medio am

biente

Abstracción

Imaginación

Creatividad

Conciencia

Libre albedrio

Solución de problemas

Actuación

Page 9: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Áreas de la Teoría de Agentes

IA DistribuidaIngeniería de software

Sistemas distribuidos y redes

POO

NOCION DENOCION DEAGENCIAAGENCIA

Page 10: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Cerebro Humano como Máquina

• ¿Una computadora biológica?

• 1011 Neuronas (procesadores)

• Poder desconocido• 1000 – 10000

conexiones por neurona• Capacidad basada en

las conexiones.• Cada neurona es muy

compleja.• Almacenamiento

redundante.• No binario, no estable y

no asíncrono.

Page 11: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

“Sensores Humanos”Neuronas

Olor

Color

Sabor

Sonido

Tersura

información

acciones

Conexiones

Page 12: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

“Sensores Humanos”• Sonido 102 Hz, 104 Hz

• Color 1015 Hz

• Sabor ¿es una onda?

• Olor ¿es una reacción química?

• Tersura ¿es una onda?

104 Hz

102 Hz

Page 13: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

MAS• Multi-Agent System (Sistemas Multi

Agentes) son una colección de agentes generalmente distribuidos geográficamente y que pueden trabajar en conjunto para el logro de objetivos.

• Se caracterizan por que no hay un control global del sistema (recordar que cada agente es autónomo), por lo que los datos están descentralizados y la comunicación es asíncrona.

Page 14: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

MAS• Los agentes pueden ser reactivos o

proactivos.

• Se dice que es un agente es reactivo cuando dado un estímulo es capaz de procesar la respuesta.

• Un agente es proactivo cuando antes de percibir estímulos se encuentra trabajando.

Page 15: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

MAS• Algunos ejemplos de agentes:

• Un demonio en unix (poca racionalidad)• Un sistema de calefacción/aire

acondicionado automatizado (poca racionalidad)

• Un agente planificador de vuelos• Un agente para recomendaciones en

sistemas de comercio electrónico.

Page 16: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

MAS• Se considera que para que un agente

inteligente esté realmente completo se necesita de las siguientes actitudes:

• Conocimientos• Creencias• Intenciones• Obligaciones• Emociones

Page 17: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

MAS• En los sistemas multiagente se hace

sumamente necesario la movilidad. Existen diversas clasificaciones de MAS:

COOPERATIVOSCOOPERATIVOS

AUTONOMOSAUTONOMOS

APRENDENAPRENDEN

AGENTES INTELIGENTESAGENTES INTELIGENTESCOLABORATIVOSCOLABORATIVOS

AGENTES DE AGENTES DE INTERFAZINTERFAZ

COLABORATIVOS/COLABORATIVOS/APRENDENAPRENDEN

Page 18: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Actividad• Para un Taxi con piloto automático (taximetro

reemplazado por un agente inteligente )

• Determine lo siguiente:

• Percepciones• Acciones• Metas• Ambiente

Page 19: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de MAS

Page 20: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ambientes• Dependiendo del tipo de ambiente, la

inteligencia del agente varía. Actualmente se maneja el concepto de AMI (Ambientes Inteligentes) para describir el cómputo generalmente ubicuo que puede interactuar con su entorno. Es una variante de la domótica y del cómputo automatizado.

• A continuación se muestran los diferentes tipos de ambientes.

Page 21: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Cómputo Ubicuo y AMI

Inteligencia Ambiental

Page 22: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Consciencia del

dispositivo

Consciencia del

dispositivo

¿Qué se necesita para AMI?

¿Donde? WHERE¿Donde? WHERE

¿Quién? WHO¿Quién? WHO

Realizar servicios solosRealizar servicios solos

Realizar servicios coordinados

Realizar servicios coordinados

¿Cuándo? WHEN¿Cuándo? WHEN

¿Qué? WHAT¿Qué? WHAT

Context-Aware y SOA

¿Cómo? HOW¿Cómo? HOW

Page 23: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ambientes• Accesible/Inaccesible: Si los sensores

proporcionan todo lo que hay que saber sobre el estado completo del ambiente.

• Determinístico/No-determinístico (estocástico): Si el estado siguiente del ambiente está determinado plenamente por el estado presente del mismo, y por la acción del agente.

Page 24: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ambientes• Episódico/No-episódico: Un ambiente

episódico implica que los episodios siguientes no dependen de las acciones que ocurrían en episodios previos.

• Estático/Dinámico: Será estático todo ambiente que no cambie mientras el agente está pensando.

Page 25: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ambientes• Discreto/Continuo: se es discreto cuando

existe un escaso número de percepciones y acciones en el ambiente. Continuo en el otro caso.

• Sin adversario/con adversarios racionales: los ambientes de estudio generalmente son contrincarios, aunque la realidad es más compleja, como la bolsa o los juegos deportivos.

Page 26: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejercicio de Ambientes

Page 27: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Tipos de Ambientes• De acuerdo con Russell & Norving se

tienen los siguientes tipos de agentes:

• De reflejo simple: se basan en reglas condición/acción. Carecen de memoria referente a estados pasados del mundo.

• Bien informado de lo que pasa: con un estado interno usado para almacanar estados pasados del mundo.

Page 28: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Tipos de Ambientes• Basados en meta (proactivos): además de

disponer de información sobre el estado, tienen una meta que describe situaciones deseables.

• Basados en Utilidad: basan su decisión en

la teoría de la utilidad para actuar racionalmente.

Page 29: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agente Reactivo (Reflejo)

Page 30: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes bien informados

Page 31: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes basados en Metas

Page 32: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Agentes basados en Utilidad

Page 33: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

BDI• Es una forma de representar agentes:

Belief (creencias), Desire (deseos), Intentions (intenciones).

• Las creencias representan la base de conocimientos, los deseos los logros a obtener y las intenciones son la serie de acciones a realizar para lograr los objetivos.

• Todo esto se debe explicitar de alguna forma.

Page 34: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de BDI• Ejemplo: TERMOSTATO • D = mantener temperatura en T• B = { t (A), OK(T) }• I = { Calentar, Enfriar, nada}

• Filtro: - Si A > T entonces I = Enfriar• - Si A < T entonces I = Calentar• - Si A = T entonces I = Nada

Page 35: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de BDI• Acción: Case I de • Enfriar Acción = bajar temp• Calentar Acción = subir temp• Nada Acción = nada

• Después de todo esto el principal reto en teoría de agentes es el lenguaje de comunicación entre los agentes y su entorno.

Page 36: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Lenguajes de Agentes• Existen diversos lenguajes de comunicación entre

agentes la gran mayoría propietarios aunque en los últimos años se han estandarizado dos:• KQML• FIPA ACL

– En este curso se trabajará con la plataforma de

agentes JADE.

– Los agentes se han hecho tan populares que ha surgido el paradigma de programación orientado a agentes AOP por sus siglas en inglés.

Page 37: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

AOP• Programación Orientada a Agentes

• Nuevo paradigma computacional• Especialización de la OOP

• Elemento central: Agentes BDI

• Agente: creencias + capacidades + compromisos

Page 38: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

AOPCaracterística OOP AOP

Unidad Básica Objecto Agente

Unidad Básica de Estados

Sin restricciones Creencias, compromisos, …

Proceso de cálculo Métodos de Respuesta y Paso de Mensajes

Métodos de Respuesta y Paso de Mensajes

Tipo de mensajes Sin restricciones Informe, solicitud, oferta, promesa, declinación

Limitaciones en métodos

Ninguna Honestidad, Consistencia, …

Page 39: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

AOP• Modelado de Agentes

<<agent>> agent-name

Role

role 1, role 2, …, role n

role dynamic 1, role dynamic 2, …, role dynamic n

Organization

organization 1, organization 2, ., organization n

org dynamic 1, org dynamic 2, ., org dynamic n

Page 40: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Plataformas de Agentes• Existen muchas plataformas MAS como:

• Concordia• FIPA-OS• Zeus• Gossip• JATLite• Odyssey• Aglets• Voyager

Page 41: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

JADE• Java Agent DEvelopment Framework fue

desarrollado en Italia por Telecom (formalmente CSELT) junto con la Universidad de Parma en Julio de 1998.

• El objetivo fue crear una implementación concreta de la especificación FIPA.

• Actualmente es la plataforma de agentes más utilizada en el mundo.

Page 42: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

FIPA• Es un estándar para el manejo de

agentes para poderlos hacer interoperables define una arquitectura básica así como un lenguaje de agentes: ACL basado en KQML.

• En el caso de JADE se tiene la característica de manejar agentes móviles donde si no se le define “inteligencia” simplemente funcionan como un middleware de aplicaciones distribuidas.

Page 43: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

JADE• Es un marco de trabajo de software para

facilitar el desarrollo de sistemas multiagentes inteligentes e interoperables.

• Constituye un midelware para el desarrollo y un ambiente de ejecución para aplicaciones punto a punto que siguen el paradigma de agentes.

• Jade está basado en Java.

Page 44: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura de JADE

Page 45: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• Cada instancia del ambiente de ejecución

se llama Contenedor, dado que puede contener varios agentes.

• El conjunto de contenedores activos se llama Plataforma.

• Debe existir un contenedor denominado como principal (Main Container), en el cual todos los demás contenedores deben registrarse tan pronto inicien su ejecución en el sistema.

Page 46: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• El primer contenedor en iniciar en una

plataforma debe ser el principal.

• Los demás contenedores deben saber dónde localizar al principal (host:port)

• Si existe otro contenedor principal, entonces este constituye otra plataforma.

• Los contenedores puede registrarse en cualquiera de las plataformas disponibles.

Page 47: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• El contenedor principal maneja dos

agentes especiales:• AMS (Agent Management System)

– Provee el servicio de nombres y representa la autoridad en el sistema (crear o eliminar agentes en un contenedor remoto).

• DF (Directory facilitator)– Provee las páginas amarillas de servicios a

través del cuál un agente puede encontrar a otros que proveen los servicios que requiere para completar sus metas.

Page 48: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• JADE cuenta con una interfaz gráfica para

el manejo de los agentes.

• Para poder ejecutar JADE se requiere actualizar la variable de entorno classpath.

• En sistemas *X a través de export CLASSPATH=$CLASSPATH:/rutabibliotecas/jade.jar:/rutabibliotecas/otrosarchivos.jar

Page 49: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• En el caso de sistemas Windows puede

hacer a través de línea de comandos o a través de la opción de variable de entorno dentro de la configuración principal del equipo.

• Una vez instalada la máquina virtual de Java se ejecuta: java jade.Boot para correr en modo texto JADE o bien java jade.Boot –gui para correrlo en modo gráfico.

Page 50: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• Interfaz Gráfica RMA (Remote Agent

Management)

Page 51: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• Se cuenta con algunos agentes de

utilidad como el agente sniffer que permite rastrear el paso de mensajes entre los agentes.

Page 52: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• El agente instrospector permite visualizar

los mensajes y comportamientos de los agentes.

Page 53: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• El agente Dummy permite interactuar

con otros agentes mandando y recibiendo mensajes.

Page 54: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Arquitectura JADE• Para la comunicación se utiliza el

protocolo IIOP utilizando RMI (con compatibilidad nativa con CORBA).

• La comunicación se puede dar:– Entre agentes en el mismo contenedor– Entre agentes en distintos contenedores pero

en la misma máquina– Entre agentes en distintas máquinas

utilizando JADE– Entre agentes en distintas plataformas

Page 55: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ciclo de Vida de Agente en JADE

Page 56: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Modelo de Ejecución• JADE usa la abstracción de Behavior o

comportamiento para modelar las tareas que un agente debe realizar.

• JADE usa el modelo de concurrencia de hilo-por-agente en lugar de hilo-por-comportamiento para mantener pocos hilos en concurrencia.

Page 57: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Modelo de Ejecución• Cada agente posee un programador de

comportamientos que implementa una política “round-robin non-preemptive”.

• Se utilizan dos métodos para manejar la cola de comportamientos de agente: addBehaviour(Behaviour) y removeBehaviour(behaviour).

Page 58: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Hola Mundo en JADE• En el caso de contar con un IDE como

NetBeans se deberán incluir todos los archivos de biblioteca *.jar en el proyecto.

• Para poder ejecutarlo se necesitará modificar las propiedades del proyecto para que la clase principal sea jade.Boot y en los argumentos de ejecución la opción –gui seguida del nombre del agente y de la clase agente. Por ejemplo agente1:Comprador

Page 59: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Modelo de Ejecución

Page 60: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE• El proyecto en su totalidad se puede

bajar de la liga AgenteSimple.zip del sitio Web de la asignatura.

import jade.core.*;import javax.swing.*;public class AgenteSimple extends Agent { @Override public void setup(){ System.out.println("Ejemplo de Agente

Simple!!!");

Page 61: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE JOptionPane.showMessageDialog(null, "El

nombre del agente es:"+getAID().getName());

}

@Override public void takeDown(){ JOptionPane.showMessageDialog(null,

"Se murió el agente"); }}

Page 62: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE• Un agente de manera predeterminada no

recibe datos a través de su constructor por lo que debe pasárselos a través de línea de comandos.

import jade.core.Agent;public class Parametros extends Agent { private String titulo; @Overrideprotected void setup() { System.out.println("Prueba de

Page 63: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEObject[] args = getArguments();if (args != null && args.length > 0) { titulo = (String) args[0]; System.out.println("Comprando CD:"+titulo);} else { System.out.println("No se recibieron parámetros. El agente

morirá"); doDelete(); }}• @Override• protected void takeDown() { • System.out.println("El agente:"+getAID().getName()+" está

colgando los tennis");

• }• }

Page 64: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE@Overrideprotected void takeDown() { System.out.println("El

agente:"+getAID().getName()+" está colgando los tennis");

} }

Para ejecutarse sería algo así como: java jade.Boot –gui agente:MiClaseAgente(“Parametro1”, parametro2, etc…)

Page 65: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE• Aunque se pueden crear agentes a partir

de otra clase que por ejemplo tenga o no un método main() su funcionamiento no es el adecuado.

• Por ejemplo si quisiéramos que un agente tuviese una interfaz gráfica, sería el agente el cual debiera de crear la interfaz.

Page 66: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE• Otra de las características fundamentales

de los agentes es la programación de los comportamientos.

• Un comportamiento no es otra cosa que un método que ejecuta de manera constante (en forma concurrente un hilo).

• A continuación se muestra un ejemplo de definición de comportamiento de un agente con interfaz gráfica.

Page 67: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEimport jade.core.Agent;import jade.core.behaviours.*;import java.util.*;public class Comportamiento extends

Agent { private Hashtable catalogo; private Interfaz i; @Overrideprotected void setup() { setCatalogo(new Hashtable());

Page 68: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEi = new Interfaz(this); i.setVisible(true);}@Overrideprotected void takeDown() {i.dispose(); }public Hashtable getCatalogo() { return catalogo; }

Page 69: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEpublic void setCatalogo(Hashtable

catalogo) { this.catalogo = catalogo; }}

• En la interfaz se diseña una forma con un cuadro de texto y dos botones: uno para agregar el texto (implementa el comportamiento del agente) y otro para listar los datos.

Page 70: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE• La clase que define el comportamiento

tiene la siguiente estructura

class comportamientoAgregar extends Behaviour{

private String titulo; private int precio; private Hashtable catalogo; public comportamientoAgregar(String

t, int p, Hashtable h){ titulo = t;

Page 71: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEprecio = p; catalogo = h; } public void action() { catalogo.put(titulo, precio); } public boolean done() { return true; }}

Page 72: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE• En lo que respecta al botón de agregar en

la interfaz que manda llamar al comportamiento del agente se tiene:

public void actualizarCatalogo() { agente.addBehaviour(new

comportamientoAgregar(titulo.getText(), Integer.parseInt(precio.getText()), agente.getCatalogo()));

}

Page 73: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Comportamientos en JADE• Existen algunos tipos de

comportamientos básicos predefinidos para extender el uso de comportamientos:

• SimpleBehaviour: Es un comportamiento simple en el cual el usuario debe definir dentro del método onEnd() la condiciones sobre las cuales el comportamiento debe terminar.

Page 74: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Comportamientos en JADE• OneShotBehaviour: Es un

comportamiento simple que se ejecuta sólo una vez y no puede ser bloqueado. Por lo tanto el método done() siempre retorna verdadero. La función done() retorna verdadero o falso para definir si el comportamiento finalizó o no.

• CyclicBehaviour: Este comportamiento simple puede ser ejecutado infinitamente, por lo que el método done() siempre retorna falso.

Page 75: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Comportamientos en JADE• FSMBehaviour.- Es un comportamiento

compuesto que se ejecuta de acuerdo a una máquina de estado finito cuyos estados son definidos por el usuario.

• SequentialBehaviour.- Este comportamiento compuesto ejecuta secuencialmente varios subcomportamientos y termina cuando todos los subcomportamientos hayan terminado.6. ParallelBehaviour.- Es un comportamiento compuesto que ejecuta subcomportamientos concurrentemente y termina cuando una condici ́on particular en estos subcomportamien- tos se cumple.

Page 76: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Comportamientos en JADE• ParallelBehaviour: Es un comportamiento

compuesto que ejecuta subcomportamientos concurrentemente y termina cuando una condición particular en estos subcomportamientos se cumple.

• TickerBehaviour: es un comportamiquento que se hace cada x tiempo predeterminado.

Page 77: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Comportamientos en JADE• public class AgenteMonitor extends Agent

{ ...• addBehaviour(new

TickerBehaviour(this,2000) { public void onTick() {

• //Instrucciones de monitoreo• System.out.println(“ya casi es hora de

salir”)• }} }); ...

Page 78: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Clonación• Los agentes se pueden clonar, para ello

se deberán redefinir los métodos afterClone y beforeClone para definir funcionalidades básicas.

• Los agentes se pueden crear en tiempo de ejecución para ello se deberá importar la clase jade.core.RunTime.

• Runtime rt = Runtime.instance();

Page 79: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

ClonaciónAgentContainer ac =

getContainerController();

AgentController agente1= ac.createNewAgent("AgenteRecolector",”paquete.X",args);

Agente1.start();

Page 80: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ontologías en JADE• Se pueden definir ontologías para un

manejo homogéneo del vocabulario de los agentes.

• Las ontologías se basan en jade.content.onto.Ontologyy deben de definir tres dominios de conceptos: PredicateSchema, AgentActionSchema y ConceptSchema incluidas en el paquete jade.content.schema.

Page 81: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de Ontologíapackage conexionOntology;import jade.content.onto.*;import jade.content.schema.*;public class conexionOntology extends

Ontology {public static final String ONTOLOGY_NAME

= "ontología de conexión”; public static final String URL_ = "Url”;public static final String URL_IP = "ip";public static final String URL_PUERTO =

Page 82: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de Ontología"puerto";public static final String CONEXIONA =

"ConexionA";public static final String CONEXIONA_URL =

"url";public static final String CONECTA =

"Conecta";public static final String CONECTA_URL =

"url”; private static Ontology laInstancia = new

conexionOntology();

Page 83: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de Ontologíapublic static Ontology getInstance() {return

laInstancia;} private conexionOntology() {super(ONTOLOGY_NAME,

BasicOntology.getInstance());try {add(new ConceptSchema(URL_), Url.class);add(new PredicateSchema(CONEXIONA),

ConexionA.class);add(new AgentActionSchema(CONECTA),

Page 84: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de OntologíaConecta.class); URL_ConceptSchema cs = (ConceptSchema)

getSchema(URL_);cs.add(URL_IP, (PrimitiveSchema)

getSchema(BasicOntology.STRING),ObjectSchema.OPTIONAL);

cs.add(URL_PUERTO, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));

PredicateSchema ps = (PredicateSchema) getSchema(CONEXIONA);

Page 85: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de Ontologíaps.add(CONEXIONA_URL, (ConceptSchema)

getSchema(URL_));AgentActionSchema as =

(AgentActionSchema) getSchema(CONECTA);

as.add(CONECTA_URL, (ConceptSchema) getSchema(URL_));

}catch (OntologyException oe) {oe.printStackTrace();

}}

Page 86: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Concepto de Ontologíapackage conexionOntology;import jade.content.Concept;public class Url implements Concept {private String ip;private int puerto;public String getIp() {return ip;}public void setIp(String i) {ip = i;}public int getPuerto() {return puerto;}public void setPuerto(int p) {puerto = p;}}

Page 87: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo deOntologías package conexionOntology;import jade.content.Predicate;public class ConexionA implements

Predicate {private Url url;public Url getUrl() {return url;}public void setUrl(Url u) {url = u;}}

Page 88: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Ejemplo de Ontologíaspackage conexionOntology;import jade.content.AgentAction;public class Conecta implements

AgentAction {private Url url;public Url getUrl() {return url;}public void setUrl(Url u) {url = u;}}

Page 89: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE• Como puede observarse en algunos casos

da lo mismo implementar un comportamiento que definir un método cuando el comportamiento no es inteligente.

• La parte más interesante de los sistemas de agentes móviles es la comunicación entre los agentes. A continuación se muestra un ejemplo de cómo implementar el envío de mensajes

Page 90: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEimport jade.core.*;import jade.lang.acl.*;import java.io.*;public class Mensajero extends Agent { private String nombre; private String contenido; public Mensajero(){ nombre = ""; contenido = ""; }

Page 91: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE@Override public void setup() { ACLMessage msg = new

ACLMessage(ACLMessage.INFORM); BufferedReader bf = new

BufferedReader(new InputStreamReader(System.in));

System.out.println("Introduce el nombre del agente a enviar mensaje?");

try { nombre = bf.readLine();

Page 92: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE} catch (IOException ioe) { ioe.printStackTrace(); } msg.addReceiver(new AID(nombre,

AID.ISLOCALNAME)); msg.setLanguage("Español"); System.out.println("Introduce el

contenido del mensaje?"); try { contenido = bf.readLine();

Page 93: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE} catch (IOException ioe){ ioe.printStackTrace(); } msg.setContent(contenido); send(msg); System.out.println("Contenido

Enviado"); }}

Page 94: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEimport jade.core.*;import jade.lang.acl.*;public class ReceptorRespuesta extends

Agent{ @Override public void setup(){ //receive es no bloueante... //ACLMessage msg = receive(); //Hasta que llegue un mensaje aquí se

queda

Page 95: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEACLMessage msg = blockingReceive(); if (msg != null) { System.out.println("Llego

mensaje..."); String nombre =

msg.getSender().getLocalName(); System.out.println("Mensaje

enviado por:"+nombre); String contenido =

msg.getContent();

Page 96: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADESystem.out.println("El contenido del mensaje

es:"+contenido); ACLMessage reply =

msg.createReply();

reply.setPerformative(ACLMessage.PROPOSE);

String respuesta = String.valueOf(Math.random()*100);

System.out.println("La respuesta a enviar es:"+respuesta);

reply.setContent(""+respuesta);

Page 97: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEsend(reply); } else { System.out.println("No llegó

mensaje"); } }}

Page 98: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEimport jade.core.*;import jade.domain.*;import

jade.domain.FIPAAgentManagement.*;public class Registro extends Agent{ @Override public void setup(){ System.out.println("Registrando

Agente en la sección amarilla..."); DFAgentDescription dfd = new

DFAgentDescription();

Page 99: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADEdfd.setName(getAID()); ServiceDescription

sd = new ServiceDescription(); sd.setType("Venta-Libros"); sd.setName("Agente-Vendedor"); dfd.addServices(sd); try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace(); } }

Page 100: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Programación en JADE@Override protected void takeDown() { try { DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); } System.out.println("Desregistrando

servicios en el DF"); }}

Page 101: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Prácticas• Agente para Transacciones de Comercio

Electrónico (“carrito de compras”)

• Un MAS que permita tener un agente para tomar pedido, recolectar pedido, cancelar pedido.

• Un buscador Web de páginas semánticas en dispositivos móviles

Page 102: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Bibliografía

Winston, P. (1992) Artificial Intelligence, 3ra. Edición, Addison-Wesley.

• Fabio Bellifemine, Giovanni Caire, Agostino Poggi, Giovanni Rimassa, 2008, JADE: A software framework for developing multi-agent applications. Lessons learned, Information and Software Technology, 50(1): 10-21. http://jade.tilab.com/

Page 103: Agentes Inteligentes M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

¿Preguntas, dudas y comentarios?