Agentes Inteligentes
M.C. Juan Carlos Olivares Rojas
[email protected]
[email protected]
@jcolivares
http://antares.itmorelia.edu.mx/~jcolivar
Febrero, 2010
Competencia Específica
• Conoce los fundamentos teóricos de la teoría
de agentes y poderla aplicar en la práctica.
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.
Arquitectura de Agentes
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.
Agentes Inteligentes
Aplicación de los Agentes
Coordinación y
Sincronización
Robótica Móvil
Robótica de
Manipuladores
Inteligencia y
Conocimiento
Agentes
Procesamiento de
Imágenes
Patrones
Redes Neuronales
Agentes Inteligentes
• Se trata de emular la inteligencia natural
Aprendizaje
Memoria
Abstracción
Razonamiento
Medio ambiente
Solución de problemas
Percepción
Imaginación
Actuación
Libre albedrio
Conciencia
Creatividad
Áreas de la Teoría de Agentes
Ingeniería de
software
IA Distribuida
NOCION DE
AGENCIA
Sistemas
distribuidos y
redes
POO
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.
“Sensores Humanos”
Neuronas
Sonido
Conexiones
Color
Sabor
Olor
Tersura
“Sensores Humanos”
• Sonido 102 Hz, 104 Hz
104 Hz
• Color 1015 Hz
102 Hz
• Sabor ¿es una onda?
• Olor ¿es una reacción química?
• Tersura ¿es una onda?
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.
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.
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.
MAS
• Se considera que para que un agente
inteligente esté realmente completo se necesita
de las siguientes actitudes:
•
•
•
•
•
Conocimientos
Creencias
Intenciones
Obligaciones
Emociones
MAS
• En los sistemas multiagente se hace
sumamente necesario la movilidad. Existen
diversas clasificaciones de MAS:
COOPERATIVOS
COLABORATIVOS/
APRENDEN
AGENTES INTELIGENTES
COLABORATIVOS
AGENTES DE
INTERFAZ
AUTONOMOS
APRENDEN
Actividad
• Para un Taxi con piloto automático (taximetro
reemplazado por un agente inteligente )
• Determine lo siguiente:
•
•
•
•
Percepciones
Acciones
Metas
Ambiente
Ejemplo de MAS
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.
Cómputo Ubicuo y AMI
Inteligencia Ambiental
¿Qué se necesita para AMI?
¿Qué? WHAT
¿Donde?
WHERE
Realizar servicios solos
Consciencia
del
dispositivo
Realizar servicios
coordinados
¿Quién? WHO
¿Cómo? HOW
¿Cuándo? WHEN
Context-Aware y SOA
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.
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.
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.
Ejercicio de Ambientes
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.
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.
Agente Reactivo (Reflejo)
Agentes bien informados
Agentes basados en Metas
Agentes basados en Utilidad
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.
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
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.
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.
AOP
• Programación Orientada a Agentes
• Nuevo paradigma computacional
• Especialización de la OOP
• Elemento central: Agentes BDI
• Agente:
creencias
compromisos
+
capacidades
+
AOP
Característica
Unidad Básica
OOP
Objecto
Unidad Básica de
Estados
Sin restricciones
Creencias,
compromisos, …
Proceso de cálculo
Métodos de
Respuesta y Paso
de Mensajes
Sin restricciones
Métodos de
Respuesta y Paso
de Mensajes
Informe, solicitud,
oferta, promesa,
declinación
Honestidad,
Consistencia, …
Tipo de mensajes
Limitaciones en
métodos
Ninguna
AOP
Agente
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
Plataformas de Agentes
• Existen muchas plataformas MAS como:
•
•
•
•
•
•
•
•
Concordia
FIPA-OS
Zeus
Gossip
JATLite
Odyssey
Aglets
Voyager
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.
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.
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.
Arquitectura de JADE
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.
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
cualquiera de las plataformas disponibles.
en
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.
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/ja
de.jar:/rutabibliotecas/otrosarchivos.jar
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.
Arquitectura JADE
• Interfaz
Gráfica
Management)
RMA
(Remote
Agent
Arquitectura JADE
• Se cuenta con algunos agentes de utilidad
como el agente sniffer que permite rastrear el
paso de mensajes entre los agentes.
Arquitectura JADE
• El agente instrospector permite visualizar los
mensajes y comportamientos de los agentes.
Arquitectura JADE
• El agente Dummy permite interactuar con otros
agentes mandando y recibiendo mensajes.
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
Ciclo de Vida de Agente en JADE
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 hilopor-agente en lugar de hilo-por-comportamiento
para mantener pocos hilos en concurrencia.
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).
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
Modelo de Ejecución
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!!!");
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");
}
}
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;
@Override
protected void setup() {
System.out.println("Prueba de
Programación en JADE
Object[] 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();
}
}
Programación en JADE
@Override
protected 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”,
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.
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.
Programación en JADE
import jade.core.Agent;
import jade.core.behaviours.*;
import java.util.*;
public class Comportamiento extends Agent {
private Hashtable catalogo;
private Interfaz i;
@Override
protected void setup() {
setCatalogo(new Hashtable());
Programación en JADE
i = new Interfaz(this);
i.setVisible(true);
}
@Override
protected void takeDown() {
i.dispose();
}
public Hashtable getCatalogo() {
return catalogo;
}
Programación en JADE
public 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.
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;
Programación en JADE
precio = p;
catalogo = h;
}
public void action() {
catalogo.put(titulo, precio);
}
public boolean done() {
return true;
}
}
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()));
}
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.
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.
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
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.
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”)
• }} }); ...
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();
Clonación
AgentContainer ac = getContainerController();
AgentController
agente1=
ac.createNewAgent("AgenteRecolector",”paque
te.X",args);
Agente1.start();
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.
Ejemplo de Ontología
package 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 =
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();
Ejemplo de Ontología
public 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),
Ejemplo de Ontología
Conecta.class); U
RL_ConceptSchema cs = (ConceptSchema)
getSchema(URL_);
cs.add(URL_IP,
(PrimitiveSchema)
getSchema(BasicOntology.STRING),ObjectSch
ema.OPTIONAL);
cs.add(URL_PUERTO,
(PrimitiveSchema)
getSchema(BasicOntology.INTEGER));
PredicateSchema ps = (PredicateSchema)
getSchema(CONEXIONA);
Ejemplo de Ontología
ps.add(CONEXIONA_URL,
(ConceptSchema)
getSchema(URL_));
AgentActionSchema as = (AgentActionSchema)
getSchema(CONECTA);
as.add(CONECTA_URL,
(ConceptSchema)
getSchema(URL_));
}catch
(OntologyException
oe)
{oe.printStackTrace();
}
}
Concepto de Ontología
package 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;}}
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;}}
Ejemplo de Ontologías
package 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;
}}
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
Programación en JADE
import jade.core.*;
import jade.lang.acl.*;
import java.io.*;
public class Mensajero extends Agent {
private String nombre;
private String contenido;
public Mensajero(){
nombre = "";
contenido = "";
}
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();
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();
Programación en JADE
} catch (IOException ioe){
ioe.printStackTrace();
}
msg.setContent(contenido);
send(msg);
System.out.println("Contenido Enviado");
}
}
Programación en JADE
import 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
Programación en JADE
ACLMessage 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();
Programación en JADE
System.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);
Programación en JADE
send(reply);
}
else {
System.out.println("No llegó mensaje");
}
}
}
Programación en JADE
import 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();
Programación en JADE
dfd.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();
}}
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");
}}
Prácticas
• Agente para Transacciones de
Electrónico (“carrito de compras”)
Comercio
• 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
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 multiagent
applications.
Lessons
learned,
Information and Software Technology, 50(1):
10-21. http://jade.tilab.com/
¿Preguntas, dudas y
comentarios?
Descargar

Sistemas Operativos II