将高度自主的参与者视为代理人是否合理?

发布于 2024-07-29 13:56:47 字数 322 浏览 8 评论 0原文

来自多代理系统(使用 JADE 在 Java 中开发)的学术背景,我只是粗略地意识到Actor 并发范例。 现在我已经开始探索 Scala,我不禁对 Agent 和 Actor 方法之间的相似性感到震惊。

我很想在下一个研究项目中使用 Scala 的 Actor 库,而不是简单地调用 JADE 库,因为这会迫使我更深入地掌握这门语言。 此外,JADE 专注于用行为来定义一切,这不太适合我的问题。

高度自治的演员和我所缺少的特工之间有什么本质上的不同吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如梦 2024-08-05 13:56:47

是的,存在差异。 对于非常简单的代理,参与者和代理可能是同一件事。 然而,对于“自主代理”,或者至少是我,通常会假设诸如“信念-欲望-意图”模型之类的东西,其中代理在内部对环境的抽象进行建模发现自己所处的环境以及与其交互的代理,以便它可以制定如何与该环境交互以实现其目标的计划。

虽然参与者确实可以拥有所有这些,但单个代理也可能由多个参与者组成,共同处理 BDI 框架的不同部分。 就所有意图而言,参与者都是一个调度单元。 如果您的代理本质上是线性和单线程的,那么它们就适合。 如果他们在内部并行工作,您需要每个代理有多个参与者。

那么,演员和经纪人有什么共同点呢?

  • 它们都通过传递消息进行通信。

  • 它们(通常)都有一个内部状态——即使隐含在执行状态中。

  • 他们都不应与其他参与者/代理共享状态。

  • 他们都应该独立于其他演员/特工来安排。

经纪人比演员更有什么?

  • 代理通常遵循规定代理行为的模型(例如 BDI),而参与者通常不这样做。 不过,反应式代理在这方面与参与者类似。

  • 代理可能有多个内部调度单元。 然而,在这一方面,并​​非如此的代理与参与者类似。

演员比经纪人还有什么?

  • 尽管 Scala 参与者可以共享状态,但我想不出什么。

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.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文