sábado, 17 de noviembre de 2012

Practica 4 - Sistema Multi Agente "ContractNet"

Descripción.



Un sistema multiagente (SMA) es un sistema compuesto por múltiples agentes inteligentes que interactúan entre ellos. Los sistemas multiagente pueden ser utilizados para resolver problemas que son difíciles o imposibles de resolver para un agente individual o un sistema monolítico.

Características.


Los agentes en un sistema multiagente tienen varias características importantes:
  • Autonomía: los agentes son al menos parcialmente autónomos.
  • Visión local: ningún agente tiene una visión global del sistema, o el sistema es demasiado complejo para un agente para hacer un uso práctico de esos conocimientos.
  • Descentralización: no hay un agente de control designado (o el sistema se reduciría a un sistema monolítico).

Normalmente la investigación de sistemas multiagente se refiere a agentes de software. Sin embargo, los agentes en un sistema multiagente también podrían ser robots, seres humanos o equipos humanos.

Problematica.


Utilizando la metodología de Contract Net, daremos solución a un grupo de "personas" que requieren enviar un paquete, para esto contaran con una cierta cantidad de empresas de mensajería localizadas a distancias variadas de cada una de las personas, que manejan precios y tiempos de entrega distintos lo cual le dará a la persona una mejor opción para el envio de su paquete.


"Lluvia de ideas"



Desarrolo.


Lo primero que el equipo decidió fue darle un orden de importancia a las necesidades del agente contratante, las cuales fueron:
  1. Cercanía de la oficina de correo.
  2. Tiempo de entrega del paquete.
  3. Mejor oferta de acuerdo a un "presupuesto".
Cada oficina de correo (cuatro en total) es un agente que estará "ofertando" cada uno de los puntos anteriores en el orden descrito.A todos los agentes se les asignó una posición (x,y) para a partir de la distancia euclidiana determinar las oficinas más cercanas; el tiempo de entrega del paquete se determinó en días y la oferta de acuerdo al presupuesto está dada en pesos.

Como nota, los datos utilizados para la posición de el contratante están dados de manera aleatoria al igual que el tiempo de entrega y los diferentes presupuestos, aunque cabe aclarar que son solo cifras significativas y no tienen parecido con la realidad.

Código.


El código mostrado a continuación es la clase de los agentes de las oficinas de correo.


El siguiente código es la clase que simula el agente contratante(cliente).




Esta ultima clase es la que se encarga de filtrar las ofertas, se puede decir que es la parte inteligente del agente contratante.



El código completo se puede obtener aquí.

Resultado.

Los resultados de esta practica fueron satisfactorios, ya que como se puede observar en el video de la ejecución del programa, éste realiza su cometido y nos da la mejor oferta de los agentes. 

Aún y cuando los resultados fueron buenos,el equipo cree que se pudo haber hecho mejor debido a que en un principio se había decidido realizar la práctica con python y SPADE pero por falta de tiempo se decidió utilizar simplemente java y tratar de hacer una implementación muy sencilla y casi "hardcodeada" de los sistemas multiagentes.

Video.




Conclusiones.

El uso de sistemas multiagente, puede ser de gran ayuda en la practica ya que permite obtener una aproximación a mejores resultados en base a ofertas y demandas tanto por parte de empresas como de clientes.

En el caso de ContractNet es incluso posible llevarlo a la practica profesional o laboral, siendo de mucha ayuda en la oferta de productos como por ejemplo, realizando cotizaciones de seguros de auto de varias compañías, dando las mejores opciones al cliente.

Podría ser ventajoso el uso de estas aplicaciones en robots que, en base a comunicación entre ellos, tomen la mejor opción para realizar algún tipo de tarea.





domingo, 4 de noviembre de 2012

Reportes de Clase



Unidad 1: Algoritmos Adaptativos


El código simula un ventilador que funciona en un rango de 16º como minimo para el nivel mas frio y 35º como maximo para el nivel mas caliente, se auto-ajusta con el paso de las horas en 1 dia , teniendo en cuenta que la hora con la temperatura mas alta es a las 2:00 pm .






Parte del Código:






Unidad 2: Red Compleja

Red compleja representada por su matriz de adyacencias y genera la distribución de grado y la densidad de la red.







Parte del Código:



Grafica de distribución de grado




Unidad 3: Perceptron

 Para este reporte se modifico el código original escrito para un "nand" y se cambio sus principales variables: los pesos iniciales, la tasa de aprendizaje y el umbral. Para que realice la función de un "and" como se muestra a continuacion:


código original:



código modificado:

Unidad 4: Plataformas para sistemas multiagentes

JADE
Java Agent DEvelopment Framework, o JADE, es una plataforma software para el desarrollo de agentes, implementada en JavaLa plataforma JADE soporta la coordinación de múltiples agentes FIPA y proporciona una implementación estándar del lenguaje de comunicación FIPA-ACL.

Programar un agente JADE consiste en:
  • Definir una clase Java que representa al agente (la cual debe heredar de la clase jade.core.Agent).
  • Implementar los comportamientos que va a manisfestar.

