999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Lua腳本與C++交互流程及在其HSTPN仿真軟件的應用

2018-10-24 07:59:14陳佳銘王風立鄧君湘曹瑞珉
計算機應用與軟件 2018年10期
關鍵詞:功能模型

陳佳銘 王風立 鄧君湘 曹瑞珉

1(東北大學中荷生物醫(yī)學與信息工程學院 遼寧 沈陽 110819)2(海信網絡科技股份有限公司 山東 青島 266071)3(沈陽特種設備檢測研究院 遼寧 沈陽 110035)4(東北大學機械工程與自動化學院 遼寧 沈陽 110819)

0 引 言

Petri網是一種簡潔的、圖形化的網絡模型,它既能表示靜態(tài)的系統(tǒng)拓撲結構,也能用于系統(tǒng)動態(tài)行為的仿真。然而,傳統(tǒng)Petri網并不能全面描述系統(tǒng)中連續(xù)、隨機、時延和沖突等混雜特性。混雜隨機時延Petri網HSTPN[1]是基于條件事件網改進的高級Petri網模型,其含有離散、連續(xù)、隨機、時延和控制5種庫所,能有效描述系統(tǒng)中存在的多種混雜特性, 目前已成功應用于梯級水庫防洪控制系統(tǒng)[2]和物流自動分揀系統(tǒng)[1]。本文針對其仿真系統(tǒng)的開發(fā),討論Lua腳本與C++的交互流程。

1 HSTPN仿真軟件功能設計

HSTPN仿真軟件的功能劃分為如圖1所示的4類功能,包括建模功能、推演功能、模型存儲與加載功能、數據輸出功能。

圖1 軟件功能劃分

2 軟件開發(fā)框架、工具及運行環(huán)境

該仿真軟件的開發(fā)框架為微軟基礎類庫MFC的“文檔-視圖類”開發(fā)框架[3],文檔類負責數據的存儲與管理,視圖類負責數據的顯示和編輯,文檔類與視圖類的交互通過指針調用實現。該框架將數據的管理與顯示分離,降低了類與類之間的耦合度,進而提高了框架的可擴展性。同時,該框架可通過文檔類和視圖類的配合,靈活管理數據的顯示,方便程序的編寫與維護,適合本文軟件的開發(fā)。

該仿真軟件基于MFC單文檔程序框架開發(fā),主要包含4個C++類,如圖2所示,分別為App類、框架類、視圖類和文檔類。其中App類表示應用程序本身,框架類用于承載視圖、工具欄、菜單欄、狀態(tài)欄等,視圖類負責數據的顯示與編輯,文檔類負責數據的存儲與管理。

圖2 MFC單文檔程序框架

該軟件開發(fā)工具包括Microsoft Visual Studio 2010(簡稱VS)平臺、Lua腳本和TinyXML。VS是一個基本的、完整的開發(fā)工具集,包括整體軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境等[4]。

Lua是一種開源的、小巧、使用方便的解釋性語言。Lua能很方便地嵌入到應用程序并為它們提供靈活的擴展和定制功能。Lua還提供非常豐富和實用的功能,比如函數式編程(所有的函數都是第一類值)、協(xié)同程序、自動內存管理等[5]。由于Lua所有源代碼均由ANSI C編寫,它與C/C++能非常方便的交互,可使用C/C++的擴展庫完成一些功能較復雜的應用。而所有這些特性都歸功于它有一個精簡的、巧妙的、高效的Lua虛擬機的設計[6]。Lua采用了一種最簡單的執(zhí)行框架設計方式(switch-case),由于它指令數較少,因此也獲得了較好的執(zhí)行效率。Lua以其簡潔、可擴展、高效性以及可移植的特點廣泛應用與web服務器、游戲引擎以及嵌入式開發(fā)等領域[7-8]。本軟件基于Lua腳本設計了連續(xù)過程的編程實現方案,采用了Lua 5.3版本的解釋器。

軟件的運行平臺為Windows操作系統(tǒng),軟件的運行需要Microsoft.NET Framework 4.0環(huán)境的支持;HSTPN推演仿真過程中,需要將模型信息全部加載到內存中,因此要求計算機擁有3 GB及以上的內存配置。

3 整體架構設計

3.1 軟件分層架構設計

根據需求分析,并結合MFC框架“文檔-視圖類”結構,設計HSTPN仿真軟件的整體架構如圖3所示,軟件架構劃分為四個層次,包括人機交互層、推演仿真層、數據結構層及文件存儲層。

圖3 軟件整體架構

(1) 人機交互層 該層用于實現軟件的人機交互界面,直接面向用戶。在人機交互層,用戶通過創(chuàng)建HSTPN模型的節(jié)點、設置仿真參數、基于Lua語言進行連續(xù)方程編寫等操作完成網絡模型的創(chuàng)建,并通過點擊按鈕進行模型推演仿真、控制仿真進程、進行模型存儲、模型加載、數據存儲等操作。人機交互層將用戶操作信息轉化為數據,存儲在數據結構層相應的數據結構中;該層還不斷監(jiān)測數據結構層中各種數據的變化,并轉化為人機交互層中各種圖形的改變,從而完成模型狀態(tài)、推演動畫及數據展示等功能。

