汪儉華,馮錫煒,張永攀,關(guān) 滄,畢福偉
(1.遼寧石油化工大學(xué) 計算機(jī)與通信工程學(xué)院,遼寧 撫順 113001;2.撫順石化公司石油三廠 遼寧 撫順 113001)
隨著現(xiàn)代科技的發(fā)展,蒙特卡羅模擬算法因為能夠?qū)⒉淮_定性隨機(jī)事件以概率的形式表示出來,以這種事件出現(xiàn)的頻度估計這一隨機(jī)事件的概率來求得近似解,較好地解決了各種不確定性問題,從而在物理科學(xué)、機(jī)械制造、金融計算、信息科學(xué)以及計算機(jī)科學(xué)等多個領(lǐng)域得到廣泛的重視和應(yīng)用[1]。蒙特卡羅模擬算法的主要思想為:當(dāng)所求解問題是某種隨機(jī)事件出現(xiàn)的概率,或者是某個隨機(jī)事件的期望值時,通過某種“實(shí)驗”的方法,以這種事件出現(xiàn)的頻率估計這一隨機(jī)事件的概率,或者得到這個隨機(jī)事件的某些數(shù)字特征,并將其作為問題的解。
蒙特卡羅模擬分析結(jié)果的精度取決于采樣次數(shù)和計算次數(shù),隨著采樣次數(shù)和計算次數(shù)的增加,得到的結(jié)果也就越準(zhǔn)確,但是相應(yīng)的計算速度就會降低,尤其是在大規(guī)模采樣下的計算量很大時,得到最終結(jié)果的計算速度會更慢。為了獲得精確、高效的結(jié)果,必須設(shè)計一個具有高性能計算能力的平臺來支撐。
本文以建立在Platform Symphony之上的云計算平臺為載體,通過Java編程對平臺功能進(jìn)行擴(kuò)展,并將Excel和COM組件與云計算平臺進(jìn)行集成,實(shí)現(xiàn)了基于云計算的蒙特卡羅模擬分析。
云計算是一種新興的網(wǎng)絡(luò)計算技術(shù),它提供了通過網(wǎng)絡(luò)訪問、可動態(tài)配置的計算資源池。云計算涵蓋的范圍很廣泛,內(nèi)容也很豐富,通常將其分為以下3層[2-3]:
IaaS(Infrastructure as a Service,基礎(chǔ)設(shè)施即服務(wù))。 將服務(wù)器、網(wǎng)絡(luò)設(shè)備、存儲設(shè)備等硬件資源集成為資源池供用戶按需使用。
PaaS(Platform as a Service,平臺即服務(wù))。為用戶提供一個完整的平臺,它包含應(yīng)用開發(fā)、接口開發(fā)、數(shù)據(jù)庫開發(fā)等,保證信息平臺在實(shí)現(xiàn)技術(shù)方面的擴(kuò)展性和兼容性。
SaaS(Software as a Service,軟件即服務(wù))。為用戶提供基于網(wǎng)絡(luò)的應(yīng)用軟件服務(wù)。
三層結(jié)構(gòu)在真實(shí)的云計算環(huán)境中是可以相對獨(dú)立存在的,可以逐層搭建云系統(tǒng),也可以根據(jù)需要只搭建其中的一層或幾層。
Platform Symphony是Platform Computing公司開發(fā)的面向服務(wù)架構(gòu)的云計算平臺,用戶可以使用其提供的編程接口擴(kuò)展程序功能,從而得到個性化的服務(wù)[4]。Symphony基于主從架構(gòu),由主服務(wù)器將任務(wù)發(fā)送給從服務(wù)器執(zhí)行計算,其架構(gòu)如圖1所示。
圖1 Symphony架構(gòu)圖Fig.1 Structure diagram of the symphony
SD(Session Director,服務(wù)注冊中心)。運(yùn)行在主服務(wù)器上,對通過編程接口開發(fā)的應(yīng)用程序進(jìn)行注冊之后供客戶端使用。同時為各個子服務(wù)提供任務(wù)分配者模塊SSM,并與客戶端進(jìn)行連接。
SSM(Symphony Session Manager,任務(wù)分配者)。運(yùn)行在主服務(wù)器上,負(fù)責(zé)接受客戶端提交的任務(wù),并根據(jù)相應(yīng)的調(diào)度配置策略(可以自行配置)將任務(wù)發(fā)送到合適的從服務(wù)器上執(zhí)行。
SIM(Service Instance Manager,任務(wù)執(zhí)行者)??梢赃\(yùn)行在主服務(wù)器與從服務(wù)器上,負(fù)責(zé)執(zhí)行具體的任務(wù)。它從SSM獲取需要執(zhí)行的任務(wù),并將執(zhí)行結(jié)果返回給SSM,SSM接受后統(tǒng)一發(fā)送到客戶端。
資 源 管 理 模 塊 (Resource Orchestrator)。 負(fù) 責(zé) 管 理Symphony中的所有計算資源。
編程接口。供開發(fā)人員開發(fā)應(yīng)用程序來擴(kuò)展平臺的功能。
微軟出品的Excel是一款優(yōu)秀的數(shù)值計算軟件,功能強(qiáng)大、操作簡單,可以用于數(shù)據(jù)處理、統(tǒng)計分析和輔助決策等操作。它還支持創(chuàng)建Excel宏命令以及VBA(Visual Basic For Application)編程來擴(kuò)展自身的功能,Excel經(jīng)過功能擴(kuò)展之后可以與云計算平臺進(jìn)行集成。集成的流程如下:1)創(chuàng)建Excel宏命令;2)使用 VBE(Visual Basic Editor)編程實(shí)現(xiàn)基本程序功能,然后通過API接口進(jìn)行功能擴(kuò)展;3)調(diào)用COM組件將Excel與云計算平臺集成。
COM組件是微軟為了軟件的研發(fā)更適合人類的行為邏輯而推出的軟件開發(fā)技術(shù)[5]。在COM架構(gòu)下,開發(fā)人員可以開發(fā)出各種功能專一的組件,然后將其按照需要組合構(gòu)成復(fù)雜的應(yīng)用。它有以下優(yōu)點(diǎn):1)可以隨時替換現(xiàn)有的組件,方便進(jìn)行功能擴(kuò)展;2)同一個組件可以在多個應(yīng)用中復(fù)用,利于模塊化開發(fā);3)可以將應(yīng)用部署到網(wǎng)絡(luò)環(huán)境。
基于云計算的蒙特卡羅模擬平臺運(yùn)用現(xiàn)代化的計算機(jī)技術(shù)以突破時間、空間的制約,通過精簡、優(yōu)化、整合計算資源來進(jìn)行蒙特卡羅模擬分析,使所得的結(jié)果更加的精確、高效。根據(jù)蒙特卡羅模擬算法和云計算技術(shù)特點(diǎn)[6],其結(jié)構(gòu)如圖2所示。
基礎(chǔ)設(shè)施:由計算節(jié)點(diǎn)、存儲設(shè)備、網(wǎng)絡(luò)設(shè)施以及基礎(chǔ)軟件組成的計算集群資源池。利用廉價的設(shè)備動態(tài)擴(kuò)展資源池,以較低投資獲得高性能計算的能力。
軟件應(yīng)用:將蒙特卡羅模擬算法轉(zhuǎn)化為應(yīng)用服務(wù),提供給客戶端使用。
2.2.1 搭建計算節(jié)點(diǎn)集群
集群使用4個計算節(jié)點(diǎn),每個節(jié)點(diǎn)配置相同,CPU是1.83 GHz,內(nèi)存2 G,千兆以太網(wǎng)卡,操作系統(tǒng)為Windows Server 2008,Java環(huán)境為 JDK 1.7,平臺軟件為 Symphony DE 5.0。
1)雙擊Windows平臺的安裝包SymphonyDE-5.0.0_win32.msi進(jìn)行安裝;
2)選取安裝了Symphony DE的主機(jī)Jeffw1為主服務(wù)器,對DE50confvem_resource.conf文件進(jìn)行以下配置,然后將經(jīng)過配置的文件復(fù)制到所有的從服務(wù)器相同目錄下;
3)關(guān)閉所有的服務(wù)器后進(jìn)行重啟,注意需要先啟動主服務(wù)器。
2.2.2 擴(kuò)展平臺功能
在現(xiàn)代市場經(jīng)濟(jì)條件下,住房商品化、市場化引致住房金融的產(chǎn)生和繁榮。一方面,商品住房建設(shè)需要建設(shè)貸款,商品住房開發(fā)需要開發(fā)貸款,商品住房消費(fèi)需要租賃貸款和按揭貸款等,因此,住房金融的產(chǎn)生和繁榮反過來能夠促進(jìn)住房市場繁榮。但是,另一方面,住房金融也會因為以住房商品為媒介的投資和投機(jī),容易衍生住房價格泡沫和金融泡沫,最終演化成住房危機(jī)和金融危機(jī)。因此,住房金融是本文研究的重點(diǎn)內(nèi)容。
Symphony DE支持C/C++、Java,C#等多種程序語言進(jìn)行功能擴(kuò)展。采用Java語言編寫程序,在Eclipse中利用Ant工具編譯并生成ProjectAnalysisService程序包,然后將其部署到主服務(wù)器的Symphony DE中對平臺功能進(jìn)行擴(kuò)展。右擊Symphony運(yùn)行圖標(biāo),選擇Add or Remove Application。在添加應(yīng)用向?qū)е刑砑优渲梦募rojectAnalysis.xm l,并選擇程序包ProjectAnalysisPackage.jar,單擊下一步,直到確認(rèn)即可。部署成功后,可以在管理界面看到如圖3所示內(nèi)容。
圖2 基于云計算的平臺結(jié)構(gòu)圖Fig.2 Structure diagram of the platform based on cloud
圖3 部署程序包到Symphony平臺圖Fig.3 Chart of deploy program package to the symphony platform
2.2.3 Excel與平臺集成
在Excel中調(diào)用Symphony DE的COM組件與平臺進(jìn)行集成,從Excel中啟動VBE,在VBE中單擊“工具”→“引用”,找到DE50confwin32-vc7libCOMPlatform.Symphony.Soam.COM.dll文件,點(diǎn)擊確定。集成架構(gòu)由Excel客戶端、Symphony DE云計算控制器以及平臺上所運(yùn)行的應(yīng)用服務(wù)這3個部分組成,其工作流程如圖4所示。
2.2.4 實(shí)現(xiàn)過程中的關(guān)鍵技術(shù)
1)在Symphony DE中擴(kuò)展云計算平臺
部署的Project Analysis Service程序,通過API接口連接到Symphony DE,其代碼如下:
2)Excel中調(diào)用云計算環(huán)境
在Excel中執(zhí)行云計算必須連接到Symphony DE服務(wù)器,通過初始化SOA中間件以及獲取服務(wù)來完成云計算環(huán)境的初始化,其代碼如下:
實(shí)例描述:某信息系統(tǒng)集成項目計劃投資1 000萬元,該項目預(yù)期年銷售收入為650萬元,年銷售稅金為20萬元,年經(jīng)營成本為320萬元,年折舊費(fèi)50萬元,收入與成本的波動變化幅度都為20%,分別在單機(jī)環(huán)境和云計算平臺上用蒙特卡羅模擬算法計算收益率大于等于20%的概率。
在云計算平臺上進(jìn)行蒙特卡羅模擬分析的應(yīng)用,按照如下步驟進(jìn)行:1)配置Symphony DE上的計算資源;2)初始化任務(wù)數(shù)據(jù);3)在Excel中創(chuàng)建本地分析和云計算分析;4)調(diào)用自定義的分析策略;5)啟動分析;6)在分析結(jié)束后統(tǒng)計結(jié)果。建立的實(shí)驗?zāi)P?,如圖5所示。
實(shí)驗1:單機(jī)計算節(jié)點(diǎn)為本地主機(jī),云計算節(jié)點(diǎn)由1個主服務(wù)器,3個從服務(wù)器組成。將計算次數(shù)設(shè)置為10次,采樣次數(shù)從10 000到10 000 000變化,觀察單機(jī)計算與云計算下運(yùn)行的情況。
實(shí)驗2:單機(jī)計算節(jié)點(diǎn)為本地主機(jī),云計算節(jié)點(diǎn)由1個主服務(wù)器,3個從服務(wù)器組成。將采樣次數(shù)設(shè)置為10 000次,計算次數(shù)從10到400變化,觀察單機(jī)計算與云計算下運(yùn)行的情況。
表1 實(shí)驗1結(jié)果Tab.1 Resu lt of experiment 1
實(shí)驗3:云計算節(jié)點(diǎn)數(shù)由1個到4個變化。設(shè)采樣次數(shù)置為10 000次,計算次數(shù)置為100次,觀察云計算下運(yùn)行的情況。
圖4 工作流程圖Fig.4 Flow chart of the work
圖5 實(shí)驗?zāi)P蛨DFig.5 Chart of experimental model
表2 實(shí)驗2結(jié)果Tab.2 Result of experiment 2
圖6 實(shí)驗1時間趨勢圖Fig.6 Time trend diagram of experiment 1
圖7 實(shí)驗2時間趨勢圖Fig.7 Time trend diagram of experiment 2
圖8 實(shí)驗3時間趨勢圖Fig.8 Time trend diagram of experiment 3
表1顯示了在單位計算次數(shù)下,隨著采樣次數(shù)的增加,在單機(jī)計算與云計算情況下的運(yùn)行數(shù)據(jù)。表2顯示了單位采樣次數(shù)下,隨著計算次數(shù)的增加,在單機(jī)計算與云計算下的運(yùn)行數(shù)據(jù)。隨著采樣次數(shù)與計算次數(shù)的增加,所獲的數(shù)據(jù)精度越高,但所需時間呈上升趨勢,云計算相對本機(jī)計算所需的時間大幅減少,得到的結(jié)果更加準(zhǔn)確,在大規(guī)模計算時的優(yōu)勢更為明顯,消耗的時間趨勢分別如圖6、圖7所示。圖8為不同數(shù)量的云計算節(jié)點(diǎn)進(jìn)行蒙特卡羅模擬分析所消耗的時間趨勢。隨著計算節(jié)點(diǎn)數(shù)的增加,所需的時間呈指數(shù)下降趨勢。
云計算作為IT技術(shù)的第四次革命,將給大規(guī)模計算帶來新的機(jī)遇。本文充分應(yīng)用現(xiàn)有的計算資源搭建云計算環(huán)境,通過Excel與云計算的集成,既解決了大規(guī)模計算效率的問題,也將云計算技術(shù)由企業(yè)和組織推向了普通使用者。實(shí)驗表明,用云計算技術(shù)來實(shí)現(xiàn)蒙特卡羅模擬分析,所得結(jié)果精確、高效,具有不可比擬的優(yōu)越性和實(shí)用價值。
[1]陳鄧安,叢中旖,王子明.在效能分析中應(yīng)用Excel數(shù)據(jù)分析模塊進(jìn)行蒙特卡羅模擬[J].科學(xué)技術(shù)與工程,2012,12(2):397-401.CHEN Deng-an,CONG Zhong-yi,WANG Zi-ming.Research on monte carlo simulation method in effectiveness analysis by data analysis modules in Excel[J].Science Technology and Engineering,2012,12(2):397-401.
[2]趙廣才,張雪萍.云計算技術(shù)分析及其展望[J].電子設(shè)計工程,2011,19(22):4-10.ZHAO Guang-cai,ZHANG Xue-ping.The analysis of cloud computing technology and its prospect[J].Electronic Design Engineering,2011,19(22):4-10.
[3]陳康,鄭緯民.云計算:系統(tǒng)實(shí)例與研究現(xiàn)狀[J].軟件學(xué)報,2009,20(5):1337-1348.CHEN Kang,ZHENG Wei-min.Cloud computing:system instance and research[J].Journal of Software,2009,20 (5):1337-1348.
[4]Platform Computing.Symphony使用文檔[EB/OL].(2011-09-20)/[2012-5-20].http://www.platform.com/workload-manage ment/SOA-grid-computing/.
[5]喬磊,馬火林,陳海紅,等.基于COM組件計算巖層真厚度的軟件設(shè)計[J].工程地球物理學(xué)報,2010,7(3):368-371.QIAO Lei,MA Huo-lin,CHEN Hai-hon,et al.The software designed for true thickness of the layer based on COM components[J].Chinese Journal of Engineering Geophysics,2010,7(3):368-371.
[6]鄭廣成.一種SOA云服務(wù)平臺架構(gòu)研究與應(yīng)用 [J].計算機(jī)應(yīng)用與軟件,2011,28(12):228-231.ZHENG Guang-cheng.An soa cloud service platform architecture research and application[J].Computer Applications and Software,2011,28(12):228-231.
[7]HPC Community.About Symphony DE. (2010-08-11)/[2012-05-20].http://www.hpccommunity.org/content/about-symphony-de-145/.