Un agente JADE cumple las siguientes características:

  • Tiene un nombre único en el entorno de ejecución.
  • Se implementa como un único hilo de ejecución (single-threaded).
  • Tiene un metodo de inicio (setup) y otro de fin (takeDown).
  • En su implementación se define una clase interna por cada uno de los comportamientos asociados al agente. 


SPADE



("Smart Python multi-Agent Development Environment") es una plataforma libre de sistemas multi-agente desarrollada en Python y basada en la tecnología de mensajería instantánea XMPP

Algunas de las características más notables de la plataforma SPADE son: soporte de organizaciones virtuales, notificación de presencia, compatible con FIPA e independencia del lenguaje y la plataforma.


Las principales características de la plataforma SPADE son:
  • Soporte del estándar FIPA mediante el protocolo de mensajería instantánea XMPP (Agentes AMS y DF incluídos)
  • Notificación de presencia entre agentes.
  • Organizaciones Virtuales basadas en el protocolo de multi-conferencia MUC.
  • Comunicación P2P entre agentes.
  • Invocación remota de servicios entre agentes usando el estándar XML-RPC.
  • Procesadores de lenguajes de contenido en SL0 y RDF.
  • Modelo de agente BDI basado en Conocimiento, Deseos e Intenciones.
  • Modelo de comportamientos: Cíclicos, Periódicos, Timeout, una ejecución, máquina de estados finita y basado en eventos.
  • Soporte de comunicación con otras plataformas mediante diversos protocolos de transporte: JADE (via HTTP o XMPP) y SIMBA.
  • Publicación y subscripción de eventos mediante el estándar PubSub.
  • Interfaz gráfica basada en web.



MADkit



MadKit es una plataforma para la implementación de Sistemas Multi-Agentes. Esta basada sobre el modelo AGR de Ferber y Gutknecht. AGR en un modelo organizacional basado sobre los principios de Agente, Grupo y Rol.

Es una plataforma multi-agente para desarrollar y ejecutar aplicaciones basadas en un paradigma orientado a la organización. Este paradigma utiliza a los grupos y los roles como base para construir aplicaciones complejas. MADKit no está asociado a ninguna arquitectura de agentes en particular, permitiendo a los usuarios de esta plataforma implementar libremente sus propias arquitecturas.



ROBOcup





La Robo Copa es una iniciativa internacional para promover los avances en Inteligencia Artificial y Robótica, proveyendo un problema estándar para realizar investigación: el fútbol soccer. Para lograr que un grupo de robots sea capaz de jugar al fútbol en forma autónoma, inteligente y coordinada se requiere desarrollar e integrar una amplia gama de técnicas y algoritmos de Inteligencia Artificial.

El problema de la Robo Copa es sumamente interesante y complejo ya que hay múltiples robots moviéndose a gran velocidad en tiempo real en un ambiente altamente dinámico e incierto. Algunas de las técnicas de Inteligencia Artificial utilizadas son por ejemplo: el diseño de agentes autónomos, algoritmos de coordinación y colaboración multiagente, de razonamiento y aprendizaje automático en tiempo real y robótica entre muchas otras. La Robo Copa no sólo tiene que ver con la investigación y desarrollo del “hardware” de los robots, también tiene que ver con el “software” de su inteligencia, usando algoritmos y técnicas de Inteligencia Artificial y Sistemas Inteligentes.

Existen diferentes ligas en la Robo Copa dependiendo de las características de los robots o agentes de software y los partidos a jugar:

Liga de Simulación

En esta liga dos equipos de 11 agentes de software juegan fútbol en un campo virtual dentro de una computadora. E

Liga de Robots Pequeños (f-180)

En esta liga juegan equipo de 5 robots de no más de 18 cm. de diámetro en una cancha un poco más grande que una mesa de ping-pong. 

Liga de Robots Medianos (f-2000)

En esta liga juegan equipos de 4 robots con un balón de fútbol en un campo de 12x8 metros. El control de los robots es totalmente distribuido, todos los sensores de los robots deben ir a bordo y pueden utilizar comunicación inalámbrica.

Loga de Robots en 4 patas (Aibo)

En esta liga juegan equipos de 4 robots AIBO (unos perritos robóticos fabricados por Sony) en una cancha de 3x5 metros. Los robots también usan red inalámbrica para comunicarse. 

Liga Humanoides

La liga de humanoides es una de las ligas que mas ha progresado y la mas cercana hacia el objetivo del 2050 de RoboCup. En esta liga, robots autónomos con un cuerpo similar al humano así como percepciones similares a las humanas, juegan futbol entre ellos. Los robots son divididos en dos categorías de tamaño: "KidSize" (30-60 cm de alto) y "TeenSize" (100-160 cm de alto). 

Liga de Plataforma Estándar (Nao)

En esta liga todos los equipos utilizan robots idénticos (Nao robot). Por tal motivo los equipos se concentran únicamnete en el desarrollo del programa controlador del robot. 




Bibliografia: