9

来自多代理系统(使用JADE在 Java 中开发)的学术背景,我只是外围地了解 Actor 并发范式。现在我已经开始探索 Scala,我不禁被 Agent 和 Actor 方法之间的相似性所震惊。

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

高度自治的 Actor 和我缺少的 Agent 之间有什么根本不同吗?

4

1 回答 1

11

是的,有区别。对于非常简单的代理,演员和代理可能是同一回事。但是,对于“自主代理”,一个人,或者至少是我,通常假设类似于信念-欲望-意图模型,其中代理在内部建模它发现自己所在的环境的抽象,并且代理它与之交互,以便它可以制定如何与该环境交互以实现其目标的计划。

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

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

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

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

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

  • 预计它们都将独立于其他参与者/代理进行安排。

经纪人除了演员还有什么?

  • 代理通常遵循指示代理行为的模型——例如,BDI——而参与者通常不遵循。但是,反应性代理在这方面与参与者相似。

  • 代理可能有多个内部调度单元。然而,在这方面,不这样做的代理人与演员相似。

演员除了经纪人还有什么?

  • 没有什么我能想到的,尽管 Scala 演员可以共享状态。
于 2009-07-21T20:59:04.253 回答