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:
- Cercanía de la oficina de correo.
- Tiempo de entrega del paquete.
- 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.
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.