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

标签 scala artificial-intelligence actor agents agents-jade

来自多代理系统(使用JADE用Java开发)的学术背景,我只是在外围意识到Actor并发范例。现在,我开始探索Scala,我不禁为Agent和Actor方法之间的相似之处所震惊。

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

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

最佳答案

是的,有差异。对于非常简单的代理,参与者和代理可能是同一回事。但是,通过“自治代理”,通常至少假设一个假设,例如“信念-愿望-意图”模型,其中,代理内部对自己发现的环境进行抽象建模,并且代理它与之交互,以便可以制定有关如何与该环境交互以实现其目标的计划。

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

那么, Actor 和代理人有什么共同点?

  • 它们都通过传递消息进行通信。
  • 它们通常都具有内部状态-即使隐含在执行状态中。
  • 预计他们俩都不会与其他参与者/代理共享状态。
  • 预计它们都将独立于其他参与者/代理进行调度。

  • 代理人比 Actor 还有什么?
  • 代理通常遵循指示代理行为的模型(例如BDI),而参与者通常不这样做。但是,在这方面, react 性代理与参与者相似。
  • 代理程序可能具有多个内部调度单元。但是,在这方面,不相似的代理与参与者相似。

  • Actor 比经纪人还拥有什么?
  • 尽管Scala Actor 可以共享状态,但我无能为力。
  • 关于scala - 将高度自治的参与者视为代理人是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1161179/

    相关文章:

    scala - scala.sys.process 是否阻塞流处理线程?

    scala - Scala 中的 MapView(<not computed>)

    scala - 智能 : a required artifact is not listed by module descriptor: *#*! *.*

    artificial-intelligence - Q-learning 和 SARSA 有什么区别?

    actor - Akka 2 : How to pause processing of messages?

    java - 如何打开“玩”! Intellij IDEA 2.0 控制台?

    artificial-intelligence - 这个字段的名称是什么?

    c# - 防止实体在头顶射击游戏中相互堆叠

    java - 多线程的最佳替代方案是什么?

    java - 识别 Akka Actors 的多个实例