宋云雪,張 穎
(中國(guó)民航大學(xué) 航空工程學(xué)院,天津 300300)
現(xiàn)階段國(guó)內(nèi)外學(xué)者對(duì)機(jī)場(chǎng)地面保障研究大多集中在機(jī)場(chǎng)地面保障流程優(yōu)化[1-3],機(jī)場(chǎng)保障能力驗(yàn)證評(píng)估[4,5],機(jī)場(chǎng)運(yùn)輸決策[6,7]等方面,針對(duì)上述文獻(xiàn)進(jìn)行總結(jié)分析,由于機(jī)場(chǎng)環(huán)境的特殊性、機(jī)場(chǎng)信息的離散性和復(fù)雜性,現(xiàn)有部分保障流程優(yōu)化研究難以對(duì)方案和研究方法進(jìn)行實(shí)地應(yīng)用驗(yàn)證; 而對(duì)機(jī)場(chǎng)保障能力評(píng)估時(shí)多數(shù)學(xué)者缺乏真實(shí)詳細(xì)的機(jī)場(chǎng)方案實(shí)施數(shù)據(jù),結(jié)果具有一定的主觀性; 在機(jī)場(chǎng)運(yùn)輸決策等領(lǐng)域需要大量機(jī)場(chǎng)實(shí)時(shí)監(jiān)測(cè)信息,信息的匱乏和機(jī)場(chǎng)試驗(yàn)的局限性會(huì)導(dǎo)致研究方法和方案的可行性難以判別.對(duì)于機(jī)場(chǎng)運(yùn)動(dòng)仿真研究,Alomar 等人基于FlexSim 構(gòu)建機(jī)場(chǎng)地面車(chē)輛移動(dòng)仿真模型來(lái)優(yōu)化其在運(yùn)動(dòng)過(guò)程中的運(yùn)輸流程[8],潘衛(wèi)軍等人基于Unity 對(duì)機(jī)場(chǎng)應(yīng)急演練過(guò)程進(jìn)行了仿真評(píng)價(jià)[9]; 分析國(guó)內(nèi)外現(xiàn)有機(jī)場(chǎng)仿真研究多數(shù)借助了需要付費(fèi)的第三方平臺(tái)仿真引擎軟件,建立的仿真模型使用受平臺(tái)限制難以遷移,開(kāi)發(fā)的程序缺乏復(fù)用性,軟件學(xué)習(xí)和使用復(fù)雜度較高.本文為解決上述問(wèn)題,獨(dú)立設(shè)計(jì)并開(kāi)發(fā)了一種機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)仿真模型,借助計(jì)算機(jī)仿真技術(shù)對(duì)機(jī)場(chǎng)地面保障過(guò)程進(jìn)行仿真,構(gòu)建的模擬環(huán)境為機(jī)場(chǎng)保障中設(shè)施分配、路線規(guī)劃等流程優(yōu)化提供驗(yàn)證環(huán)境; 對(duì)機(jī)場(chǎng)旅客、行人、保障車(chē)輛和航空器運(yùn)輸工具等目標(biāo)進(jìn)行運(yùn)動(dòng)仿真,能復(fù)現(xiàn)機(jī)場(chǎng)各部門(mén)組織工作狀態(tài)和機(jī)場(chǎng)保障設(shè)備的作業(yè)情況,產(chǎn)生的數(shù)據(jù)可為機(jī)場(chǎng)保障預(yù)案和保障能力評(píng)估驗(yàn)證提供依據(jù); 仿真模型的真實(shí)地理環(huán)境數(shù)據(jù)和機(jī)場(chǎng)目標(biāo)實(shí)時(shí)位置數(shù)據(jù)可為機(jī)場(chǎng)應(yīng)急處理、運(yùn)輸決策等提供判斷依據(jù);同時(shí)機(jī)場(chǎng)保障過(guò)程仿真也是基于民航安全無(wú)誤原則下對(duì)人員進(jìn)行培訓(xùn)的有效方法,可以為民航從業(yè)人員提供指導(dǎo)思路.此外,本研究設(shè)計(jì)實(shí)現(xiàn)的仿真模型可獨(dú)立運(yùn)行,也可嵌入機(jī)場(chǎng)保障相關(guān)的復(fù)雜系統(tǒng),應(yīng)用于民航機(jī)場(chǎng)研究相關(guān)的多個(gè)領(lǐng)域,具有廣泛的適用性,對(duì)提高機(jī)場(chǎng)航班過(guò)站保障能力具有重要意義.
實(shí)現(xiàn)底層數(shù)據(jù)的存儲(chǔ)和關(guān)聯(lián)是構(gòu)建機(jī)場(chǎng)地面目標(biāo)仿真模型的基礎(chǔ).機(jī)場(chǎng)地面保障全過(guò)程基于機(jī)場(chǎng)復(fù)雜的內(nèi)部環(huán)境,而GIS 圖層的要素、表面和模型能夠構(gòu)建模擬不同機(jī)場(chǎng)的環(huán)境地形.Xu 等人基于C#程序和ArcObjects 提出了一種數(shù)字地圖瓦片編碼和計(jì)算方法,生成的瓦片地圖可供在線和離線應(yīng)用程序使用[10].本文在文獻(xiàn)[10]研究基礎(chǔ)之上,借助GIS 開(kāi)發(fā)平臺(tái)生成機(jī)場(chǎng)瓦片地圖為仿真提供環(huán)境數(shù)據(jù).
由于涉及的機(jī)場(chǎng)瓦片數(shù)據(jù)體量和數(shù)量巨大,離線環(huán)境下如何對(duì)其進(jìn)行合理存儲(chǔ)和有效管理是面臨的一大挑戰(zhàn).近年來(lái)Zhang 等人提出了一種基于Hadoop 的分布式文件系統(tǒng)柵格瓦片存儲(chǔ)策略[11],Lv等人提出了一種基于嵌入式數(shù)據(jù)庫(kù)的海量地圖瓦片存儲(chǔ)技術(shù)[12].基于上述研究,結(jié)合分布式文件系統(tǒng)和數(shù)據(jù)庫(kù)存儲(chǔ)特點(diǎn),本文采用分布式文件系統(tǒng)和關(guān)系數(shù)據(jù)庫(kù)相結(jié)合的方式來(lái)管理機(jī)場(chǎng)瓦片地圖數(shù)據(jù): 構(gòu)建共享目錄樹(shù)將不同機(jī)場(chǎng)瓦片地圖和拼接圖存儲(chǔ)在多個(gè)服務(wù)器,用戶(hù)訪問(wèn)單個(gè)路徑結(jié)點(diǎn)就能讀取到所需機(jī)場(chǎng)衛(wèi)星瓦片地圖資源; 使用關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)城市基礎(chǔ)信息、機(jī)場(chǎng)點(diǎn)數(shù)據(jù)層和道路設(shè)施分布層等標(biāo)注信息,機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)仿真底層關(guān)聯(lián)數(shù)據(jù)模型如圖1 所示.
圖1 仿真底層數(shù)據(jù)關(guān)聯(lián)模型
圖1 中點(diǎn)數(shù)據(jù)層的機(jī)場(chǎng)受控點(diǎn)和分布點(diǎn)標(biāo)注功能基于.Net 的GDI+實(shí)現(xiàn),底層數(shù)據(jù)關(guān)聯(lián)圖中點(diǎn)數(shù)據(jù)層的坐標(biāo)系使用GDI+的頁(yè)面坐標(biāo)系,該坐標(biāo)系原點(diǎn)位于仿真繪圖窗口左上角.如圖2 為南寧吳圩國(guó)際機(jī)場(chǎng)的道路及設(shè)施分布層頁(yè)面,在該層標(biāo)注了機(jī)場(chǎng)的關(guān)鍵設(shè)施以及機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)行駛部分路線網(wǎng)絡(luò).
圖2 南寧吳圩國(guó)際機(jī)場(chǎng)設(shè)施道路分布層
機(jī)場(chǎng)目標(biāo)運(yùn)動(dòng)仿真過(guò)程要得到真實(shí)的地理數(shù)據(jù)測(cè)算結(jié)果,需要實(shí)際環(huán)境和仿真環(huán)境比例關(guān)系,即表示地圖上一個(gè)像素坐標(biāo)點(diǎn)所代表地球上實(shí)際距離長(zhǎng)度的地面分辨率參數(shù).結(jié)合圖1 中數(shù)據(jù)關(guān)聯(lián)模型,根據(jù)選定的機(jī)場(chǎng)瓦片地圖層級(jí)計(jì)算地圖分辨率,圖1 中機(jī)場(chǎng)衛(wèi)星地圖各層每個(gè)切片統(tǒng)一為256×256像素,level0對(duì)應(yīng)單個(gè)瓦片,level1對(duì)應(yīng)4 個(gè)瓦片,以此類(lèi)推,得到levelZ的機(jī)場(chǎng)地圖瓦片個(gè)數(shù)CountlevelZ為:
機(jī)場(chǎng)瓦片地圖采取Web 墨卡托投影坐標(biāo)系,設(shè)赤道半徑為Re,其坐標(biāo)系范圍X方向最大值為Maxx,拼接地圖對(duì)應(yīng)的瓦片地圖層級(jí)為levelZ,瓦片數(shù)量為CountlevelZ,各級(jí)瓦片拼接圖總像素寬度為WidthlevelZ,levelZ級(jí)機(jī)場(chǎng)衛(wèi)星地圖的地面分辨率為GRlevelZ,單個(gè)瓦片的像素寬度為Width,由式(2)和式(3)得到式(4)地面分辨率GRlevelZ,公式如下:
為了保證仿真效果的清晰度和良好的用戶(hù)體驗(yàn),仿真模型中的底層機(jī)場(chǎng)瓦片數(shù)據(jù)默認(rèn)為16-18 級(jí)的瓦片地圖拼接圖,各級(jí)機(jī)場(chǎng)拼接地圖對(duì)應(yīng)的切片個(gè)數(shù)CountlevelZ和地面分辨率GRlevelZ計(jì)算結(jié)果如表1 所示.
表1 機(jī)場(chǎng)地圖層級(jí)關(guān)系對(duì)應(yīng)表
研究以天津?yàn)I海國(guó)際機(jī)場(chǎng)的18 級(jí)瓦片拼接圖為例,在機(jī)場(chǎng)點(diǎn)數(shù)據(jù)層標(biāo)注編號(hào)TJ01 的跑道坐標(biāo)4 點(diǎn)分別為(1842,1318)、(1930,1275)、(3902,5619)、(3993,5577),該跑道內(nèi)移坐標(biāo)點(diǎn)為(2095,1850)、(2185,1807)結(jié)合地圖層級(jí)關(guān)系對(duì)應(yīng)表,可計(jì)算出天津?yàn)I海國(guó)際機(jī)場(chǎng)西跑道可用著陸距離(LDA)約為2 500 m,可用起飛距離(TODA)約為2 850 m 等數(shù)據(jù),為后續(xù)機(jī)場(chǎng)地面保障仿真過(guò)程計(jì)算奠定基礎(chǔ).
機(jī)場(chǎng)地面目標(biāo)在繪圖平面上的交互基礎(chǔ)是對(duì)模型所在坐標(biāo)系和仿真展示頁(yè)面坐標(biāo)系進(jìn)行坐標(biāo)轉(zhuǎn)換.針對(duì)坐標(biāo)系平移,通過(guò)仿射變換增加矩陣維數(shù),將二維矩陣表示形式轉(zhuǎn)換為三維矩陣,使用三維矩陣左乘的方式實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)所在坐標(biāo)系和仿真繪圖平面坐標(biāo)系的平移、旋轉(zhuǎn)和縮放.以圖3 飛機(jī)為例,把目標(biāo)運(yùn)動(dòng)坐標(biāo)系中飛機(jī)模型放置在繪圖界面坐標(biāo)系中.
圖3 運(yùn)動(dòng)目標(biāo)坐標(biāo)系與繪圖坐標(biāo)系轉(zhuǎn)換
首先針對(duì)機(jī)場(chǎng)繪圖界面坐標(biāo)系XOY在 X軸方向上平滑移動(dòng)m個(gè)單位,Y軸方向平移n個(gè)單位,設(shè)平移變換的系數(shù)矩陣為M1; 再對(duì)XOY繪圖界面坐標(biāo)系Y 軸反向縮放,縮放變換的系數(shù)矩陣為M2將經(jīng)上述矩陣變換后的繪圖界面坐標(biāo)系旋轉(zhuǎn)順時(shí)針旋轉(zhuǎn)θ度,旋轉(zhuǎn)系數(shù)矩陣M3; 最后通過(guò)計(jì)算繪圖界面坐標(biāo)系與運(yùn)動(dòng)目標(biāo)坐標(biāo)系的像素比例關(guān)系為1:f進(jìn)行縮放,系數(shù)矩陣為M4,那么圖3 的轉(zhuǎn)換過(guò)程可以表示為:
結(jié)合矩陣復(fù)合轉(zhuǎn)換方式,將M1M2M3M4四個(gè)矩陣相乘表示為單個(gè)矩陣M,通過(guò)計(jì)算M可表示為:
結(jié)合矩陣式(5)、式(6)運(yùn)算,在已知運(yùn)動(dòng)目標(biāo)坐標(biāo)系中運(yùn)動(dòng)模型某點(diǎn)坐標(biāo)情況下可計(jì)算出該點(diǎn)在繪圖界面坐標(biāo)系中的坐標(biāo).結(jié)合GDI+坐標(biāo)全局轉(zhuǎn)換設(shè)計(jì)程序?qū)崿F(xiàn)運(yùn)動(dòng)目標(biāo)在仿真界面坐標(biāo)系中的繪圖操作,如圖4為飛機(jī)在機(jī)場(chǎng)某時(shí)刻降落滑行的運(yùn)動(dòng)狀態(tài).
圖4 仿真界面飛機(jī)運(yùn)動(dòng)目標(biāo)滑行過(guò)程
機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)在機(jī)場(chǎng)路網(wǎng)運(yùn)動(dòng)行駛前需要確定移動(dòng)路徑,本文對(duì)A*算法加以改進(jìn),利用改進(jìn)的A*算法來(lái)確定機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)的最佳行駛路徑.A*算法是一種啟發(fā)式搜索算法,它的計(jì)算效率相比與Dijkstra 算法更快,利用其估價(jià)函數(shù)對(duì)節(jié)點(diǎn)加以擴(kuò)展能夠找到最合適的目標(biāo)節(jié)點(diǎn); 利用A*算法求解最佳路線過(guò)程中,雖然搜索節(jié)點(diǎn)明顯少于Dijkstra 算法,但其在大規(guī)模路網(wǎng)條件下搜索節(jié)點(diǎn)數(shù)量依舊會(huì)影響計(jì)算性能.本文對(duì)機(jī)場(chǎng)分區(qū)處理,將各區(qū)域路徑坐標(biāo)點(diǎn)進(jìn)行區(qū)域編號(hào); 通過(guò)分區(qū)預(yù)處理操作對(duì)各區(qū)域運(yùn)動(dòng)目標(biāo)行駛路線范圍加以限制達(dá)到A*算法在預(yù)處理環(huán)節(jié)減少搜索節(jié)點(diǎn)的目的.其中機(jī)場(chǎng)路網(wǎng)的點(diǎn)坐標(biāo)信息存儲(chǔ)結(jié)構(gòu)如表2 所示.
表2 機(jī)場(chǎng)路網(wǎng)點(diǎn)坐標(biāo)信息
A*算法的節(jié)點(diǎn)a估價(jià)函數(shù)如式(7):
其中,g(a)是從機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)的設(shè)定運(yùn)動(dòng)起點(diǎn)到點(diǎn)a的實(shí)際成本,h(a)是節(jié)點(diǎn)a到目標(biāo)節(jié)點(diǎn)的最優(yōu)路徑估計(jì)成本,啟發(fā)式函數(shù)h(a)的設(shè)計(jì)是A*算法的關(guān)鍵.分析機(jī)場(chǎng)路網(wǎng)特點(diǎn),排除同一種類(lèi)的機(jī)場(chǎng)目標(biāo)同一時(shí)間段超速現(xiàn)象,機(jī)場(chǎng)的機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)行駛路線網(wǎng)絡(luò)滿(mǎn)足時(shí)變網(wǎng)絡(luò)的先入先出條件(FIFO),也就是同一時(shí)段同種類(lèi)機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)先出發(fā)的比后出發(fā)的先到達(dá).設(shè)機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)給定出發(fā)時(shí)刻為T(mén)start,起點(diǎn)Vstart,終點(diǎn)為Vend,所有點(diǎn)坐標(biāo)集合為Vlist,坐標(biāo)連接的路段集合為Alist,現(xiàn)有未找到的運(yùn)動(dòng)目標(biāo)最佳路徑剩余節(jié)點(diǎn)集合為NFlist,節(jié)點(diǎn)a的編號(hào)為Na,它的前驅(qū)節(jié)點(diǎn)為FNa,Tab(t)是機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)t(t∈T)時(shí)刻在ab路段的出發(fā)時(shí)間,T是機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)完成運(yùn)動(dòng)過(guò)程的總時(shí)間分段集合.對(duì)于任意(a,b)∈Alist,(t)=minTab(t),用(t)構(gòu)造靜態(tài)網(wǎng)絡(luò)G,tmin(a,b)表示機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)在G中從a點(diǎn)到b點(diǎn)的最短路徑的行程時(shí)間.對(duì)啟發(fā)式函數(shù)h(a)定義如下:
根究式(7)、式(8)設(shè)計(jì)改進(jìn)的A*算法計(jì)算流程如下:
(1)利用數(shù)據(jù)庫(kù)分組篩選出與當(dāng)前機(jī)場(chǎng)目標(biāo)所在點(diǎn)區(qū)域編號(hào)相鄰的點(diǎn)坐標(biāo)集合Plist;
(2)采用Dijkstra 算法計(jì)算集合Plist中點(diǎn)坐標(biāo)到目標(biāo)節(jié)點(diǎn)的h(a);
(3)初始化變量Va,Ta且對(duì)于變量?b≠a,Tb=+∞,FNa=0,Slist={Va},NFlist=Φ.
(4)改變節(jié)點(diǎn)編號(hào),對(duì)所有a的后繼節(jié)點(diǎn),如果Tb>Ta+Tab(Ta)+h(a),則Tb=Ta+Tab(Ta)+h(a),FNb=FNa若b?NFlist,則NFlist=NFlist∪.
(5)選擇節(jié)點(diǎn),設(shè)Vmin=min(b),b∈NFlist,令Va=Vmin,則Flist=Flist∪{a},NFlist=NFlist-.
(6)如果Va=Vend,停止計(jì)算,否則回轉(zhuǎn)到步驟(1).
(7)通過(guò)反向追蹤節(jié)點(diǎn)a的前驅(qū)節(jié)點(diǎn)FNa,得到最短路徑.
通過(guò)改進(jìn)的A*算法,可以在仿真過(guò)程中提前對(duì)機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)運(yùn)動(dòng)最佳路線進(jìn)行規(guī)劃,提高機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)作業(yè)效率.
GDI+的原始畫(huà)圖模式采用了Graphics 接口,該方法畫(huà)圖效率緩慢,而且在仿真測(cè)試過(guò)程中出現(xiàn)了嚴(yán)重的閃爍效果.在對(duì)圖像處理過(guò)程中很多學(xué)者采用緩沖技術(shù)提高圖像處理效率,如Zhou 等人研究了一種實(shí)時(shí)固定比例幀緩沖壓縮技術(shù)應(yīng)用于嵌入式圖形系統(tǒng)中[13];王宇飛等人利用雙緩沖技術(shù)顯著提高了測(cè)井曲線的繪制速度[14]; 為了避免繪圖效率對(duì)機(jī)場(chǎng)地面運(yùn)動(dòng)目標(biāo)仿真過(guò)程的時(shí)效性造成不必要的干擾,影響仿真的準(zhǔn)確度,本文采用GDI+自帶的雙緩沖類(lèi)BufferedGraphicsContext實(shí)現(xiàn)雙緩沖畫(huà)圖模式,較大程度上減少了程序繪圖運(yùn)行速度對(duì)仿真實(shí)時(shí)性的影響.
基于實(shí)時(shí)仿真理論,要將運(yùn)動(dòng)目標(biāo)移動(dòng)狀態(tài)與具體時(shí)間相關(guān)聯(lián),在坐標(biāo)變換繪圖過(guò)程中,模型的移動(dòng)距離需要隨時(shí)間變化而做出調(diào)整.利用GDI+技術(shù)調(diào)整繪圖瞬間對(duì)應(yīng)的坐標(biāo)點(diǎn)位置,以目標(biāo)運(yùn)動(dòng)過(guò)程總時(shí)間劃分合適的單位時(shí)間步長(zhǎng)T,結(jié)合單位時(shí)間內(nèi)的速度變化和運(yùn)動(dòng)目標(biāo)朝向角度變化值,計(jì)算單位時(shí)間步長(zhǎng)T時(shí)段內(nèi)X軸和 Y軸方向的位移增量,進(jìn)而計(jì)算確定繪圖坐標(biāo)點(diǎn)位置.排除了繪圖效率對(duì)仿真模型中繪圖過(guò)程的客觀影響,并結(jié)合模型中機(jī)場(chǎng)目標(biāo)運(yùn)動(dòng)路徑的存儲(chǔ)結(jié)構(gòu)和運(yùn)動(dòng)規(guī)律,對(duì)確定繪圖坐標(biāo)點(diǎn)的實(shí)際問(wèn)題建立計(jì)算模型.
圖5 左邊繪圖坐標(biāo)系中是機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)移動(dòng)行駛路線網(wǎng)絡(luò),其中擺渡車(chē)路線01 是利用改進(jìn)的A*算法求解確定的擺渡車(chē)最佳行駛路線,以該條路線為例,將路線中已知的相鄰坐標(biāo)兩點(diǎn)分解放大,已知機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)模型對(duì)應(yīng)的行駛移動(dòng)路徑、運(yùn)動(dòng)速度、運(yùn)動(dòng)加速度和運(yùn)動(dòng)時(shí)間等信息,每隔單位步長(zhǎng)T,確定繪圖對(duì)應(yīng)坐標(biāo)Pn的位置計(jì)算模型如圖5 所示.
圖5 路線相鄰路徑點(diǎn)分解計(jì)算模型
為方便機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)屬性的描述與其相關(guān)數(shù)據(jù)的合理存儲(chǔ),為機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)建立統(tǒng)一的數(shù)據(jù)模型Model,如表3 所示.
表3 運(yùn)動(dòng)目標(biāo)模型Model 屬性
令路徑中已知坐標(biāo)點(diǎn)為P(i),其相鄰坐標(biāo)點(diǎn)為P(i+1),兩點(diǎn)之間距離為Dis(i,i+1),兩點(diǎn)之間連線與水平方向夾角為 β,單位時(shí)間T間隔內(nèi) X方向和 Y方向增量分別為 Δx,Δy,N個(gè)T時(shí)間間隔內(nèi)的模型位移增量為incrementNT,結(jié)合表3 中Model 的相關(guān)屬性數(shù)據(jù)描述,對(duì)目標(biāo)模型勻速和非勻速運(yùn)動(dòng)過(guò)程繪圖坐標(biāo)點(diǎn)Pn求解流程梳理如圖6 所示.
圖6 目標(biāo)模型繪圖坐標(biāo)點(diǎn)求解流程圖
基于上述計(jì)算模型,本文采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方式,設(shè)計(jì)Model 類(lèi)封裝其相關(guān)屬性,初始化構(gòu)造函數(shù),移動(dòng)距離、運(yùn)動(dòng)速度、旋轉(zhuǎn)角度等計(jì)算函數(shù),模型旋轉(zhuǎn)角度計(jì)算方法主要功能是以對(duì)象綁定的移動(dòng)路徑已知坐標(biāo)點(diǎn)為基礎(chǔ),計(jì)算目標(biāo)在運(yùn)動(dòng)目標(biāo)坐標(biāo)系到繪圖仿真界面坐標(biāo)系繪圖操作時(shí)的旋轉(zhuǎn)角度circle_angle(i,i+1),結(jié)合GDI+繪圖仿真坐標(biāo)系特點(diǎn),該角度值主要包括以下4 種情況:
(1)當(dāng)yP(i+1)>yP(i)時(shí):
(2)當(dāng)yP(i+1)<yP(i)時(shí):
(3)當(dāng)yP(i+1)=yP(i)且xP(i+1)≥xP(i)時(shí):
(4)除上述情況外,旋轉(zhuǎn)角度值為:
綜合式(9)-式(12)可在已知模型路徑點(diǎn)坐標(biāo)條件下正確控制仿真過(guò)程中機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)的運(yùn)動(dòng)朝向角度.根據(jù) X軸和 Y軸方向上的位移增量,在確定單位步長(zhǎng)時(shí)間段內(nèi)對(duì)應(yīng)的繪圖坐標(biāo)點(diǎn)Pn時(shí)也包括了多種情況,如表4 所示.
表4 不同條件下 Pn坐 標(biāo)值
結(jié)合坐標(biāo)計(jì)算流程圖對(duì)相關(guān)數(shù)學(xué)理論模型,編寫(xiě)程序接口將機(jī)場(chǎng)地面目標(biāo)實(shí)時(shí)運(yùn)動(dòng)仿真過(guò)程產(chǎn)生的數(shù)據(jù)可視化,以天津?yàn)I海國(guó)際機(jī)場(chǎng)某航班地面保障擺渡車(chē)行駛運(yùn)動(dòng)過(guò)程為例,該運(yùn)動(dòng)目標(biāo)仿真過(guò)程的實(shí)時(shí)坐標(biāo)位置、運(yùn)動(dòng)速度、朝向角度等數(shù)據(jù)展示如圖7 所示.其中詳細(xì)的軌跡坐標(biāo)和對(duì)應(yīng)位置的時(shí)刻信息可以為運(yùn)動(dòng)目標(biāo)行駛路線碰撞檢測(cè)評(píng)估提供數(shù)據(jù)支撐,運(yùn)動(dòng)目標(biāo)的速度位移變化可以用來(lái)評(píng)判目標(biāo)從出發(fā)地到目的地的運(yùn)動(dòng)可行性.
圖7 Model 運(yùn)動(dòng)仿真過(guò)程數(shù)據(jù)可視化
機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)實(shí)時(shí)運(yùn)動(dòng)二維仿真過(guò)程實(shí)際上是結(jié)合具體時(shí)間不斷實(shí)現(xiàn)圖像繪制和數(shù)據(jù)計(jì)算的同步過(guò)程.機(jī)場(chǎng)地面運(yùn)動(dòng)目標(biāo)運(yùn)動(dòng)過(guò)程仿真涉及到的地面保障車(chē)輛、旅客、保障人員、各類(lèi)航空器的運(yùn)動(dòng)過(guò)程對(duì)應(yīng)多個(gè)時(shí)間階段,而每個(gè)時(shí)間階段也可能包括多個(gè)目標(biāo)同時(shí)運(yùn)動(dòng)的過(guò)程,如圖8 截取的某機(jī)場(chǎng)部分地面保障環(huán)節(jié)涉及到多個(gè)機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)進(jìn)行作業(yè),根據(jù)機(jī)場(chǎng)地面目標(biāo)運(yùn)動(dòng)特點(diǎn),設(shè)計(jì)并發(fā)程序?qū)⒎抡娓鱾€(gè)階段任務(wù)合理分工交給多個(gè)線程完成.
圖8 機(jī)場(chǎng)保障部分作業(yè)流程
本文采用多線程技術(shù),利用計(jì)時(shí)器來(lái)控制和管理不同時(shí)間階段對(duì)應(yīng)的多線程任務(wù),System.Timers.Timer 是.Net 基于服務(wù)器的多線程計(jì)時(shí)器,可以按照設(shè)定的時(shí)間間隔執(zhí)行事件處理程序,非常適合機(jī)場(chǎng)保障過(guò)程中不同目標(biāo)按照固定時(shí)間間隔執(zhí)行任務(wù)的情景,直接使用該計(jì)時(shí)器管理仿真計(jì)算過(guò)程流程如圖9所示.
圖9 多線程仿真繪圖流程
在計(jì)時(shí)器管理多線程任務(wù)過(guò)程中,如果一個(gè)計(jì)時(shí)器對(duì)象綁定的Elapsed 事件函數(shù)沒(méi)有處理完成,到達(dá)下一個(gè)時(shí)間點(diǎn)新的線程依舊會(huì)按時(shí)啟動(dòng)執(zhí)行Model 信息更新的回調(diào)事件,當(dāng)遇到回調(diào)事件計(jì)算耗時(shí)而方法未在設(shè)置的interval 間隔內(nèi)執(zhí)行完畢的情況下,很容易出現(xiàn)超時(shí)導(dǎo)致的多線程重入問(wèn)題,也就是多個(gè)線程進(jìn)入了計(jì)時(shí)器對(duì)象綁定的Elapsed 事件,導(dǎo)致線程不安全.圖10 是按照上述流程某罐式加油車(chē)的仿真實(shí)時(shí)坐標(biāo)更新情況,設(shè)置事件引發(fā)間隔為100 ms,到達(dá)間隔引發(fā)事件: 時(shí)間軸增長(zhǎng)步長(zhǎng)T秒,Model 信息計(jì)算更新; Timer不管回調(diào)事件是否執(zhí)行完畢,它只負(fù)責(zé)每隔100 ms 觸發(fā)一次,由于系統(tǒng)處理效率存在不穩(wěn)定性,出現(xiàn)了部分線程未在規(guī)定時(shí)間范圍內(nèi)完成數(shù)據(jù)計(jì)算情況,由此引發(fā)多線程重入問(wèn)題導(dǎo)致坐標(biāo)重復(fù)更新.
圖10 改進(jìn)前目標(biāo)位置更新時(shí)間表
本文對(duì)上述仿真繪圖流程加以改進(jìn),讓定時(shí)器定時(shí)引發(fā)的回調(diào)事件能夠阻塞執(zhí)行,并且能夠動(dòng)態(tài)的添加和移除多個(gè)不同機(jī)場(chǎng)目標(biāo)定時(shí)運(yùn)動(dòng)任務(wù).
基于鎖的同步機(jī)制是多線程并行應(yīng)用中同步操作的主要實(shí)現(xiàn)機(jī)制[15].可重入鎖可解決多線程重入導(dǎo)致的線程不安全問(wèn)題,但是考慮到本文頻繁調(diào)用回調(diào)事件,簡(jiǎn)單的對(duì)回調(diào)函數(shù)部分進(jìn)行加鎖操作會(huì)嚴(yán)重影響仿真性能,本文對(duì)于單個(gè)機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)仿真過(guò)程,結(jié)合回調(diào)次數(shù)來(lái)阻塞定時(shí)器達(dá)到線程安全的目的.首先對(duì)計(jì)時(shí)器進(jìn)行類(lèi)封裝,在封裝類(lèi)中對(duì)計(jì)時(shí)器調(diào)用時(shí)先將計(jì)時(shí)器阻塞,設(shè)置函數(shù)回調(diào)次數(shù)為單次保證回調(diào)函數(shù)線程安全,回調(diào)事件執(zhí)行完畢后再對(duì)計(jì)時(shí)器重啟.通過(guò)上述操作能夠定時(shí)阻塞調(diào)用回調(diào)方法并且很大程度上提高了仿真性能,并保證了單個(gè)運(yùn)動(dòng)目標(biāo)的線程安全性.
考慮到機(jī)場(chǎng)地面保障作業(yè)任務(wù)的多目標(biāo)多時(shí)段等特點(diǎn),要實(shí)現(xiàn)多個(gè)機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)的多個(gè)定時(shí)任務(wù)仿真過(guò)程正常運(yùn)行,設(shè)計(jì)靜態(tài)類(lèi)SimulateTimerTask 實(shí)現(xiàn)多個(gè)不同機(jī)場(chǎng)目標(biāo)不同時(shí)段的定時(shí)運(yùn)動(dòng)任務(wù).該封裝類(lèi)主要包括以下函數(shù)屬性如表5.
表5 SimulateTimerTask 類(lèi)關(guān)鍵屬性函數(shù)
為了在添加和移除不同機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)的定時(shí)作業(yè)任務(wù)時(shí)保證線程的安全問(wèn)題,在類(lèi)內(nèi)部通過(guò)字典管理所有的SimulateTimer,同一個(gè)Model 的定時(shí)任務(wù)在添加時(shí)只會(huì)增加SimulateTimer 的調(diào)用次數(shù),而不會(huì)再次實(shí)例化新的計(jì)時(shí)器封裝對(duì)象,在添加和移除定時(shí)任務(wù)函數(shù)中使用鎖機(jī)制保證線程安全,添加機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)定時(shí)任務(wù)部分偽代碼如下:
readonly object dicLock;Dictionary<Modelname,SimulateTimer> timerDic;AddModelTask(ModelName){lock (dicLock){if (timerDic != null)isCreateTimer = true;if (timerDic.ContainsKey(ModelName)){SimulateTimer tarTimer = timerDic[ModelName];tarTimer.callCount++;isCreateTimer = false;}if (isCreateTimer){timerDic.Remove(ModelName);newTimer = new SimulateTimer(ModelName);newTimer.timerCallBack += Timercallback;newTimer.callCount = 1;timerDic.Add(newTimer);newTimer.RunTimer();}}
對(duì)程序改進(jìn)后的某罐式加油車(chē)的仿真實(shí)時(shí)坐標(biāo)更新情況如所示,圖11 與圖10 改進(jìn)前的結(jié)果比較,對(duì)仿真過(guò)程的并發(fā)改進(jìn)設(shè)計(jì)有效解決了多線程重入導(dǎo)致的線程安全問(wèn)題,提升了仿真程序性能和線程執(zhí)行任務(wù)的準(zhǔn)確性.
圖11 改進(jìn)后目標(biāo)位置更新時(shí)間表
對(duì)仿真過(guò)程進(jìn)行總體實(shí)現(xiàn),某機(jī)場(chǎng)在特定時(shí)間段保障車(chē)輛行駛過(guò)程、飛機(jī)滑行過(guò)程、人員軌跡繪制等實(shí)時(shí)二維仿真效果如圖12、圖13 所示,界面下方時(shí)間軸記錄當(dāng)前具體時(shí)間變化,動(dòng)畫(huà)仿真窗口展示對(duì)應(yīng)時(shí)刻的機(jī)場(chǎng)地面目標(biāo)實(shí)時(shí)運(yùn)動(dòng)狀態(tài).
圖12 機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)實(shí)時(shí)運(yùn)動(dòng)仿真過(guò)程展示
圖13 機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)實(shí)時(shí)運(yùn)動(dòng)仿真過(guò)程展示
本文利用復(fù)演法對(duì)建立的仿真系統(tǒng)模型進(jìn)行終態(tài)仿真試驗(yàn),機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)每次仿真運(yùn)行都是相互獨(dú)立的,采用相同的初始條件和相同的目標(biāo)運(yùn)動(dòng)參數(shù)對(duì)系統(tǒng)模型進(jìn)行N次仿真,設(shè)每次仿真運(yùn)行結(jié)果Xi是服從正態(tài)分布的隨機(jī)變量,隨機(jī)變量X的期望E(X)為:
其中,
制定試驗(yàn)方案,以天津?yàn)I海國(guó)際機(jī)場(chǎng)某時(shí)段地面保障過(guò)程運(yùn)動(dòng)仿真為例,設(shè)定多次試驗(yàn)以相同速度、時(shí)間間隔和相同路徑距離進(jìn)行仿真模擬.明確仿真初始狀態(tài)后定義多個(gè)定時(shí)任務(wù),對(duì)上述運(yùn)動(dòng)過(guò)程重復(fù)運(yùn)行程序監(jiān)測(cè)采樣50-80 次,為避免每次試驗(yàn)仿真運(yùn)行速度對(duì)結(jié)果產(chǎn)生影響,將所有試驗(yàn)方案的仿真運(yùn)行速度統(tǒng)一設(shè)置為100 ms/步長(zhǎng); 記錄不同地圖級(jí)別和不同仿真步長(zhǎng)對(duì)應(yīng)的橫縱坐標(biāo)變化像素值、運(yùn)行時(shí)間、仿真軌跡坐標(biāo)等數(shù)據(jù),結(jié)合式(13)和式(14),對(duì)仿真誤差百分比和仿真效率進(jìn)行分析計(jì)算,根據(jù)試驗(yàn)采樣數(shù)據(jù)計(jì)算結(jié)果生成統(tǒng)計(jì)分析圖,如圖14、圖15 所示,圖中第1-8、9-17、18-24 組數(shù)據(jù)分別從左到右對(duì)應(yīng)機(jī)場(chǎng)瓦片地圖的層級(jí)數(shù)為16、17、18 級(jí),仿真結(jié)果詳細(xì)分析如下.
使用本文研究的仿真模型系統(tǒng)進(jìn)行上述試驗(yàn),如圖14 為多次試驗(yàn)采樣中16-18 級(jí)瓦片拼接地圖不同仿真步長(zhǎng)情況下的誤差距離與上述仿真實(shí)驗(yàn)路徑總距離的比值,結(jié)果顯示在1-14 s 步長(zhǎng)范圍內(nèi)誤差值控制在0.50%以下,隨著地圖級(jí)別增加,仿真誤差逐步減小; 圖15 是不同地圖層級(jí)在不同仿真步長(zhǎng)范圍的仿真繪圖程序運(yùn)行時(shí)間數(shù)值變化情況,隨著仿真步長(zhǎng)增大,運(yùn)行時(shí)間相對(duì)減少,程序運(yùn)行效率隨之提高; 結(jié)合仿真動(dòng)畫(huà)中目標(biāo)運(yùn)動(dòng)軌跡連續(xù)性及誤差比值、程序運(yùn)行時(shí)間等多個(gè)因素,從實(shí)驗(yàn)結(jié)果和數(shù)據(jù)分析圖中可總結(jié)出: 將仿真步長(zhǎng)設(shè)定在4-10 s 范圍內(nèi)不僅能夠取得良好的動(dòng)畫(huà)效果且能將誤差控制在較小范圍內(nèi),在地圖層級(jí)數(shù)較低情況下可適當(dāng)降低仿真步長(zhǎng),層級(jí)較高情況下可適當(dāng)增加仿真步長(zhǎng)來(lái)改善仿真效果和程序運(yùn)行效率.
圖14 多個(gè)定時(shí)任務(wù)下不同仿真步長(zhǎng)誤差占比趨勢(shì)
圖15 多個(gè)定時(shí)任務(wù)下不同步長(zhǎng)仿真過(guò)程運(yùn)行時(shí)間
本文對(duì)機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)運(yùn)動(dòng)仿真過(guò)程進(jìn)行數(shù)學(xué)建模,利用改進(jìn)的A*算法確定機(jī)場(chǎng)運(yùn)動(dòng)目標(biāo)行駛路徑,結(jié)合并發(fā)機(jī)制對(duì)仿真過(guò)程進(jìn)行改進(jìn),針對(duì)具體的仿真試驗(yàn)對(duì)仿真結(jié)果進(jìn)行統(tǒng)計(jì)分析,最終實(shí)現(xiàn)了一種機(jī)場(chǎng)地面目標(biāo)實(shí)時(shí)運(yùn)動(dòng)仿真過(guò)程模型,具有形象、安全、經(jīng)濟(jì)、實(shí)效等特點(diǎn).該仿真模型現(xiàn)可應(yīng)用于機(jī)場(chǎng)地面保障流程推演,應(yīng)急方案驗(yàn)證、運(yùn)輸決策等多個(gè)領(lǐng)域,充分體現(xiàn)了四型機(jī)場(chǎng)的“平安、綠色,智慧、人文”核心思想.