蘇耀峰
摘要:介紹了混合編程方法原理,針對(duì)Matlab和Java混合編程進(jìn)行了深入分析,使用Matlab的開源DEA算法,通過(guò)生成Jar包的方式,使用Java程序調(diào)用,得出某年度網(wǎng)絡(luò)運(yùn)維效能評(píng)估結(jié)論。評(píng)估方法具有通用性強(qiáng)、擴(kuò)展性好等特點(diǎn),可廣泛應(yīng)用于各類系統(tǒng)效能的量化評(píng)估。
關(guān)鍵詞:混合編程;網(wǎng)絡(luò)運(yùn)維;網(wǎng)絡(luò)效能評(píng)估
DOIDOI:10.11907/rjdk.161101
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2016)005-0145-02
0 引言
網(wǎng)絡(luò)運(yùn)行維護(hù)的主要任務(wù)是定期統(tǒng)計(jì)、分析和評(píng)估網(wǎng)絡(luò)運(yùn)行情況,及時(shí)發(fā)現(xiàn)和處置各類故障,確保網(wǎng)絡(luò)及其承載的業(yè)務(wù)安全、穩(wěn)定和可靠運(yùn)行。運(yùn)維效能評(píng)估是按照一定的評(píng)價(jià)標(biāo)準(zhǔn),采用科學(xué)的方法檢驗(yàn)和評(píng)定某一系統(tǒng)或某項(xiàng)活動(dòng)的實(shí)施效果,用定性和定量指標(biāo)判定其運(yùn)作成效,同時(shí)尋找缺陷和弱點(diǎn)及其制約原因,從而改進(jìn)運(yùn)作和管理機(jī)制,優(yōu)化資源配置,提升工作績(jī)效,是實(shí)施科學(xué)管理的重要手段。網(wǎng)絡(luò)運(yùn)維效能評(píng)估的一個(gè)關(guān)鍵環(huán)節(jié)是選擇恰當(dāng)?shù)脑u(píng)估方法,比如模糊評(píng)判法、數(shù)據(jù)包絡(luò)分析法等,有時(shí)還需要綜合多種方法才能得出較準(zhǔn)確的評(píng)估結(jié)果。這些方法在系統(tǒng)建模、模型運(yùn)算、數(shù)據(jù)整理等方面都較復(fù)雜,給效能評(píng)估工作帶來(lái)了困難。
Matlab由美國(guó)MathWork公司研制,主要提供科學(xué)計(jì)算的基礎(chǔ)環(huán)境,實(shí)現(xiàn)可視化與交互式程序設(shè)計(jì),已經(jīng)成為眾多學(xué)科領(lǐng)域的計(jì)算與分析平臺(tái)。Matlab實(shí)現(xiàn)了很多復(fù)雜算法,包含豐富的開源算法資源,這些算法資源給實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)維效能評(píng)估帶來(lái)了便利,也為系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)提供了手段。但是,Matlab在用戶界面設(shè)計(jì)方面表現(xiàn)較弱,若要發(fā)揮其計(jì)算功能強(qiáng)大的優(yōu)點(diǎn),還需要使用其它程序設(shè)計(jì)語(yǔ)言配合。本文擬通過(guò)混合編程方法,綜合Matlab與Java兩種語(yǔ)言特點(diǎn)來(lái)進(jìn)行網(wǎng)絡(luò)運(yùn)維效能評(píng)估。
1 混合編程原理
混合編程是指使用兩種或兩種以上程序設(shè)計(jì)語(yǔ)言來(lái)開發(fā)應(yīng)用程序的過(guò)程,如VC與Matlab、Java與Matlab、VC與Java等等。Java語(yǔ)言具有平臺(tái)無(wú)關(guān)性和易擴(kuò)展等優(yōu)點(diǎn),通過(guò)使用Java調(diào)用Matlab,可以充分發(fā)揮這兩種語(yǔ)言的優(yōu)勢(shì)。Java調(diào)用Matlab的方法主要有COM組件方法和Jar包方法。
1.1 COM組件方法
COM組件方法是將使用Matlab編寫的m文件轉(zhuǎn)換為COM組件,然后利用第三方工具包在Java程序中調(diào)用COM組件,實(shí)現(xiàn)調(diào)用Matlab算法。其具體實(shí)現(xiàn)有Jawin和Jacob兩種方法。
(1)Jawin(Java/Win32)。Jawin建立了一個(gè)開放源代碼的、免費(fèi)的體系結(jié)構(gòu),可實(shí)現(xiàn)Java組件與Windows DLL公開的組件或者Windows COM對(duì)象之間的互操作。Jawin允許Java編寫的應(yīng)用程序任意調(diào)用基于DLL或COM的原始代碼,并且不需要構(gòu)造任何JNI代碼。比如調(diào)用微軟的基于COM的XML解析器和工具,訪問(wèn)Win32 API特性,比如安全API、Windows注冊(cè)表與事件日志等。Jawin可以通過(guò)一個(gè)COM組件的代碼生成器讀取類型庫(kù),并生成從Java應(yīng)用程序調(diào)用該組件所需要的Java stub。
(2)Jacob(Java COM Bridge)。Jacob是一個(gè)開始于1999年的開源項(xiàng)目,通過(guò)JNI功能訪問(wèn)Windows平臺(tái)下的COM組件或者Win32系統(tǒng)庫(kù)。其核心是基于JNI技術(shù)實(shí)現(xiàn)的Variant、Dispatch等接口,使用Jacob的相關(guān)類庫(kù)(Jacob.jar、Jacob.dll)搭設(shè)從Java到COM的交互橋梁。通過(guò)該方法可以方便地完成Word、Outlook等對(duì)象操作,并繞開操作這些對(duì)象所隱藏的細(xì)節(jié)部分。
1.2 Jar包方法
Jar包方法是將Matlab的m文件打包成Java可以直接讀取的Jar文件格式的方法。Jar包包含各種類庫(kù),可被Java直接引用并使用其中的類和方法,其具體實(shí)現(xiàn)主要是使用Matlab自帶的Deploy Tool工具。
Matlab的Deploy Tool支持Matlab工程編譯成各類結(jié)果,如一般的Windows應(yīng)用程序、Matlab for .NET/COM、Matlab for Java、Matlab for Excel等等。其原理是通過(guò)MCC編譯器將m文件轉(zhuǎn)化為相應(yīng)的c語(yǔ)言文件,包括數(shù)據(jù)文件,進(jìn)而調(diào)用通用的C/C++編譯器將先前的文件編譯成控件庫(kù)或者可執(zhí)行文件。當(dāng)目標(biāo)機(jī)器沒有安裝Matlab運(yùn)行環(huán)境時(shí),該工具還提供Matlab運(yùn)行環(huán)境功能,并且打包需要用到的資源文件,為其它語(yǔ)言直接使用提供便利。
2 混合編程實(shí)例
為了驗(yàn)證混合編程方法在網(wǎng)絡(luò)運(yùn)維效能評(píng)估中的應(yīng)用,首先選用DEA評(píng)估方法,然后使用Matlab實(shí)現(xiàn)該算法并進(jìn)行Jar打包發(fā)布,再利用Java程序進(jìn)行調(diào)用,最后進(jìn)行評(píng)估結(jié)論分析。
2.1 DEA評(píng)估方法
數(shù)據(jù)包絡(luò)分析(Data Envelopment Analysis,DEA)是由美國(guó)學(xué)者在“相對(duì)效率評(píng)價(jià)”基礎(chǔ)上發(fā)展起來(lái)的一種行之有效的系統(tǒng)分析方法,它的理論基礎(chǔ)是相對(duì)效益概念,主要工具是數(shù)學(xué)規(guī)劃,主要方法是優(yōu)化算法,根據(jù)多指標(biāo)投入、產(chǎn)出數(shù)據(jù),對(duì)相同類型單位的相對(duì)有效性進(jìn)行評(píng)價(jià)。
DEA方法評(píng)估模型主要有CCR與BCC模型,其中,CCR模型主要針對(duì)在規(guī)模收益不變的情況下決策單元的效能評(píng)估,可分為分式規(guī)劃和線性規(guī)劃;BCC模型是基于CCR模型的擴(kuò)展,涵蓋了規(guī)模收益,并建立在滿足凸性、錐性、無(wú)效性和最小性的假設(shè)基礎(chǔ)上。
使用DEA方法評(píng)估網(wǎng)絡(luò)運(yùn)維效能,必須首先確定投入產(chǎn)出指標(biāo),然后選擇決策單元。根據(jù)已有研究成果,將投入人力作為輸入指標(biāo),設(shè)備數(shù)量、光纜長(zhǎng)度、可用率作為輸出指標(biāo)。網(wǎng)絡(luò)運(yùn)維各單位可以作為DEA評(píng)估的決策單元,但是應(yīng)遵守如下規(guī)則:若n為決策單元樣本容量,m和s分別為投入和產(chǎn)出指標(biāo)的數(shù)量,則n≥max[m×s,3(m+s)]。
2.2 混合編程實(shí)現(xiàn)
為了輕量化設(shè)計(jì)以及核心算法重用,采用B/S結(jié)構(gòu)實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)維效能評(píng)估。其中,服務(wù)器端采用Web Sevice方式處理用戶請(qǐng)求,由Java調(diào)用Matlab算法程序進(jìn)行計(jì)算并返回結(jié)果;客戶端使用網(wǎng)頁(yè)發(fā)送用戶請(qǐng)求(待評(píng)估數(shù)據(jù)),并接收計(jì)算結(jié)果,工作流程如圖1所示。
(1)Matlab程序?qū)崿F(xiàn)。采用開源DEA法的Matlab實(shí)現(xiàn),主要功能按照效率(綜合效率和純技術(shù)效率)、形式(包絡(luò)分析和乘數(shù)分析)、面向(面向投入和面向產(chǎn)出)等要素組合為8個(gè)模塊,分別為:①面向投入的綜合效率模型包絡(luò)分析(DEACRSEI);②面向產(chǎn)出的綜合效率模型包絡(luò)分析(DEACRSEO);③面向投入的綜合效率模型乘數(shù)分析(DEACRSMI);④面向產(chǎn)出的綜合效率模型乘數(shù)分析(DEACRSMO);⑤面向投入的純技術(shù)效率模型包絡(luò)分析(DEAVRSEI);⑥面向產(chǎn)出的純技術(shù)效率模型包絡(luò)分析(DEAVRSEO);⑦面向投入的純技術(shù)效率模型乘數(shù)分析(DEAVRSMI);⑧面向產(chǎn)出的純技術(shù)效率模型乘數(shù)分析(DEAVRSMO)。每個(gè)模塊均封裝為獨(dú)立函數(shù),并帶有決策單元投入指標(biāo)、產(chǎn)生指標(biāo)矩陣參數(shù),通過(guò)參數(shù)輸入進(jìn)行計(jì)算并得出分析結(jié)果。
(2)Jar包生成。在Matlab中的輸入命令窗口鍵入“deploytool”命令后會(huì)出現(xiàn)Deployment Tool部署工具。首先,在部署工具中點(diǎn)擊new按鈕,選擇Matlab Builder for Java與Java Package,新建DEAAnalysis工程。然后,將Matlab設(shè)計(jì)的m文件從工作目錄面板拖拽到部署工具中的新建類文件夾中,添加Java需要調(diào)用的類和方法。最后點(diǎn)擊build按鈕生成與工程同名的文件夾,編譯成功后,即生成DEAAnalysis.jar文件。生成過(guò)程中需要注意的是,如果目標(biāo)機(jī)器沒有Matlab運(yùn)行環(huán)境時(shí),需要勾選add MCR選項(xiàng),將Matlab實(shí)時(shí)運(yùn)行環(huán)境打包。
(3)Java程序設(shè)計(jì)。服務(wù)器端使用Jetty開源Web服務(wù)器提供訪問(wèn)服務(wù),接收客戶端httpClient發(fā)送的待評(píng)估數(shù)據(jù)。接收到評(píng)估數(shù)據(jù)后,進(jìn)行解析并使用DEA分析類進(jìn)行多次評(píng)估,直到達(dá)到評(píng)估要求。最后,填充http響應(yīng)并返回客戶端,具體流程如圖2所示。
2.3 評(píng)估測(cè)試結(jié)果
使用混合編程方法驗(yàn)證某年度網(wǎng)絡(luò)運(yùn)維效能評(píng)估,評(píng)估結(jié)果如表1所示,達(dá)到了預(yù)期效果。
3 結(jié)語(yǔ)
混合編程方法是多種語(yǔ)言混合使用的開發(fā)方法,可充分發(fā)揮不同語(yǔ)言優(yōu)勢(shì)。針對(duì)網(wǎng)絡(luò)運(yùn)維效能評(píng)估,可使用Matlab編程減少?gòu)?fù)雜算法設(shè)計(jì)和運(yùn)算負(fù)載。使用Java編程,面向?qū)ο笤O(shè)計(jì)服務(wù)模式和相關(guān)界面,通過(guò)Java調(diào)用Matlab生成的Jar包的方式進(jìn)行混合編程。通過(guò)實(shí)例驗(yàn)證,使用混合編程方法可科學(xué)評(píng)價(jià)網(wǎng)絡(luò)運(yùn)維,保障運(yùn)維效能,及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)運(yùn)維過(guò)程中出現(xiàn)的配置不好、設(shè)備分配不當(dāng)、保障任務(wù)不均等問(wèn)題,為調(diào)配各類資源提供合理建議。該方法降低了網(wǎng)絡(luò)運(yùn)維效能評(píng)估復(fù)雜度,評(píng)估系統(tǒng)擴(kuò)展性好、使用方便,具有較好的推廣價(jià)值。
參考文獻(xiàn):
[1]翟軍紅,王紅宣. 基于VC與Matlab混合編程的研究[J]. 微計(jì)算機(jī)信息,2007,23(31):226-228.
[2]HANSELMAN D. 精通Matlab7[M]. 朱仁峰,譯. 北京:清華大學(xué)出版社,2006.
[3]敬人可,李建增. 混合編程在實(shí)時(shí)超聲無(wú)損檢測(cè)中的應(yīng)用[J]. 國(guó)外電子測(cè)量技術(shù),2012,31(6):63-66.
[4]劉維.精通Matlab與C/C++混合編程設(shè)計(jì)[M]. 北京 :北京航空航天大學(xué)出版社, 2012.
[5]陳龍,苑秉成,謝勇. 基于Matlab與VC的魚雷彈道三維可視化實(shí)現(xiàn)[J]. 艦船電子工程,2013,33(2):138-140.
(責(zé)任編輯:杜能鋼)