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.
来自mutli-agent系统的学术背景(使用JADE在Java中开发)我只是在外围意识到Actor并发范例。现在我已经开始探索Scala,我忍不住被Agent和Actor方法之间的相似性所打动。
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.
我非常想在我的下一个研究项目中使用Scala的Actor库而不是简单地调用JADE库,因为这会迫使我更深入地掌握语言。此外,JADE专注于根据行为定义所有内容并不适合我的问题。
Is there something fundamentally different between a highly autonomous Actor and an Agent that I am missing?
高度自主的演员和我失踪的特工之间是否存在根本不同的东西?
1 个解决方案
#1
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.
虽然演员可以肯定拥有所有这些,但是单个代理也可能由多个演员组成,共同行动以处理BDI框架的不同部分。对于所有意图,演员都是一个调度单元。如果您的代理基本上是线性和单线程,则它们适合。如果他们在内部进行并行工作,那么每个代理都需要多个actor。
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.
代理商通常遵循规定代理人行为的模型 - 例如,BDI - 而演员通常不遵守。但是,反应特工在这方面与演员相似。
-
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.
没有什么我能想到的,尽管Scala演员可以分享状态。
#1
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.
虽然演员可以肯定拥有所有这些,但是单个代理也可能由多个演员组成,共同行动以处理BDI框架的不同部分。对于所有意图,演员都是一个调度单元。如果您的代理基本上是线性和单线程,则它们适合。如果他们在内部进行并行工作,那么每个代理都需要多个actor。
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.
代理商通常遵循规定代理人行为的模型 - 例如,BDI - 而演员通常不遵守。但是,反应特工在这方面与演员相似。
-
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.
没有什么我能想到的,尽管Scala演员可以分享状态。