Curso UIMP: Taller de Jade/Jadex/Protege


En la tercera y penúltima sesión del taller de programación de sistemas multiagente con información dependiente del contexto, se ha constatado que el perfil de los alumnos que participamos en el curso no nos permite avanzar en el taller como estaba en el programa. La idea original que pasaba por programar una serie de agentes, definir una ontología para la representación del contexto e integrar todo ello en la infraestructura de JADE/JADEX se ha quedado en agua de borrajas. Ahora nos conformamos con programar uno o dos agentes (el de mercado y un cliente) y ver cómo es la estructura y la técnica de programación de estas entidades software inteligentes.

El profesor repasó las propuestas de proyecto de mercado que le propusimos e hizo una pequeña síntesis de las mismas proponiendo un sistema de seis agentes compuestos por: mercado, cesta, proveedor-pasillo (2), cliente (2) La responsabilidad del agente mercado es registrar a los nuevos clientes y obtener una primera información de contexto de los mismos (deseos y preferencias) además de informar a los proveedores de que los clientes están en su pasillo. La responsabilidad del agente cesta es mantener un registro de los productos que van adquiriendo los clientes que se encuentran en el mercado e informar a los proveedores de la lista de productos que un agente cliente lleva a petición de dichos proveedores. La responsabilidad de los proveedores es informar a los clientes que pasan por sus pasillos de las ofertas de productos que más se ajustas a sus necesidades (según preferencias, deseos, cesta que llevan, precio, disponibilidad, etc. es decir, información de contexto), recibir las peticiones de compra de los clientes y completar las transacciones. La responsabilidad el agente cliente es informar de sus deseos y preferencias al agente mercado al registrarse en su entrada al mercado y formular peticiones de productos completando las transacciones de los mismos.

NOTA: los agentes mercado y cesto representan a sensores del entorno que recogen la información de contexto de los clientes incluyendo su posición en los pasillos del mercado, la cual es utilizada por los agentes proveedores para iniciar sus transacciones de venta de productos adecuados a las necesidades y expectativas de los clientes. Mientras que el agente mercado es activo e informa a los proveedores, el agente cesta es pasivo y debe de ser consultado por el agente proveedor interesado.

Se identificaron los conceptos, atributos, relaciones y acciones de los agentes a implementar en la ontología del mercado. Se presentaron los casos de uso y escenarios posibles:

(1) Cuando un cliente entra al mercado se registra mandando un mensaje informativo (INFORM) al agente mercado con sus deseos y preferencias (información de contexto) en cuanto a tipo de comida que pretende preparar (de familia, de negocios, de pareja), preferencias en tipo de alimentos (verdura, legumbre, carne, pescado, fruta), tipo de bebida (vino blanco, vino tinto, vino rosado, vino espumoso, refresco, zumo), número de comensales, fecha del evento, rango de presupuesto (mínimo, máximo)

(2) El agente mercado informa (INFORM) al agente proveedor de que un cliente se encuentra en su pasillo y le proporciona información de contexto del mismo (posición implícita, identificación del cliente, deseos y preferencias)

(3) El proveedor-pasillo puede consultar (REQUEST) al agente cesta sobre la información de contexto de los productos que el cliente ya adquirido para completar la oferta (p.e bebida que va mejor con el tipo de comida que ha adquirido, esto es, vino blanco con pescado, etc.)

(4) El proveedor propondrá al cliente (PROPOSE) productos que se ajustan a sus necesidades (p.e según el tipo de comida que quiere preparar, cena en pareja, … en función del perfil del cliente!)

(5) El cliente puede aceptar (ACEPT) o rechazar (REJECT) las propuestas de los proveedores en función de su criterio propio (peso de sus preferencias, precio, marca, etc.) En caso se aceptar se completará una transacción de compra (ACCIÓN) y el ¿proveedor/cliente? informará al agente cesta (INFORM) del producto adquirido por el cliente (identificador del cliente)