(2) 數據結構層 該層封裝了HSTPN仿真軟件建模、仿真、數據輸出等過程中用到的各類數據結構。當用戶通過人機交互界面進行建模、參數設置等操作時,數據結構層接收人機交互層的操作信息,并將其轉換成數據存儲在對應的數據結構中;在HSTPN推演過程中,該層不斷接收模型的數據變化信息、仿真輸出數據等,并重新存儲到相應的數據結構中。

(3) 推演仿真層 該層主要完成三部分的功能,一是讀取數據結構層存儲的HSTPN模型的數據信息,基于HSTPN推演引擎完成模型推演仿真,并將推演過程中的數據實時傳遞回數據結構層;二是模型推演過程中,利用推演動畫展示程序實時的驅使相應的數據傳遞給人機交互層,引起人機交互層各圖形的變化,從而實現推演動畫展示的功能;三是在模型推演過程中,利用仿真數據輸出程序驅動數據結構層中接收的仿真數據賦值給相應的數據輸出節(jié)點。

(4) 文件存儲層 該層主要負責模型文件的存儲與加載、仿真數據的存儲功能。當用戶通過點擊人機交互界面上的“保存”按鈕進行存儲操作時,文件存儲層讀取數據結構層存儲的模型數據或仿真數據,將其寫入文件并存儲在電腦磁盤中;當用戶通過點擊人機交互界面上的“打開”按鈕,文件存儲層讀取存儲電腦磁盤文件中的信息,并將其轉換成相應的數據,重新存儲于數據結構層。

3.2 基于MFC的軟件類架構設計

根據圖3的軟件分層架構,結合MFC單文檔程序的框架及各C++類的功能,設計HSTPN仿真軟件的程序架構如圖4所示,是對軟件分層架構程序的實現方案。具體的對應關系如下:

1) CHSTPN_SYSView類:

CHSTPN_SYSView類繼承自CView類,即視圖類。在MFC架構中,視圖類負責數據的顯示與編輯,因此,在HSTPN仿真軟件中,CHSTPN_SYSView類用作人機交互層的實現類。圖4中CHSTPN_SYSView類的結構圖列出了該類主要涉及的功能的實現方法,其中:

(1) CreateNode方法:用于創(chuàng)建HSTPN模型中的狀態(tài)節(jié)點及事件節(jié)點;

(2) CreateArcs方法:用于創(chuàng)建HSTPN模型中的有向弧;

(3) Draw方法:用來實現推演動畫的展示、仿真數據展示等功能;

(4) MoveNode方法:用來實現HSTPN模型中節(jié)點的移動功能;

(5) DeleteNode方法:用來實現HSTPN模型中節(jié)點刪除功能。

圖4 軟件分層架構的程序實現類關系圖

2) CHSTPN_SYSDoc類:

CHSTPN_SYSDoc類繼承自CDocument類,即文檔類。在MFC架構中,文檔類負責數據的存儲與管理,因此,數據結構層中的各數據結構定義在文檔類中;由于文件存儲層的功能本質是對數據結構層中的數據的直接讀取、保存和重新生成,因此,文件存儲層的功能也在CHSTPN_SYSDoc文檔類中實現。圖4中CHSTPN_SYSDoc類的結構圖,列出了該類主要涉及的數據結構及功能的實現方法,其中:

(1) vecPlaces、vecTrans、vecArcs和vecOutput:四個動態(tài)數組,分別用于存儲HSTPN模型中包含的狀態(tài)節(jié)點、事件節(jié)點、有向弧和輸出節(jié)點,上述元素的實現類,即CPlace、CTransition、CArc和COutput類的詳細設計與實現將在第4章講述;

(2) SaveModel方法:用來實現HSTPN模型存儲功能;

(3) LoadModel方法:用來實現HSTPN模型加載功能;

(4) SaveSimData方法:用來實現仿真數據存儲的功能。

3) CHSTPN_SYSSim類:

在軟件設計開發(fā)過程中,應用面向對象的建模思想,推演仿真層單獨構建一個類來實現,將其命名為CHSTPN_SYSSim。CHSTPN_SYSSim類的結構如圖4所示,其中:

(1) SimEngine方法:表示模型推演引擎,負責實現仿真推演功能;

(2) AnmatnDemo方法:用于模型推演的同時,驅動CHSTPN_SYSView類中Draw方法的執(zhí)行;

(3) SimDataOut方法:用來將仿真過程中模型數據賦值給輸出節(jié)點。

4 基于Lua腳本的連續(xù)過程的建模實現

4.1 Lua腳本與C++的交互流程

