来自mutli-agent系统的学术背景(使用JADE在Java中开发)我只是在外围意识到了Actor并发范例。现在我已经开始探索Scala了,我忍不住被Agent和Actor方法之间的相似性所打动。
我非常想在我的下一个研究项目中使用Scala的Actor库,而不是简单地调用JADE库,因为这会迫使我更深入地掌握这种语言。此外,JADE专注于根据行为来定义所有内容并不适合我的问题。
高度自主的Actor和我失踪的Agent之间是否有根本不同的东西?
答案 0 :(得分:11)
是的,有差异。对于非常简单的代理,演员和代理可能是同一个东西。但是,对于“自治代理人”,我或通常会假设某种情况,例如,例如,一种信念 - 欲望 - 意图模型,其中代理在内部模拟环境的抽象它发现自己,以及与之交互的代理,以便它可以制定如何与该环境进行交互以实现其目标的计划。
虽然演员可以肯定拥有所有这些,但是单个代理也可能由多个演员组成,共同行动以处理BDI框架的不同部分。对于所有意图,演员都是一个调度单元。如果您的代理基本上是线性和单线程,则它们适合。如果他们在内部进行并行工作,那么每个代理都需要多个actor。
那么,演员和代理人有什么共同之处?
他们都通过传递消息进行沟通。
它们(通常)都具有内部状态 - 即使隐含在执行状态中。
他们都不希望与其他演员/代理商分享州。
他们都应该独立于其他演员/代理人安排。
代理人比演员更多?
代理商通常遵循规定代理人行为的模型 - 例如,BDI - 而演员通常不会。但是,反应代理人在这方面与演员相似。
代理可能有多个内部调度单元。但是,那些没有的代理商在这方面与演员相似。
演员有多于代理商?