污水处理智能化系统的Multi-Agent通信技术与实现

污水处理智能化系统的multi-agent通信技术与实现
分布式人工智能(distributed artificial intelligence,dai)理论主要研究在逻辑上或物理上分散的智能系统如何并行地、相互协作地进行问题求解[1]。作为dai研究的一个重要分支和前沿学科,基于多智能体系统(multi-agents system,mas)的分布式智能系统已受到控制领域研究人员的极大关注[2][4]。mas的基本思想是将大的复杂系统建造成小的、彼此能相互通信及协调的、易于管理的agent(智能体,代理)。当单一智能系统没有足够的知识、资源和信息去解决一个复杂的问题时,有必要研究如何使较多的小型智能系统之间相互协调、相互合作,以解决较大规模的复杂问题。本文基于multi-agent理论对于复杂系统的强大表现力及其开放性、智能化的特性,提出了一种构建污水处理智能化系统通用模型的新思想,用mas理论集成污水处理系统中分散分布的众多模型和参数,从而有效解决污水处理这一复杂工业过程的控制问题。
1 基于multi-agent的污水处理分布式智能化系统
基于multi-agent的污水处理智能化系统模型结构如图1所示。系统中每个agent根据环境信息完成各自承担的工作,多个agent分工协作,形成一个有组织、有秩序的群体,共同完成特定的任务。
执行agent位于现场层,实现参数采集及现场控制的功能;冲突消解agent是该智能化系统的核心,其功能是通过对任务规划信息、故障信息、系统状态信息以及其他agent的协作请求信息等的融合,对 agent行为所产生的冲突进行消解;数据服务agent的功能是为其他agent提供统一、灵活的访问实时数据库的接口;软测量agent的功能是通过易测变量与难测变量之间的数学关系,实现难测变量的测量;故障诊断agent是一个专家系统,可对污泥膨胀、污泥解絮、曝气池泡沫等故障现象进行诊断,并提出解决对策。
agent间相互交换信息、进行协调或合作、解决超出单个agent能力或知识的问题,并真正具有社会性的关键是agent间可以通信。因此, agent通信是multi-agent系统研究的重要问题之一。
2 mas的通信语言
agent通信语言(agent communication language,acl)提供了agent之间交换信息和知识的工具,使agent之间相互作用达到求解问题的目的。acl使agent通信建立在知识级别(knowledge level)上,从而使agent间的通信效率大大高于传统的分布式计算中的通信。
目前主要有两种acl,一种是1993年美国arpa的kse 研究小组提出的kqml(knowledge query and manipulation language);另一种是1997年欧洲的fipa(foundation for intelligent physical agents)协会制定的开放性标准fipa-acl。fipa标准由一系列规范组成,用于规范一个应用程序内部agent之间和不同应用程序agent之间的互操作,并对多agent应用程序互操作中相应的功能模块进行标准化。由于fipa-acl在构建新的原语方面具有很强的能力,并且采用sl(semantic language)作为它的内容语言来描述agent的状态,所以,fipa-acl有逐渐代替kqml的趋势。
2.1 fipa-acl的系统组成
fipa标准由一系列规范组成,每个规范对多agent应用程序互操作中相应的功能模块进行标准化。fipa-acl规范集合在整个fipa规范中的位置及其内部的功能规范组成结构如图2所示。
由图2可见,fipa-acl规范集合是整个fipa标准中极其重要的组成部分,它与agent管理规范集合、agent消息传输规范集合构成了fipa标准的主体部分。interaction protocols规范集合定义了fipa-acl可采用的互操作协议(如请求互操作协议);communicative acts规范集合则将agent在使用fipa-acl进行通信过程中的各种语言行为单元(如:request、agree、refuse等)规范为一个cal(communicative acts library)库规范;content languages规范集合定义了应用在fipa-acl消息的内容上不同的表示方式(如:sl),它们可提供不同标准的编码形式。
2.2 fipa-acl通信机制
agent之间的通信是通过构造、封装、传输acl消息进行的,acl消息的主要结构如表1所示。
agent a为了和agent b进行通信,首先应该构建acl消息。如果b提供的服务应采用请求互操作协议,则acl的protocol参数就设为fipa-request。a是此次互操作对话的发起者,它与b的第一次通信应视为请求互操作协议的第一个请求动作,这在cal库规范中描述为request行为,所以acl的performative参数应为request。封装好整个acl消息后,agent a选用适当的编码方式将其编码,形成有效载荷(payload),然后再添加信封,信封中包含a和b进行通信所使用协议对应的协议地址。最后,a采用此传输协议将信息传送给agent b。agent b收到a发送的消息并根据消息具体的内容加以判断后,按照请求互操作协议所规定的操作流程对a进行回答。
3 系统的通信技术与实现
基于fipa-acl的污水处理multi-agent智能化系统是在开源java项目jade(java agent development framework)提供的多agent平台上实现的。jade完全符合fipa标准,为多agent系统的开发者提供了一个功能强大的开发框架,使开发者无需亲自从头实现fipa的具体规范就能开发出符合fipa标准的多agent系统。
3.1 通信方式的确定
mas通信主要有四种连接方式:黑板模式、联邦方式、广播方式、点到点方式。通信传递方式有消息传递、方案传递两种。本系统agent之间通信前都通过agent管理平台提供的服务查询机制来定位欲通信的agent,然后两个agent进行直接通信;而agent之间传输的信息是互操作命令、参数和操作结果,没有设计到方案传递。所以本系统采用的是点对点的消息传递通信方式。
3.2 通信策略
本系统中的数据服务agent、冲突消解agent、故障诊断agent分别为整个系统中的其他agent提供数据查询和写入服务、冲突识别和消解服务、故障诊断服务,请求每种服务的agent必须要先定位到服务提供者,这就要求一种服务注册和定位机制。fipa标准中定义了在agent系统中必须存在的df(directory facilitator)agent。上述三个服务提供者启动时就会在df中注册自己提供的服务,如:某个执行agent需要冲突消解服务时,它会通过查询df来得到冲突消解agent的通信地址和服务使用的互操作协议等信息,然后根据互操作协议规定的对话方式与协调agent通信。
jade提供了默认的df agent,服务提供者(如数据服务agent)欲注册自己的服务,其主要代码如下:
service description sd=new service description( );
//创建服务描述对象,描述服务属性
df agent description dfad=new df agent description( );
//创建自身描述对象,描述自身信息
codec language=new slcodec( );//采用sl内容语言规范
ontology ontology=basic ontology.getinstance( );
//采用基本本体语言构建服务描述对象
sd.setname(getlocalname( ));
sd.settype(″swagedisposedataservice″);//为服务命名,其他agent查询服务时就用此名字
sd.addprotocols(interactionprotocol.fipa_request);
//服务所采用的互操作协议
sd.addlanguages(language.getname( ));
sd.addontologies(ontology.getname( ));
 //构建自身描述对象
