新闻中心

EEPW首页>手机与无线通信>设计应用> 污水处理智能化系统的Multi-Agent通信技术与实现

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

作者: 时间:2010-03-12 来源:网络 收藏

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所示。

本文引用地址://m.amcfsurvey.com/article/157574.htm

  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提出了系统的,确定了其通信方式、通信策略与,并给出了JADE 3.1软件开发平台上的方法。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