建模功能是HSTPN仿真軟件的基本功能,需要完成HSTPN模型的狀態(tài)節(jié)點、事件節(jié)點和有向弧創(chuàng)建,節(jié)點屬性設置,連續(xù)物理層的編程等操作。其中,HSTPN模型中的連續(xù)物理層一般采用微分方程或狀態(tài)方程來描述。隨著仿真案例的不同,HSTPN模型中用于描述連續(xù)過程的微分方程或狀態(tài)方程也不相同。HSTPN仿真軟件中,在連續(xù)狀態(tài)節(jié)點中內嵌一個Lua腳本,用戶可在該腳本中通過Lua語言設計、編寫自己的微分方程或狀態(tài)方程,提高了軟件的可擴展性。

當一個連續(xù)狀態(tài)節(jié)點激活后,其內嵌的Lua腳本開始執(zhí)行,此時連續(xù)狀態(tài)節(jié)點中創(chuàng)建一個Lua虛擬堆棧,用于Lua和C++程序之間的交互。Lua腳本與C++的交互流程如圖5所示。

圖5 Lua腳本與C++交互流程

4.2 連續(xù)模型的案例創(chuàng)建

HSTPN仿真軟件界面如圖6所示,界面分為3個區(qū)域:菜單欄與工具欄、元素選擇區(qū)、模型展示區(qū)。其中菜單欄和工具欄中列舉了“保存”、“打開”等菜單項,模型元素選擇區(qū)列出了HSTPN博弈模型的基本元素及軟件的數據輸出節(jié)點,模型編輯區(qū)負責HSTPN博弈模型的搭建、屬性設置、動畫展示等。

圖6展示的仿真模型中,p4和p28兩個狀態(tài)節(jié)點分別用于描述兩個連續(xù)過程,通過Lua腳本進行編程實現,Lua腳本的創(chuàng)建過程如圖7所示。

5 結 語

本文結合MFC“文檔-視圖類”結構設計了軟件的分層架構及程序實現框架。本軟件包含的功能主要分為四類:HSTPN模型搭建功能、推演功能、仿真模型的存儲與加載功能、仿真數據輸出功能。分析了Lua腳本與C++的交互流程,實現了連續(xù)過程編程功能。

猜你喜歡
功能模型
一半模型
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
關于非首都功能疏解的幾點思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
中西醫(yī)結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 国产精品性| 性欧美久久| 国产精品99一区不卡| 福利在线不卡一区| 亚洲国产无码有码| 嫩草国产在线| 亚洲国产精品美女| 国产中文一区a级毛片视频| 中文字幕人妻无码系列第三区| 99久久精品免费看国产免费软件 | 国产在线自乱拍播放| 国产杨幂丝袜av在线播放| 精品国产成人av免费| 91福利国产成人精品导航| 国产电话自拍伊人| 91在线一9|永久视频在线| 中文字幕在线观看日本| 日本久久免费| 亚洲综合九九| 久久女人网| 国产乱论视频| 亚洲人成在线精品| 国产午夜看片| 日韩大片免费观看视频播放| 国产精品熟女亚洲AV麻豆| 2020国产精品视频| 国产精品污视频| 欧美日韩高清| 人妻丰满熟妇αv无码| 18禁黄无遮挡网站| 欧美成人精品一区二区| 欧美另类视频一区二区三区| 欧美一级99在线观看国产| 日韩最新中文字幕| 人人爽人人爽人人片| 日韩美一区二区| 国产成人高清精品免费| 白丝美女办公室高潮喷水视频| 国产激情无码一区二区三区免费| 97视频在线观看免费视频| 992tv国产人成在线观看| 欧美三級片黃色三級片黃色1| 亚洲成人www| 国产精品免费福利久久播放| 亚洲天堂自拍| 成人在线不卡| 免费全部高H视频无码无遮掩| 国产亚洲精品97AA片在线播放| 国产视频大全| 成人欧美在线观看| 美女内射视频WWW网站午夜| 2022精品国偷自产免费观看| 亚洲精品视频免费| 精品一区二区三区自慰喷水| 精品视频一区二区三区在线播 | 亚洲欧美色中文字幕| 欧美一区精品| 日韩中文无码av超清| 国产精品无码久久久久久| AV在线麻免费观看网站| 欧美激情二区三区| 国产男人的天堂| 制服无码网站| 在线国产你懂的| 亚洲AV成人一区国产精品| 一级片一区| 欧美日韩精品一区二区视频| 精品一区二区无码av| 国产成人精品午夜视频'| 先锋资源久久| 亚洲人成网址| 波多野结衣无码中文字幕在线观看一区二区 | 亚洲女人在线| 国产内射一区亚洲| 国产网站黄| 国产在线观看成人91| 91久久精品国产| 精品一区二区三区视频免费观看| 亚洲精品无码成人片在线观看| 美女内射视频WWW网站午夜| 亚洲A∨无码精品午夜在线观看| 99精品视频九九精品|