dfad.addprotocols(interactionprotocol.fipa_request);
dfad.addlanguages(language.getname( ));
dfad.addontologies(ontology.getname( ));
dfad.setname(getaid( ));
 //使自身具有构建的服务描述对象
dfad.addservices(sd);
try{
  dfservice.register(this,dfad);//在平台提供的默认df中注册自己的服务
}catch(fipaexception e){
 //处理异常
}
当冲突消解agent需要此服务时,可通过下面的代码来搜索df,并定位到此服务的提供者,即数据服务agent[6]。
…… //部分变量申明与上段代码相同
dfagentdescription dfd[ ];//用于存储提供此服务的
 //agent描述信息(服务提供者可能不止一个)
 //构建服务描述对象
sd.settype(″swagedisposedataservice″);
sd.addlanguages(language.getname( ));
sd.addontologies(ontology.getname( ));
sd.addprotocols(interactionprotocol.fipa_request);
dfad.addservices(sd);
try{
  dfd=dfservice.search(this,dfad);//在默认df中搜索服务提供者
  …… //与服务提供者通信
}catch (fipaexception e){
//处理异常
}
3.3 通信协议
本系统agent之间通信都采用请求互操作协议,即acl消息的protocol参数均为fipa-request,用uml表示的该协议流程如图3所示。
agent提供服务所需的参数和操作结果都包含在acl消息的content参数中。
3.4 通信内容
在本系统中,agent之间的通信内容是封装在自定义的cso(communication seriable object)类中,通过jade提供的串行化接口,可将cso对象作为acl消息的content参数在任意agent之间传递,能达到很好的可扩展效果。cso的类结构如下:
public class cso implements serializable {
 private string[ ] arg;//服务参数
 private float[ ] value;//服务结果
 private string comment;//注释
……
}
系统中的数据服务agent提供数据查询和数据写入服务,它根据服务使用者在cso.arg[ ]中传送的参数进行实时数据库操作,并将查询结果存储在cso.value[ ]中返回给请求者。冲突消解agent接收执行agent的冲突识别请求(此请求不带参数),并根据冲突识别算法的需要请求数据服务agent的数据查询服务或故障诊断agent的故障诊断服务,将消解结果命令或无冲突命令存放于cso.arg[0]中,再向执行agent传送。故障诊断agent向冲突消解agent提供故障诊断服务时也需要从cso.arg[ ]中获取参数,并将诊断结果存放于cso.value[ ]中,以表明请求诊断的故障是否出现。
本文基于fipa-acl提出了污水处理multi-agent智能化系统的通信技术,确定了其通信方式、通信策略与通信协议,并给出了jade 3.1软件开发平台上的实现方法。

泰克宣布面向个人提供全新Initial State数据流和可视化服务
电气设备着火如何处理
如何使HC-05蓝牙模块运行在5v上
AUI端口?什么是AUI端口
开关柜智能控制装置应用场景
污水处理智能化系统的Multi-Agent通信技术与实现
BOE(京东方)高刷新率显示技术获2021年度北京市科学技术进步奖一等奖
开售在即!OPPO Reno5开启人像视频时代
佳能5Ds单反相机拥有5060万有效像素,解决了被摄体不上焦或拍抖的问题
04/25 太原 PXI技术发展与趋势研讨会
DS2155和DS21458之间的细微差别
5G 使 AV 成为车轮上的数据中心
Delonix Bioworks宣布完成1400万美元的种子轮融资
基准分数突出了广泛的机器学习推理性能
如何用机器学习练出一个玩“石头剪刀布”的大师出来
采用Honeywell S9000系统实现对锅炉燃烧进行优化控制
75Ω高通滤波器控制UHF进入卫星DBS调谐器
五种光纤传感器的原理与应用
详解纱线弹性拉伸实验:电子万能试验机操作流程全揭示!
关于信号链路问题的一些小测试