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.
Un sistema multiagente es un sistema distribuido en el cual los nodos o elementos son sistemas que utilizan inteligencia artificial donde la conducta combinada de sus elementos produce un resultado en conjunto inteligente.
Los ámbitos en los que la investigación de sistemas multiagente puede ofrecer un enfoque adecuado incluyen el comercio en línea,[1] la respuesta a desastres[2] y el modelado de estructuras sociales.[3]
El estudio de Sistemas Multiagentes se inició hace cerca de 20 años, en el ámbito de la Inteligencia Artificial Distribuida (Distributed Artificial Intelligence - DAI). La DAI es un subcampo de investigación de la Inteligencia Artificial (AI). La DAI estudia el comportamiento inteligente de grupo que se deriva a partir de la cooperación de entidades llamadas agentes. Estudia como un grupo de módulos cooperan para dividir y compartir el conocimiento del problema y como se desarrolla la solución. La DAI se centra en el comportamiento global, con un comportamiento prefijado de los agentes. Estudia las técnicas y el conocimiento necesarios para la coordinación y distribución del conocimiento y las acciones en un entorno multiagente.
Un agente es un sistema informático, situado en algún entorno, dentro del cual actúa de forma autónoma y flexible para así cumplir sus objetivos.
El dominio del sistema multiagente o de inteligencia artificial distribuida es una ciencia y una técnica que trata con los sistemas de inteligencia artificial en red.
El bloque fundamental de construcción de un sistema multiagente, como es de esperarse, son los agentes.
Aunque no existe una definición formal y precisa de lo que es un agente, éstos son por lo general vistos como entidades inteligentes, equivalentes en términos computacionales a un proceso del sistema operativo, que existen dentro de cierto contexto o ambiente, y que se pueden comunicar a través de un mecanismo de comunicación interproceso, usualmente un sistema de red, utilizando protocolos de comunicación.
En cierto modo, un sistema multiagente es un sistema distribuido en el cual los nodos o elementos son sistemas de inteligencia artificial, o bien un sistema distribuido donde la conducta combinada de dichos elementos produce un resultado en conjunto inteligente.
Hay que notar que los agentes no son necesariamente inteligentes. Existen como en todo el resto del dominio de la inteligencia artificial, dos enfoques para construir sistemas multiagentes:
Por otra parte, los entornos de los agentes pueden organizarse según propiedades como la accesibilidad (si es posible reunir información completa sobre el entorno), el determinismo (si una acción causa un efecto definido), la dinámica (cuántas entidades influyen en el entorno en un momento dado), la discreción (si el número de acciones posibles en el entorno es finito), la episodicidad (si las acciones del agente en determinados periodos de tiempo influyen en otros periodos),[4] y la dimensionalidad (si las características espaciales son factores importantes del entorno y el agente tiene en cuenta el espacio en su toma de decisiones)[5].
Las acciones de los agentes suelen estar mediadas por un middleware adecuado. Este middleware ofrece una abstracción de diseño de primera clase para los sistemas multiagente, proporcionando medios para gobernar el acceso a los recursos y la coordinación de los agentes[6].
Los agentes en un sistema multiagente tienen varias características importantes:[7]
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,[9] seres humanos o equipos humanos.
Conocimiento de la situación o entorno: Uso de sensores y actuadores para interactuar con el ambiente. Las reacciones del agente podrán depender de los estímulos de su entorno. Se debe considerar el entorno de un agente para diseñar sus posibles entradas y salidas.
Autonomía: Capacidad de reaccionar al entorno según un estado interno, sin necesidad que sea dependiente de la intervención de algún agente externo o de algún usuario.
Capacidad inferencial: La habilidad de un agente de trabajar en metas abstractas deduciendo una observación al generalizar la información que recibe.
Reactivo: Percibe la condición del ambiente y responde a ella en un tiempo adecuado.
Proactivo: Los agentes no deben actuar sólo guiados por los estímulos del entorno, deben decidir si actuar o realizar alguna acción que permita o incite el lograr sus objetivos.
Sociabilidad: Un agente es capaz de interactuar con otros agentes para lograr un objetivo. Pueden compartir su información y ayudar a otros agentes para resolver un problema. Los agentes aprenden de la experiencia de otras entidades sean personas, otros agentes o controles estadísticos.
Los sistemas multiagente pueden manifestar autoorganización, así como auto-dirección y otros paradigmas de control y comportamientos complejos relacionados, incluso cuando las estrategias individuales de todos sus agentes son simples.
Cuando los agentes pueden compartir su conocimiento usando cualquier lenguaje acordado, dentro de los límites del protocolo de comunicación del sistema, el enfoque puede conducir a una mejora común. Ejemplo de lenguajes son Knowledge Query and Manipulation Language (KQML) o Agent Communication Language (ACL) de la FIPA.
El estudio de los sistemas multiagente está "interesado en el desarrollo y análisis de resoluciones a problemas sofisticados de IA y arquitecturas de control tanto para sistemas con un único agente como sistemas multiagente”.[11] Los temas de investigación en SMA’s son:
Si bien sistemas multiagente ad hoc son a menudo creados desde cero por investigadores y desarrolladores, algunos frameworks han surgido aplicando estándares comunes (tales como las plataformas de sistemas de agentes y lenguajes de comunicación de FIPA). Estos frameworks ahorran tiempo a los desarrolladores y también ayudan en la estandarización del desarrollo de SMAs.
Como casi todo enfoque informático para la solución de problemas, los sistemas multiagentes proponen ayudas metodológicas de ingeniería de software, en este caso metodologías de ingeniería del software orientada a agentes (en inglés AOSE, Agent Oriented Software Engineering) y notaciones. Es decir, artefactos de desarrollo que son específicamente concebidos para crear sistemas basados en agentes.
Ejemplos de metodologías y notaciones de ingeniería de software orientada a agentes, son:
Si el entorno puede cambiar cuando el agente está deliberando, entonces se dice que el entorno es dinámico para el agente; de otra forma se dice que es estático. Los medios estáticos son más fáciles de tratar ya que el agente no necesita estar pendiente del mundo mientras está tomando una decisión sobre una acción, ni necesita preocuparse del tiempo transcurrido. Los medios dinámicos, por el contrario, preguntan continuamente al agente qué quiere hacer, sino ha decidido aún, entonces se entiende que ha tomado la decisión de no hacer nada.Si el entorno no cambia con el paso del tiempo, pero el rendimiento del agente cambia, entonces se dice que el medio es semidinámico.
1. Flexibilidad y escalabilidad: Los sistemas multiagentes pueden ser altamente flexibles y escalables. Pueden adaptarse a entornos cambiantes y pueden crecer en tamaño y complejidad de manera relativamente sencilla agregando o modificando agentes.
2. Distribución del conocimiento y tareas: Al descentralizar el sistema en múltiples agentes autónomos, se puede distribuir la carga de trabajo y el conocimiento, lo que puede mejorar la eficiencia y la capacidad de respuesta del sistema en su conjunto.
3. Resiliencia y robustez: Debido a su naturaleza descentralizada, los sistemas multiagentes suelen ser más resistentes a fallos individuales. La pérdida de un agente no necesariamente compromete todo el sistema.
4. Adaptación y aprendizaje: Los agentes pueden ser diseñados para aprender y adaptarse a medida que interactúan con su entorno y otros agentes. Esto permite que el sistema mejore con el tiempo sin requerir intervención externa.
1. Complejidad de diseño: El diseño y la implementación de sistemas multiagentes pueden ser complejos, especialmente cuando se trata de coordinar la interacción entre múltiples agentes autónomos con diferentes objetivos.
2. Comunicación y coordinación: La comunicación y coordinación entre agentes autónomos puede ser un desafío. Se necesitan protocolos y mecanismos efectivos para asegurar que los agentes puedan colaborar eficientemente.
3. Posibles conflictos: Los agentes autónomos pueden tener objetivos individuales que pueden entrar en conflicto con los objetivos de otros agentes o del sistema en su conjunto. Gestionar estos conflictos puede ser complicado.
4. Privacidad y seguridad: La autonomía de los agentes también puede plantear desafíos en términos de privacidad y seguridad. Los sistemas multiagentes deben implementar medidas adecuadas para proteger la información sensible y prevenir comportamientos no deseados.
Los sistemas multiagente son aplicados en el mundo real a aplicaciones gráficas como juegos de ordenador. Los sistemas de agente se han utilizado en películas.[12] También se utilizan para sistemas de defensa coordinados. Otras aplicaciones incluyen el transporte, la logística,[13] los gráficos, sistemas de información geográfica, diagnóstico,[14] así como en muchos otros campos. Es una tecnología ampliamente defendida para su uso en tecnologías de redes y móviles, para lograr el equilibrio de carga automático y dinámico, alta escalabilidad, y redes auto-sanadas.