Erlang面向Agent编程的利器:eXAT(2)
二、基本概念(1)什么是“Agent”和“面向Agent编程”?网上有关的介绍很多,我觉得以下2种说法比较好。说法之一:关于 Agent 一直没有一个统一、普遍的标准定义。因为这就和给人工智能下一个非常精确的定义一样困难。软件 Agent 技术最早起源于早期的人工智能( AI )研究。 1977 年当 Hewitt 在研究同步行为模型 (Concurrent Actor Mod
二、基本概念
(1)什么是“Agent”和“面向Agent编程”?
网上有关的介绍很多,我觉得以下2种说法比较好。
说法之一:
关于 Agent 一直没有一个统一、普遍的标准定义。因为这就和给人工智能下一个非常精确的定义一样困难。软件 Agent 技术最早起源于早期的人工智能( AI )研究。 1977 年当 Hewitt 在研究同步行为模型 (Concurrent Actor Model) 时首先提到了它具有自组织性、反应机制和同步执行能力,它有一些内部封装的状态并能其他类似模型的信息做出反应等思想。这是最初的关于 Agent 的提法。从此 70 年代末到 90 年代初,科学家们集中于对 Agent 宏观方面进行研究,从系统的角度提出了一些概念。 90 年代初至今,则致力于具体实践 Agent 的问题并做了一些成功的尝试。这期间,产生了一些新的想法。如微软认为: Agent 是受人委托代表或代替用户做事,其智能性显示或表现在其优良的判断力或合理的思想。BT 实验室 (Britain Telecommunication labs) 的定义是:能准确行动以代表用户完成任务的一些软件和硬件的组合。
说法之二:
Agent这个概念并不是空穴来风,在理论界对它的研究已经很深入,Agent是Object的进化版本,进化的目的是为了让软件系统更贴近现实世界。从程序设计的角度理解,可以认为Agent就是绑定了Thread的Object。Agent Oriented Programming是一种思想,与平台无关。
综合各种说法,我的看法是:
软件Agent是一组Object,它们以并行协作的方式运行,执行困难复杂的任务。在多数情况下,Agent Oriented Programming为了建立智能化的系统。
(2)什么是FIPA?
FIPA全称为Foundation for Intelligent Physical Agents,是一个非营利组织,与1996年建立于瑞士日内瓦。当初建立的目的是为了提高异构Agent系统之间的交互性,并为此制定了一系列的技术规范,从体系结构、通信语言、内容语言到交互协议。FIPA的主要思想是通过融合言语行为理论、谓词逻辑及公共的本体论,来提供一个标准的方法以理解Agent之间的交流。FIPA是一个可以公开利用的规范,它不是一项特定的应用技术,而是针对不同应用领域的通用技术;它也不是一项独立的技术,而是一套基本技术集,该技术集使得开发者可以开发出具有高度协同能力的复杂系统。目前最新的公开标准FIPA 2000。
(3)什么是FIPA-ACL规格的消息?
FIPA对Agent的标准化作的贡献具体有以下几方面:
中间件支持。包括Agent的注册、定位服务,通信服务,移动性及安全性支持。
Agent通信语言。包括语义、交互协议、责任等。
和本地软件的交互。将企业遗留系统或数据库包装起来。
Agent与人的交流。定义了交流内容与交流方式。
……
FIPA规范中对于Agent的心智态度描述为:
信念,表示为一组Agent认为是真的命题,认为是假的命题即Agent相信其否定为真。
不确定性,表示一组Agent不能确定真假的命题,但更倾向于真。而更倾向于假的命题表示为Agent不确定该命题的假。
意图,表示一种选择,或Agent愿望为真但目前非真的一个命题。接受了这种意图的Agent将形成一个行动计划,这一行动计划的结果将是它愿望的命题成立。
FIPA ACL消息由一组核心的通信动作集合产生,FIPA Agent之间是通过消息来相互影响,消息类型也就体现了通信动作类型。
FIPA ACL在Agent的消息传输服务上定义了如下一组最小需求:
正常情况下消息服务是可靠、准确、有序的。
如果消息服务不能保证以上的要求,将通过消息服务界面以某种方式表现出来。
Agent将能选择是否暂停以等待消息结果,或同步执行其他无关任务。
传递消息动作参数。比如可以指明等待回复消息的最长时间。
消息传递服务将负责向Agent汇报出错情况。如超时或接受Agent不存在等。
Agent之间可以不用关心对方的实际地址,消息传递服务将会根据Agent注册的唯一名而找到接受者。
对于兼容FIPA ACL的Agent,FIPA也规定了一组最小要求:
Agent在接受到不认识或不能处理的消息内容时应能通知消息发送者not-understand消息。同时Agent应能处理这种消息。
Agent可以预先定义将要处理的消息类型和协议种类。
Agent应该执行与消息的通信动作类型及内容相一致的动作。
Agent可以扩展核心通信动作集合,但要保证对方能理解动作含义。同时不能与原核心动作集合相冲突。
Agent必须能在ACL消息与传输形式的字符序列之间正确地相互转换。
ACL的消息结构如下所示:
(inform
:sender agent1
:receiver ams
:content
(register agent1)
:language sl0
:ontology mas-application
)。
其中inform表示消息动作类型,sender和receiver分别是消息发送者与接受者,content表示了消息承载的内容,language是该消息所采用的语言,ontology用来说明content所属的本体论。
……
更多推荐
所有评论(0)