基于JADE实现智能化的Java Web应用系统
2014-09-10朱忠旭刘旭光
朱忠旭,刘旭光
(1.安徽工贸职业技术学院 计算机技术系,安徽 淮南 232007; 2.安徽交通职业技术学院 计算机系,合肥 230001)
0 引言
在当今信息爆炸的时代背景下,传统的信息管理系统已难以满足需要,人们希望使用具有高度智能化的信息处理系统。然而,尽管人工智能技术已取得较大的进步,而且也出现了一些有效的开发工具和开发方法,但和传统的软件开发相比较,仍存在开发效率低下、开发难度大等问题。
在进行智能系统的开发时,将智能系统的开发平台与传统信息系统开发平台相集成,从而能够将系统的显示逻辑、控制逻辑等“低智能”的任务交由传统组件完成,将信息的分析、处理、学习等“高智能”的任务交由智能组件来完成,既可以利用传统软件的开发理论完备、方法成熟、工具齐全等优点,又可以有效地分离关注点,降低开发的难度,提高软件生产效率。
1 JADE平台
智能体(Agent)是当前信息技术与人工智能领域最为活跃的研究内容之一,基于Agent的设计方法是一系列软件工程方法的发展与延伸[1]。Agent拥有领域知识和社会知识,可以进行逻辑推理,并且具有主动性、交互性等特征。JADE是一个Agent开发框架,它提供了遵循FIPA规范的中间件及一系列用于Agent开发和部署的工具,简化了多Agent系统的开发[2]。JADE为Agent的开发和运行提供分布式的Agent容器、高效的异步消息传输、白页和黄页实现、Agent订阅机制、支持开发者调试和跟踪的图形工具、交互协议库等机制。
JADE平台运行时环境由多个可以分布于网络不同位置的Agent容器组成,平台中只能有一个主容器,其它容器必须在主容器中注册后才能使用。主容器负责管理容器注册表(CT)和全局agent描述表(GADT),通过这两个表可以发现和引用其它容器和任意Agent,主容器中的AMS和DF是两个特殊的Agent,用于Agent的管理和白页、黄页服务。所有容器都有各自的局部Agent描述表,用于本容器内的Agent管理。非主容器各自拥有一个GADT快照,用于发现其它容器中的Agent。
2 基于JADE的Java Web应用开发
2.1 系统总体架构
系统的总体架构采用MVC模式设计(见图1),控制器、视图和模型的角色分别由Servlet、JSP页面和智能组件Agent充当,从而实现了控制逻辑与业务逻辑的分离,显示与数据的分离[3]。从接受浏览器来的用户输入,传送到Servlet对象,再由Servlet传送给Agent进行处理,处理结果由Servlet传送到JSP显示给用户。
图1 系统总体架构
GatewayAgent组件是Web容器与JADE平台之间的接口,由于Agent之间的通信使用ACL格式信息,因此要将用户端产生的POST格式的信息封装为ACL格式,再发送到相应的Agent处理;同时,由Agent产生的ACL消息先发送到GatewayAgent,由GatewayAgent转换为POST消息格式后再传送到控制器组件Servlet,然后由Servlet传送给相应的JSP页面。
Servlet与GatewayAgent之间的消息传递采用黑板方式[4]。黑板是一个特殊的Java Bean对象,Servlet按收到来自网页的POST消息后,创建一个黑板对象blackbord,将要传送的消息写入黑板并设置信息的接收者,GatewayAgent读取黑板中的信息,提取消息的接收者和消息内容,然后把消息发送给接收Agent。
黑板的定义和使用方式如下:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws Exception {
BlackBoard blackBord = new BlackBoard(); //创建黑板对象
blackBord.setReceiver("receiveAgent"); //设置信息的接收者
blackBord.setMessg("………."); //在黑板中写入要传递的信息
……….
}
Agent与数据库之间的数据交换通过TransducerAgent完成[5]。Agent需要从数据库获取数据时,将要获取或写入的数据项名称、数据来源地(或目的地)和交互类型(即读取或更新)以ACL消息发送给TransducerAgent,TransducerAgent根据消息中的数据项和操作类型等生成SQL语句,通过数据库访问接口JDBC进行相应的数据库操作。获得相应的数据后,再以ACL格式发送给相应的Agent。
2.2 Agent设计
Agent是一个具有逻辑推理能力和智能行为的显式的符号模型,是一个基于知识的系统[6],其一般结构如图2所示。
图2 Agent内部结构
Agent通过传感器接收外界环境的信息,根据内部状态进行信息融合,产生修改当前状态的指令。然后,在知识库的支持下进行推理判断,形成一系列动作,通过效应器对环境发生作用。
在JADE中,Agent的动作通过Behaviour类实现,动作的具体定义写在Behaviour类的action()方法中。一个Agent可以有多个Behaviour,它们可以并发执行。
Agent知识库和推理机使用Jess来实现,Jess是当前流行专家系统开发工具之一,它具有CLIPS的风格,小巧快速,而且完全由Java语言开发,因此易于与JADE集成[7]。Agent的知识库包含了与应用领域相关的事实、原理、规则等,每一条知识定义为一条Jess规则,每个Agent的知识库定义为一个Jess规则文件。
Agent的推理机由Jess的推理引擎Jess.Rete充当,封装于Agent的行为中,如下所示:
class InferenceEngine extends CyclicBehaviour {
private Jess.Rete engine; //推理机
//初始化推理机
InferenceEngine (Agent agent, String ruleFile) { // ruleFile为Jess规则库文件
super(agent);
engine = new Jess.Rete(); //创建推理机
try {
//加载规则库
FileReader fr = new FileReader(ruleFile);
Jess.Jesp j = new Jess.Jesp(fr, Jess);
try {
j.parse(false);
} catch (engine.JessException je) { }
}catch(……){……}
public void action() {
try {
engine.run(); //启动推理机
}
……
}
3 基于JADE与Java EE的智能化煤矿安全管理平台
3.1 需求分析
煤炭是国民经济和社会发展的基础,然而随着煤炭开采量的不断扩大和煤矿开采深度的逐年增加,煤矿安全问题日益突出。引起煤矿安全事故的因素主要有瓦斯、煤尘、水灾、火灾、顶板及冲击地压、提升与运输危险、电气危险等。传统的安全系统只是监测某些环境参数,并对其进行单一的列表显示而已,控制功能也比较独立,无法做到体系化综合性的安全评价与事故防控[8]。
在智能化的煤炭安全管理平台中,要能够实现对现场采集的各种安全监测数据进行自动的分析和处理,当某一安全因素监测值变化异常时,要能够做出适当反应:如超过安全阈值时,自动启动安全设备进行排险;值增加速率超过正常水平时,发出安全预警并进行原因分析等。另外,还要能够对各种因素之间的相关性进行分析和挖掘,从以往的安全记录中学习经验等功能。
3.2 系统设计与实现
系统中的Agent采用树形结构组织(见图3)。影响煤矿安全生产的各种因素由专门的Agent进行处理,由此设计出空气Agent、水情Agent、地质Agent、排水Agent、通风Agent、设备Agent等。空气Agent负责实时地对收集到的井下大气质量数据,包括瓦斯含量、粉尘含量、CO含量、大气温度、大气湿度等进行分析和处理;水情Agent负责处理井下水文情况;地质Agent负责处理井区地质变化情况;排水Agent和通风Agent管理通风设备和排水设备,根据相关Agent发送的消息启动或停止设备运行;设备Agent监控掘进、运输等生产设备的状态。这些Agent首先对收集到的各类数据进行初步处理,当某种数据超出安全阈值时,进行紧急处理;然后把数据发送到矿井安全Agent做进一步分析。
图3 煤矿安全系统中Agent组织结构图
矿井安全Agent对本矿井各Agent发送的数据进行分析,进而判断本矿井的安全状态。一个煤矿往往有多个矿井,煤矿安全Agent对各个矿井的安全数据进行综合分析和学习,获取安全经验。
确定了系统中所包含的Agent后,接着在JADE环境下进行实现。每个Agent是一个由jade.core.Agent派生的特殊的Java类,其行为定义为Behaviour类的子类,知识库由Jess定义。系统与用户的交互由Java EE客户端组件JSP和Servlet完成,数据库采用Oracle 11g。
系统运行时Agent情况如图4所示。
图4 JADE平台
4 结束语
JADE是一种开源的Agent开发和运行平台,它为Agent的运行提供了容器支持。由于都是在Java虚拟机上运行,因此JADE平台和Java EE平台可以较好的集成。在开发网络应用系统时,用Java EE的表示层组件实现系统与用户的接口,后台的数据分析与处理等功能由Agent组件来完成,既可以充分利用Agent的主动性、智能性强等特点,又能够利用Java EE平台的开发工具丰富、开发效率高等优势,从而快速高效地开发智能化的Web应用系统。
参考文献:
[1] 高济.人工智能高级技术导论[M].北京:高等教育出版社,2009.
[2] Fabio Bellifemine,Giovanni Caire,Dominic Greenwood.Developing Multi Agent Systems with JADE[M].New Jersey:John Wiley&Sons,2007.
[3] 尹晓霈,黄鹏.MVC模式在JADE系统开发中的应用[J].工业仪表与自动化装置,2008(4):19-22.
[4] 于卫红.基于JADE平台的多Agent系统开发技术[M].北京:国防工业出版社,2011.
[5] M Nikraz,G Caire, PA Bahri.A Methodology for the Analysis and Design of Multi-Agent Systems using JADE[J].International Journal of Computer Systems Science and Engineering,2006(5):22-25.
[6] 倪建军.复杂系统多Agent建模与控制的理论及应用[M].北京:电子工业出版社,2011.
[7] Ernest Friedman-Hill.Jess in Action[M].Greenwich:Manning Publications Co,2003.
[8] 许满贵.煤矿动态综合安全评价模式及应用研究[D].西安:西安科技大学,2006.