Erlang面向Agent编程的利器:eXAT(2)

二、基本概念

(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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值