2009-07-21 8 views
9

Viniendo de una formación académica en sistemas mutli-agent (desarrollado en Java usando JADE), solo conozco periféricamente el paradigma de simultaneidad de Actor. Ahora que comencé a explorar Scala, no pude evitar sorprenderme por las similitudes entre el agente y el actor.¿Es razonable ver actores altamente autónomos como agentes?

Estoy muy tentado de utilizar Scala's Actor Library para mi próximo proyecto de investigación en lugar de simplemente llamar a las bibliotecas de JADE ya que esto me obligaría a profundizar en el lenguaje. Además, el enfoque de JADE en definir todo en términos de comportamientos no es muy apropiado para mi problema.

¿Hay algo fundamentalmente diferente entre un actor altamente autónomo y un agente que me falta?

Respuesta

10

Sí, hay diferencias. Para agentes muy simples, los actores y agentes podrían ser lo mismo. Sin embargo, por "agentes autónomos" uno, o, al menos, yo, usualmente asumo algo como, por ejemplo, un modelo de creencia-deseo-intención, donde el agente modela internamente una abstracción del entorno en el que se encuentra, y los agentes con los que interactúa, para que pueda hacer planes sobre cómo interactuar con ese entorno para lograr sus objetivos.

Mientras que un actor puede tener todo esto seguro, un único agente podría estar compuesto por múltiples actores, actuando conjuntamente para manejar diferentes partes del marco de BDI. Un actor es, a todos los efectos, una unidad de programación. Si sus agentes son esencialmente lineales y de un solo hilo, caben. Si funcionan en paralelo internamente, quiere múltiples actores para cada agente.

Entonces, ¿qué tienen en común los actores y agentes?

  • Ambos se comunican mediante mensajes que pasan.

  • Ambos (por lo general) tienen un estado interno, incluso si están implícitos en el estado de ejecución.

  • Se espera que ambos compartan el estado con otros actores/agentes.

  • Se espera que ambos se programen independientemente de otros actores/agentes.

¿Qué tienen los agentes más que actores?

  • Agentes suelen seguir los modelos que dictan el comportamiento de un agente - como, por ejemplo, BDI - y los actores por lo general no lo hacen. Los agentes reactivos, sin embargo, son similares a los actores en este sentido.

  • Los agentes pueden tener más de una unidad interna de programación. Los agentes que no lo hacen, sin embargo, son similares a los actores en este sentido.

¿Qué actores tienen más que agentes?

  • Nada de lo que pueda pensar, aunque los actores de Scala pueden compartir el estado.
+1

Definitivamente no estoy de acuerdo con la equiparación de BDI y agentes autónomos. BDI es simplemente una arquitectura posible para una clase de agentes.Existen arquitecturas de agente con modelos ambientales explícitos que no son BDI, p. agentes reflejos en entornos parcialmente observables Creo que la segunda parte de su respuesta tiene sus méritos. Un actor no es un agente de la misma manera que un hilo no es un agente. Sin embargo, cualquiera de los dos puede usarse para alcanzar el objetivo de crear un agente autónomo. Por ejemplo, los agentes de JADE se sientan encima de Java Threads. Gracias por tu ayuda. – DuncanACoulter

+1

Ah, veo que estaba actualizando su respuesta mientras escribía mi comentario ... Creo que su nueva respuesta aborda mi pregunta muy bien. – DuncanACoulter

+0

Lo siento, no tenía ninguna intención de igualar agentes autónomos con BDI. Solo quise usar BDI como ejemplo. No estoy del todo seguro de cómo reformular mi respuesta, pero la he mejorado un poco. –

Cuestiones relacionadas