NOTA: Si la fecha del evento está muy cercana y la comida es de familia o de pareja se pueden presentar ofertas de alimentos precocinados que faciliten al cliente el éxito sin mucho esfuerzo … aunque tendrá un precio :)

Así pues se tienen conceptos como: oferta, producto, preferencias, tipo de comida, tipo de alimento, tipo de bebida, pasillo. Se tienen también atributos como marca, precio, cantidad (producto); caducidad (oferta); …

Se hizo una implementación con un editor de textos (bloc de notas) de un agente que se registra en el servicio de páginas amarillas del entorno Jade (que servirá como modelo del agente cliente) y otro que consulta la información que se encuentra en dicho registro (modelo de agente proveedor)

También nos mostró la herramienta protege para la construcción de ontologías y la exportación de dichas ontologías a clases java utilizables por los agentes en el entorno Jade. Esto lo hace un plug-in desarrollado para protege: Ontology Bean Generator (para encontrarlo hay que buscar en el Google por Simple Jade Abstract Ontology)

Se utilizaron las siguientes referencias para enseñar técnicas de programación de agentes:

Building Multi-Agent Systems with JADE. JADE Tutorial and Primer

Jean Vaucher and Ambroise Ncho
Dep. d’informatique. Université de Montréal
September 2003. updated april 2004

Y para la construcción de la ontología, el capítulo 7 de la anterior referencia.

El profesor además nos trajo el libro que utiliza él como referencia para la programación de agentes:

Developing Multi-Agent Systems with JADE

Series: Wiley Series in Agent Technology
Published Online: 20 Feb 2007
Author(s): Fabio Bellifemine, Giovanni Caire, Dominic Greenwood
Series Editor(s): Michael Wooldridge
Print ISBN: 9780470057476 Online ISBN: 9780470058411
Copyright © 2007 John Wiley & Sons, Ltd

Un comentario en “Curso UIMP: Taller de Jade/Jadex/Protege

  1. Este es el ejercicio del agente que se registra en el servicio de páginas amarillas del entorno de ejecución de agentes de JADE:


    import jade.core.Agent;

    import jade.domain.FIPAAgentManagement.ServiceDescription;

    import jade.domain.FIPAAgentManagement.DFAgentDescription;

    import jade.domain.DFService;

    import jade.domain.FIPAException;

    public class holamundo2 extends Agent

    {

    protected void setup()

    {

    ServiceDescription sd= new ServiceDescription();

    sd.setName("Congelados");

    sd.setType("Pasillo");

    DFAgentDescription dfd= new DFAgentDescription();

    dfd.setName(getAID());

    dfd.addServices(sd);

    try {

    DFService.register(this, dfd);

    }

    catch (FIPAException fe) { fe.printStackTrace(); }

    }

    }

    que nos servirá de plantilla para el agente proveedor/pasillo de nuestra aplicación.

    Luego hemos programado un agente que busca en las páginas amarillas otros agentes para obtener sus servicios:


    import jade.core.Agent;

    import jade.core.AID;

    import jade.domain.FIPAAgentManagement.ServiceDescription;

    import jade.domain.FIPAAgentManagement.DFAgentDescription;

    import jade.domain.DFService;

    import jade.domain.FIPAException;

    public class Cliente extends Agent

    {

    private AID [] supermercados;

    protected void setup()

    {

    DFAgentDescription template = new DFAgentDescription();

    ServiceDescription sd= new ServiceDescription();

    sd.setType("Supermercado");

    template.addServices(sd);

    try {

    wait(1000);

    DFAgentDescription[] result = DFService.search(this, template);

    supermercados = new AID[result.length];

    System.out.println(" hemos encontrado los siguientes pasillos de congelados: ");

    for (int i = 0; i < result.length; ++i) {

    supermercados[i] = result[i].getName();

    System.out.println(supermercados[i].getName());

    }

    }

    catch (Exception fe) { fe.printStackTrace(); }

    }

    }

    que nos servirá de plantilla para crear nuestro agente cliente (que deberá buscar por los “pasillos” los productos que necesita)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s