Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it reasonable to view highly autonomous actors as agents?

Coming from an academic background in mutli-agent systems (developed in Java using JADE) I have only been peripherally aware of the Actor concurrency paradigm. Now that I've started exploring Scala I couldn't help but be struck by the similarities between the Agent and Actor approaches.

I'm very tempted to use Scala's Actor library for my next research project rather than simply calling the JADE libraries as this would force me to get to deeper grips with the language. Furthermore JADE's focus on defining everything in terms of behaviours isn't very appropriate to my problem.

Is there something fundamentally different between a highly autonomous Actor and an Agent that I am missing?

like image 953
DuncanACoulter Avatar asked Jul 21 '09 19:07

DuncanACoulter


People also ask

Are agents autonomous?

Autonomous agents are software programs which respond to states and events in their environment independent from direct instruction by the user or owner of the agent, but acting on behalf and in the interest of the owner.

What is required for an agent to be autonomous?

The definition of an autonomous agent requires that it pursue its own agenda. Where does this agenda come from? Every autonomous agent must be provided with built-in (or evolved-in) sources of motivation for its actions.

What is an autonomous intelligent agent?

An autonomous intelligent agent is designed to function in the absence of human intervention. Intelligent agents are also closely related to software agents (an autonomous computer program that carries out tasks on behalf of users).

What are the four 4 Characteristics of an agent?

Another definition: An agent is a computer software system whose main characteristics are situatedness, autonomy, adaptivity, and sociability.


1 Answers

Yes, there are differences. For very simple agents, actors and agents might be the same thing. However, by "autonomous agents" one, or, at least, I, usually assume something like, for example, a Belief-Desire-Intention model, where the agent models internally an abstraction of the environment it finds itself in, and the agents it interacts with, so that it can make plans on how to interact with that environment to achieve it's goals.

While an actor can sure have all this, a single agent might just as well be composed of multiple actors, acting jointly to handle different parts of the BDI framework. An actor is, for all intents, a scheduling unit. If your agents are essentially linear and single-thread, they fit. If they do parallel work internally, you want multiple actors for each agent.

So, what do actors and agents have in common?

  • They both communicate by passing messages.

  • They both (usually) have an internal state -- even if implicit in the execution state.

  • They both are expected not to share state with other actors/agents.

  • They both are expected to be scheduled independently of other actors/agents.

What do agents have more than actors?

  • Agents usually follow models that dictate an agent's behavior -- such as, for example, BDI -- and actors usually don't. Reactive agents, though, are similar to actors in this respect.

  • Agents may have more than one internal unit of scheduling. Agents that do not, though, are similar to actors in this respect.

What do actors have more than agents?

  • Nothing that I can think of, though Scala actors can share state.
like image 114
Daniel C. Sobral Avatar answered Sep 17 '22 23:09

Daniel C. Sobral