• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

    本文引用地址:http://www.czjhyjcfj.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 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 建昌县| 泸州市| 越西县| 肇庆市| 平原县| 湟源县| 金寨县| 延吉市| 湖北省| 封开县| 永福县| 莒南县| 饶河县| 新民市| 大同县| 遂溪县| 疏附县| 万荣县| 邛崃市| 台东县| 黎城县| 嘉鱼县| 卫辉市| 宝鸡市| 沙坪坝区| 临朐县| 宁国市| 东方市| 靖西县| 平泉县| 惠州市| 遂溪县| 大悟县| 平塘县| 东乡| 仙桃市| 永吉县| 乌海市| 汤原县| 穆棱市| 临汾市|