基于JADE和Jess的智能agent系统开发
2014-10-20张冉林杰
张冉 林杰
摘要:多agent技术在复杂建模领域具有优势,是当前研究的一个热点。但对于普通研究者来说,从底层开发多agent系统具有复杂性。因此,该文分析了多agent系统的分析和设计过程,讨论了以JADE为开发工具的多agent系统开发步骤,并设计了基于Jess的知识推理流程,增强了agent智能性。对基于JADE和Jess的智能agent系统的开发过程进行了研究。
关键词:智能agent; 多agent系统; JADE; Jess
中图分类号: TP391 文献标识码:A 文章编号:1009-3044(2014)25-5955-03
Developing Intelligent Agent System with JADE and Jess
ZHANG Ran1,2, LIN Jie1
(1.School of Economic and Management, Tongji University, Shanghai 201804, China; 2.School of Statistics and Information, Xinjiang University of Finance and Economics, Urumqi 830012, China)
Abstract: Due to developing multi-agent system from the bottom has been a very challenging task. This paper studied the development of intelligent agent system with JADE and Jess. Firstly, the analysis and design of the multi-agent system is described; then, the development steps of the multi-agent system with JADE are presented; finally, knowledge inference process with Jess is designed to enhance the intelligence of agent.
Key words: Intelligent agent; Multi-agent system; JADE; Jess
agent作为分布式人工智能概念模型,具有自己行为、目标和知识,是能感知环境[1]并在一定环境下自主运行的实体,具有主动性、独立性、反应性、交互性等特点[2]。多个agent 通过协同机制构成多agent系统(Multi-Agent System,MAS)[3],对每个agent的目标、资源和知识等进行合理安排, 通过相互协同和协作,每个agent都能独立地运行,在实现各自的目标基础上,完成单个agent无法完成的复杂任务[4], 从而可对复杂系统进行建模。
1 系统开发工具介绍
JADE (Java Agent DEvelopment Framework) [5]是一个用Java语言写成遵照FIPA定义的MAS开发框架,它包括一个agent 赖以生存的运行环境,开发agent应用的类库和用来调试和配置的一套图形化的工具,简化了MAS的开发过程。Jess(Java Expert System Shell)是一个由Java语言实现的专家系统外壳,使用声明式编程通过一个名为“模式匹配”的过程连续对事实的集合运用一系列规则,完成知识的推理。它小巧、灵活,并且是已知规则引擎中最快的[6]。由于JADE和Jess都是基于java语言的,因此,Jess可以集成为agent的推理组件,增强agent的智能性。
2 多agent系统的分析与设计
多agent系统的分析与设计过程如图1所示主要分为以下3个阶段。
1) 分析问题:
该阶段主要是明确系统边界和对用户的需求进行分析。定义出系统的总目标及其各子目标之间的层次关系。
2) agent建模:
该阶段主要是根据系统目标和子目标,设计各类agent,包括它们的属性和任务,并定义这些agent之间的交互关系。
3) 建立多agent系统平台:
该阶段主要是创建设计好的agent,实现它们的属性和任务,并对它们之间的交互进行控制和协调,完成各自的目标和系统的总目标。
3 基于JADE的多agent系统开发
JADE提供了遵照FIPA规范的agent开发平台和开发agent的软件包。主要包括agent管理系统(AMS)和目录服务(DF)两类特殊的agent,以及一个消息传输系统(MTS)[5],为供应链建模层提供agent的通信和管理等基本服务。使用JADE开发MAS主要分为以下几步:
1) 创建agent:使用JADE创建agent,只需要定义一个从jade.core.Agent类继承的类即可,然后由JADE平台实时进行实例化,agent之间的引用从不在agent外部公开,它们之间通过传递消息来进行交互。每个agent实例通过agent标识符进行识别,格式为
2) 定义agent任务:在JADE中,agent的任务使用行为(Behaviours)来表示的,它通过一个继承jade.core.behaviour类的对象来实现。为了让agent执行由行为对象表示的任务,必须使用agent类的addBehaviour()方法将行为添加到agent上。
3) agent的搜索:JADE平台提供了黄页服务,允许agent发布它提供的一个或多个功能,以便其它agent可以动态的发现和使用它们。在JADE中,由称为DF的agent提供黄页服务,遵守FIPA中的管理规范。
4) agent的通讯:JADE中的agent通讯是遵从FIPA标准,基于异步消息模式传递的。实时运行环境中传递的消息会先存放到agent的消息队列中,然后按照agent开发者的设计进行处理。JADE中的消息作为jade.lang.acl.ACLMessage类的一个对象,提供get方法和set方法访问ACL格式制定的所有字段。
4 基于JADE和Jess的agent知识规则集成
4.1 知识的推理流程
集成了Jess之后,agent知识推理流程如图2所示,主要过程如下:
1) 知识推理部件首先对Jess环境下的推理引擎进行一些初始化的工作,例如set_templates、set_rules等。
2) 在仿真的过程中agent的决策函数遇到决策问题时会向知识推理部件发送决策请求消息,这些请求消息里包含实时的决策参数。知识推理部件收到这些消息后,会把决策参数封装成特定的事实集,并通过set_facts方法向推理引擎发送,也就是在Jess的工作内存中声明事实。
3) 知识推理部件通过Run_engine方法启动推理引擎,Jess会根据事实集里的事实调用规则进行推理,推理结束后使用Save_facts方法保存推理结果。
知识推理部件向决策函数返回推理结果(即决策结果),并使用clean_memory方法清空Jess工作内存中的事实集。
4.2 Jess中的知识表达
Jess使用框架和产生式规则方式表示知识。例如,采购agent采用定量订货模型,存储水平小于等于再订货点就生成采购列表。其中,生成采购列表的知识用Jess表示为:
(deftemplate material (slot mid) (slot mip)) ;定义物料存储信息框架
(deftemplate materialstock (slot mid) (slot rl)) ;定义物料采购参数框架
(deftemplate buylist (slot mid)) ;定义采购申请列表框架
(defrule buyinform
(materialstock (mid ?mid)(rl ?rl)) ;查询物料的再订货点
(material (mid ?mid)(mip ?mip&:(<= ?mip ?rl)));查询现货水平低于再订货点的物料编号
=>
(assert (buylist (mid ?mid)));把需要订货的物料编号写入采购列表
)
...
4.3 Jess的集成
我们可以使用jess.rete包把用Jess写的规则嵌入到agent中去,首先创建一个jess.rete类的对象,然后就可以使用executeCommand()、reset()或run()等方法执行Jess的推理,agent中的代码如下:
Rete engine = new Rete(this);
engine.executeCommand("(batch \"" + rulesFile + "\")");
engine.reset();
if (new File(factsFile).exists())
engine.executeCommand("(load-facts \"" + factsFile + "\")");
...
5 结论
本对智能agent系统的开发进行了讨论。通过分析问题和agent建模之后,研究者可以使用JADE简化多agent系统的开发过程,同时,agent中集成基于Jess的知识规则,可以提升多agent系统的智能性。
参考文献:
[1] Russell S,Norvig P,Canny J,Malik J,Edwards D.Artificial intelligence: a modern approach[M].New Jersey: Pearson Education,2010.
[2] 屈正庚.网络交易中多Agent协商策略的研究[J].计算机技术与发展,2014(2):111-114,119.
[3] Vila X,Schuster A,Riera A.Security for a Multi-Agent System based on JADE [J].Computers & Security, 2007(5):391-400.
[4] 邓寒冰,张霞,刘积仁.效用驱动的多agent合作机制[J].通信学报,2013(7):124-133,142.
[5] Fabio Bellifemine,Giovanni Caire,Dominic Greenwood.Developing multi-agent systems with JADE [M]. USA: John Wiley & Sons Ltd,2007.
[6] FRIEDMAN-HILL E. JESS in Action [M].Greenwich,CT:Manning,2003.