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

三、eXAT 设计开发人的介绍
eXAT 的设计人,Catania 大学的 Antonella Di Stefano 和 Corrado Santoro 在其论文《eXAT: an Experimental Tool for Programming Multi-Agent Systems in Erlang》中概括介绍了eXAT的目的、特点、用法等。
在此,又出现了主要概念的翻译问题。Agent直译成“代理”,在下面的内容中会很别扭,还是按史忠植先生的译法,叫做“主体”吧。
(1)eXAT 的设计目的和原则
目前,Agent开发平台大多数(80%以上)是用Java,如JADE。但其智能部分是用说明式语言,如JESS(Java平台上的CLIPS)。这种开发模式会出现许多麻烦。而eXAT统一使用Erlang语言,可以避开“双语种”带来的不必要麻烦。
为了设计并实现智能主体,必须考虑两方面的问题:行为机制和智能机制。
一般地,主体行为实现的方式,通常是有限状态机(FSM),同时以一组规则控制FSM,即:
(State,Event) → (Action,NewState)
主体智能机制若用多语种实现,如JADE和JESS,有2个弊端,一是混用命令式与说明式语言,编程模式缺乏一致性;二是程序效率不高、性能不佳。
eXAT是由一组模块构成的。它们统一使用Erlang语言,以FSM实现主体行为,以专家系统引擎实现主体智能,以ACL模块实现主体之间的协同。eXAT当前版本实现了服务器功能测试、效率评估的最小应用集合,并且提供了与现有其他知名的主体平台体做比较所需的解决方案。
(2)Erlang语言概况
●函数式编程语法
●跨平台的兼容性
●编译后的代码执行效率高
●程序可并行运行
●程序分布式运行
●开发功能完备
(3)eXAT开发运行平台
eXAT主要由以下模块组成:
① ERES模块
ERES是规则处理引擎,用于开发Erlang专家系统,因此,它适合编写主体的智力功能。ERES利用并行编程机制,可以创建多个并行运行的推理机,每个推理机拥有专用规则、状态和行为,以及单独的知识库,存储着用元组表示的事实集合。规则由函数子句表示,在知识库中出现某些事实后,规则函数子句头部的模式产生匹配,于是,子句体内的语句得以执行,即对规则进行处理。
②ACL模块
该模块负责编写、解析FIPA-ACL语法格式的消息。它有一组库访问函数,发送并解析ACL消息,解析SL0格式的消息内容。本体(ontologies)的规范目前尚未实现,待将来解决。(注:FIPA SL语言规范,见http://www.fipa.org)
发送ACL消息要用以下形式的函数:
acl:performative-name ( Sender, Receiver,Ontology, Language, Content, P)
需要注意几点:
●模块acl.erl中并没有名为performative-name的函数,这里只是虚拟例说。该模块中,与之相似的函数是sendacl/1。
●参数P可以省略。P用以指定附加信息,形式是元组列表[{name1,value1},. . .,{namen,valuen}]
●其他命令允许准备并发送答复信息(acl:reply),解析信息内容为SL0格式(acl:sl0_parsecontent/1),返回的是以元组{name, value}组成的列表。
●当前版本的eXAT,交换信息的编码是ASCII码字符串。
③主体执行模块
该模块提供主体运行的引擎。每个主体都封装着:
● 由FSM表示的行为机制;
● 以元组{name, value}表示的一组属性。命令agent:get_property/1 和agent:set_property/2 读取、设置属性值。
主体行为的构建基础是FSM模板。这些模板构成有限状态机的骨架,以状态和事件的形式进化。但FSM不是主体action的进化,这有待开发者解决。
最后的事情,是按照(state, event)的不同,指定函数去执行。实际上,(state, event)是从FSM模板获得。FSM的action以函数形式出现:
action-function( Event, State, Agent )
用函数agent:new/4创建主体后,指定FSM的名字和action函数的名字,将二者结合起来。
action函数多个不同子句,分别处理不同的(state, event)。
接受处理的事件包括:①沉默的action,②定时沉默的action,③接收到ACL消息,④在某一ERES引擎中宣布某项事实。对于①和②,函数参数Event假定是silent;对于③,Event是接收到的ACL消息;对于④,Event是元组表示的事实。
eXAT有一组现成的FSM模板,包括简单接收消息的,和对FIPA标准交互协议做复杂处理的。以下会以示例,讲到怎样运用这些机制编写简单的主体;尤其是从现成的FSM模板开发主体的方法,和大致实现主体的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值