宋云雪,張 穎
(中國民航大學(xué) 航空工程學(xué)院,天津 300300)
現(xiàn)階段國內(nèi)外學(xué)者對機(jī)場地面保障研究大多集中在機(jī)場地面保障流程優(yōu)化[1-3],機(jī)場保障能力驗(yàn)證評估[4,5],機(jī)場運(yùn)輸決策[6,7]等方面,針對上述文獻(xiàn)進(jìn)行總結(jié)分析,由于機(jī)場環(huán)境的特殊性、機(jī)場信息的離散性和復(fù)雜性,現(xiàn)有部分保障流程優(yōu)化研究難以對方案和研究方法進(jìn)行實(shí)地應(yīng)用驗(yàn)證; 而對機(jī)場保障能力評估時多數(shù)學(xué)者缺乏真實(shí)詳細(xì)的機(jī)場方案實(shí)施數(shù)據(jù),結(jié)果具有一定的主觀性; 在機(jī)場運(yùn)輸決策等領(lǐng)域需要大量機(jī)場實(shí)時監(jiān)測信息,信息的匱乏和機(jī)場試驗(yàn)的局限性會導(dǎo)致研究方法和方案的可行性難以判別.對于機(jī)場運(yùn)動仿真研究,Alomar 等人基于FlexSim 構(gòu)建機(jī)場地面車輛移動仿真模型來優(yōu)化其在運(yùn)動過程中的運(yùn)輸流程[8],潘衛(wèi)軍等人基于Unity 對機(jī)場應(yīng)急演練過程進(jìn)行了仿真評價[9]; 分析國內(nèi)外現(xiàn)有機(jī)場仿真研究多數(shù)借助了需要付費(fèi)的第三方平臺仿真引擎軟件,建立的仿真模型使用受平臺限制難以遷移,開發(fā)的程序缺乏復(fù)用性,軟件學(xué)習(xí)和使用復(fù)雜度較高.本文為解決上述問題,獨(dú)立設(shè)計(jì)并開發(fā)了一種機(jī)場運(yùn)動目標(biāo)仿真模型,借助計(jì)算機(jī)仿真技術(shù)對機(jī)場地面保障過程進(jìn)行仿真,構(gòu)建的模擬環(huán)境為機(jī)場保障中設(shè)施分配、路線規(guī)劃等流程優(yōu)化提供驗(yàn)證環(huán)境; 對機(jī)場旅客、行人、保障車輛和航空器運(yùn)輸工具等目標(biāo)進(jìn)行運(yùn)動仿真,能復(fù)現(xiàn)機(jī)場各部門組織工作狀態(tài)和機(jī)場保障設(shè)備的作業(yè)情況,產(chǎn)生的數(shù)據(jù)可為機(jī)場保障預(yù)案和保障能力評估驗(yàn)證提供依據(jù); 仿真模型的真實(shí)地理環(huán)境數(shù)據(jù)和機(jī)場目標(biāo)實(shí)時位置數(shù)據(jù)可為機(jī)場應(yīng)急處理、運(yùn)輸決策等提供判斷依據(jù);同時機(jī)場保障過程仿真也是基于民航安全無誤原則下對人員進(jìn)行培訓(xùn)的有效方法,可以為民航從業(yè)人員提供指導(dǎo)思路.此外,本研究設(shè)計(jì)實(shí)現(xiàn)的仿真模型可獨(dú)立運(yùn)行,也可嵌入機(jī)場保障相關(guān)的復(fù)雜系統(tǒng),應(yīng)用于民航機(jī)場研究相關(guān)的多個領(lǐng)域,具有廣泛的適用性,對提高機(jī)場航班過站保障能力具有重要意義.
實(shí)現(xiàn)底層數(shù)據(jù)的存儲和關(guān)聯(lián)是構(gòu)建機(jī)場地面目標(biāo)仿真模型的基礎(chǔ).機(jī)場地面保障全過程基于機(jī)場復(fù)雜的內(nèi)部環(huán)境,而GIS 圖層的要素、表面和模型能夠構(gòu)建模擬不同機(jī)場的環(huán)境地形.Xu 等人基于C#程序和ArcObjects 提出了一種數(shù)字地圖瓦片編碼和計(jì)算方法,生成的瓦片地圖可供在線和離線應(yīng)用程序使用[10].本文在文獻(xiàn)[10]研究基礎(chǔ)之上,借助GIS 開發(fā)平臺生成機(jī)場瓦片地圖為仿真提供環(huán)境數(shù)據(jù).
由于涉及的機(jī)場瓦片數(shù)據(jù)體量和數(shù)量巨大,離線環(huán)境下如何對其進(jìn)行合理存儲和有效管理是面臨的一大挑戰(zhàn).近年來Zhang 等人提出了一種基于Hadoop 的分布式文件系統(tǒng)柵格瓦片存儲策略[11],Lv等人提出了一種基于嵌入式數(shù)據(jù)庫的海量地圖瓦片存儲技術(shù)[12].基于上述研究,結(jié)合分布式文件系統(tǒng)和數(shù)據(jù)庫存儲特點(diǎn),本文采用分布式文件系統(tǒng)和關(guān)系數(shù)據(jù)庫相結(jié)合的方式來管理機(jī)場瓦片地圖數(shù)據(jù): 構(gòu)建共享目錄樹將不同機(jī)場瓦片地圖和拼接圖存儲在多個服務(wù)器,用戶訪問單個路徑結(jié)點(diǎn)就能讀取到所需機(jī)場衛(wèi)星瓦片地圖資源; 使用關(guān)系數(shù)據(jù)庫存儲城市基礎(chǔ)信息、機(jī)場點(diǎn)數(shù)據(jù)層和道路設(shè)施分布層等標(biāo)注信息,機(jī)場運(yùn)動目標(biāo)仿真底層關(guān)聯(lián)數(shù)據(jù)模型如圖1 所示.

圖1 仿真底層數(shù)據(jù)關(guān)聯(lián)模型
圖1 中點(diǎn)數(shù)據(jù)層的機(jī)場受控點(diǎn)和分布點(diǎn)標(biāo)注功能基于.Net 的GDI+實(shí)現(xiàn),底層數(shù)據(jù)關(guān)聯(lián)圖中點(diǎn)數(shù)據(jù)層的坐標(biāo)系使用GDI+的頁面坐標(biāo)系,該坐標(biāo)系原點(diǎn)位于仿真繪圖窗口左上角.如圖2 為南寧吳圩國際機(jī)場的道路及設(shè)施分布層頁面,在該層標(biāo)注了機(jī)場的關(guān)鍵設(shè)施以及機(jī)場運(yùn)動目標(biāo)行駛部分路線網(wǎng)絡(luò).

圖2 南寧吳圩國際機(jī)場設(shè)施道路分布層
機(jī)場目標(biāo)運(yùn)動仿真過程要得到真實(shí)的地理數(shù)據(jù)測算結(jié)果,需要實(shí)際環(huán)境和仿真環(huán)境比例關(guān)系,即表示地圖上一個像素坐標(biāo)點(diǎn)所代表地球上實(shí)際距離長度的地面分辨率參數(shù).結(jié)合圖1 中數(shù)據(jù)關(guān)聯(lián)模型,根據(jù)選定的機(jī)場瓦片地圖層級計(jì)算地圖分辨率,圖1 中機(jī)場衛(wèi)星地圖各層每個切片統(tǒng)一為256×256像素,level0對應(yīng)單個瓦片,level1對應(yīng)4 個瓦片,以此類推,得到levelZ的機(jī)場地圖瓦片個數(shù)CountlevelZ為:

機(jī)場瓦片地圖采取Web 墨卡托投影坐標(biāo)系,設(shè)赤道半徑為Re,其坐標(biāo)系范圍X方向最大值為Maxx,拼接地圖對應(yīng)的瓦片地圖層級為levelZ,瓦片數(shù)量為CountlevelZ,各級瓦片拼接圖總像素寬度為WidthlevelZ,levelZ級機(jī)場衛(wèi)星地圖的地面分辨率為GRlevelZ,單個瓦片的像素寬度為Width,由式(2)和式(3)得到式(4)地面分辨率GRlevelZ,公式如下:

為了保證仿真效果的清晰度和良好的用戶體驗(yàn),仿真模型中的底層機(jī)場瓦片數(shù)據(jù)默認(rèn)為16-18 級的瓦片地圖拼接圖,各級機(jī)場拼接地圖對應(yīng)的切片個數(shù)CountlevelZ和地面分辨率GRlevelZ計(jì)算結(jié)果如表1 所示.

表1 機(jī)場地圖層級關(guān)系對應(yīng)表
研究以天津?yàn)I海國際機(jī)場的18 級瓦片拼接圖為例,在機(jī)場點(diǎn)數(shù)據(jù)層標(biā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é)合地圖層級關(guān)系對應(yīng)表,可計(jì)算出天津?yàn)I海國際機(jī)場西跑道可用著陸距離(LDA)約為2 500 m,可用起飛距離(TODA)約為2 850 m 等數(shù)據(jù),為后續(xù)機(jī)場地面保障仿真過程計(jì)算奠定基礎(chǔ).
機(jī)場地面目標(biāo)在繪圖平面上的交互基礎(chǔ)是對模型所在坐標(biāo)系和仿真展示頁面坐標(biāo)系進(jìn)行坐標(biāo)轉(zhuǎn)換.針對坐標(biāo)系平移,通過仿射變換增加矩陣維數(shù),將二維矩陣表示形式轉(zhuǎn)換為三維矩陣,使用三維矩陣左乘的方式實(shí)現(xiàn)運(yùn)動目標(biāo)所在坐標(biāo)系和仿真繪圖平面坐標(biāo)系的平移、旋轉(zhuǎn)和縮放.以圖3 飛機(jī)為例,把目標(biāo)運(yùn)動坐標(biāo)系中飛機(jī)模型放置在繪圖界面坐標(biāo)系中.

圖3 運(yùn)動目標(biāo)坐標(biāo)系與繪圖坐標(biāo)系轉(zhuǎn)換
首先針對機(jī)場繪圖界面坐標(biāo)系XOY在 X軸方向上平滑移動m個單位,Y軸方向平移n個單位,設(shè)平移變換的系數(shù)矩陣為M1; 再對XOY繪圖界面坐標(biāo)系Y 軸反向縮放,縮放變換的系數(shù)矩陣為M2將經(jīng)上述矩陣變換后的繪圖界面坐標(biāo)系旋轉(zhuǎn)順時針旋轉(zhuǎn)θ度,旋轉(zhuǎn)系數(shù)矩陣M3; 最后通過計(jì)算繪圖界面坐標(biāo)系與運(yùn)動目標(biāo)坐標(biāo)系的像素比例關(guān)系為1:f進(jìn)行縮放,系數(shù)矩陣為M4,那么圖3 的轉(zhuǎn)換過程可以表示為:

結(jié)合矩陣復(fù)合轉(zhuǎn)換方式,將M1M2M3M4四個矩陣相乘表示為單個矩陣M,通過計(jì)算M可表示為:

結(jié)合矩陣式(5)、式(6)運(yùn)算,在已知運(yùn)動目標(biāo)坐標(biāo)系中運(yùn)動模型某點(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)動目標(biāo)在仿真界面坐標(biāo)系中的繪圖操作,如圖4為飛機(jī)在機(jī)場某時刻降落滑行的運(yùn)動狀態(tài).

圖4 仿真界面飛機(jī)運(yùn)動目標(biāo)滑行過程
機(jī)場運(yùn)動目標(biāo)在機(jī)場路網(wǎng)運(yùn)動行駛前需要確定移動路徑,本文對A*算法加以改進(jìn),利用改進(jìn)的A*算法來確定機(jī)場運(yùn)動目標(biāo)的最佳行駛路徑.A*算法是一種啟發(fā)式搜索算法,它的計(jì)算效率相比與Dijkstra 算法更快,利用其估價函數(shù)對節(jié)點(diǎn)加以擴(kuò)展能夠找到最合適的目標(biāo)節(jié)點(diǎn); 利用A*算法求解最佳路線過程中,雖然搜索節(jié)點(diǎn)明顯少于Dijkstra 算法,但其在大規(guī)模路網(wǎng)條件下搜索節(jié)點(diǎn)數(shù)量依舊會影響計(jì)算性能.本文對機(jī)場分區(qū)處理,將各區(qū)域路徑坐標(biāo)點(diǎn)進(jìn)行區(qū)域編號; 通過分區(qū)預(yù)處理操作對各區(qū)域運(yùn)動目標(biāo)行駛路線范圍加以限制達(dá)到A*算法在預(yù)處理環(huán)節(jié)減少搜索節(jié)點(diǎn)的目的.其中機(jī)場路網(wǎng)的點(diǎn)坐標(biāo)信息存儲結(jié)構(gòu)如表2 所示.

表2 機(jī)場路網(wǎng)點(diǎn)坐標(biāo)信息
A*算法的節(jié)點(diǎn)a估價函數(shù)如式(7):

其中,g(a)是從機(jī)場運(yùn)動目標(biāo)的設(shè)定運(yùn)動起點(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ī)場路網(wǎng)特點(diǎn),排除同一種類的機(jī)場目標(biāo)同一時間段超速現(xiàn)象,機(jī)場的機(jī)場運(yùn)動目標(biāo)行駛路線網(wǎng)絡(luò)滿足時變網(wǎng)絡(luò)的先入先出條件(FIFO),也就是同一時段同種類機(jī)場運(yùn)動目標(biāo)先出發(fā)的比后出發(fā)的先到達(dá).設(shè)機(jī)場運(yùn)動目標(biāo)給定出發(fā)時刻為Tstart,起點(diǎn)Vstart,終點(diǎn)為Vend,所有點(diǎn)坐標(biāo)集合為Vlist,坐標(biāo)連接的路段集合為Alist,現(xiàn)有未找到的運(yùn)動目標(biāo)最佳路徑剩余節(jié)點(diǎn)集合為NFlist,節(jié)點(diǎn)a的編號為Na,它的前驅(qū)節(jié)點(diǎn)為FNa,Tab(t)是機(jī)場運(yùn)動目標(biāo)t(t∈T)時刻在ab路段的出發(fā)時間,T是機(jī)場運(yùn)動目標(biāo)完成運(yùn)動過程的總時間分段集合.對于任意(a,b)∈Alist,(t)=minTab(t),用(t)構(gòu)造靜態(tài)網(wǎng)絡(luò)G,tmin(a,b)表示機(jī)場運(yùn)動目標(biāo)在G中從a點(diǎn)到b點(diǎn)的最短路徑的行程時間.對啟發(fā)式函數(shù)h(a)定義如下:

根究式(7)、式(8)設(shè)計(jì)改進(jìn)的A*算法計(jì)算流程如下:
(1)利用數(shù)據(jù)庫分組篩選出與當(dāng)前機(jī)場目標(biāo)所在點(diǎn)區(qū)域編號相鄰的點(diǎn)坐標(biāo)集合Plist;
(2)采用Dijkstra 算法計(jì)算集合Plist中點(diǎn)坐標(biāo)到目標(biāo)節(jié)點(diǎn)的h(a);
(3)初始化變量Va,Ta且對于變量?b≠a,Tb=+∞,FNa=0,Slist={Va},NFlist=Φ.
(4)改變節(jié)點(diǎn)編號,對所有a的后繼節(jié)點(diǎn),如果Tb>Ta+Tab(Ta)+h(a),則Tb=Ta+Tab(Ta)+h(a),FNb=FNa若b?NFlist,則NFlist=NFlist∪{b}.
(5)選擇節(jié)點(diǎn),設(shè)Vmin=min(b),b∈NFlist,令Va=Vmin,則Flist=Flist∪{a},NFlist=NFlist-{b}.
(6)如果Va=Vend,停止計(jì)算,否則回轉(zhuǎn)到步驟(1).
(7)通過反向追蹤節(jié)點(diǎn)a的前驅(qū)節(jié)點(diǎn)FNa,得到最短路徑.
通過改進(jìn)的A*算法,可以在仿真過程中提前對機(jī)場運(yùn)動目標(biāo)運(yùn)動最佳路線進(jìn)行規(guī)劃,提高機(jī)場運(yùn)動目標(biāo)作業(yè)效率.
GDI+的原始畫圖模式采用了Graphics 接口,該方法畫圖效率緩慢,而且在仿真測試過程中出現(xiàn)了嚴(yán)重的閃爍效果.在對圖像處理過程中很多學(xué)者采用緩沖技術(shù)提高圖像處理效率,如Zhou 等人研究了一種實(shí)時固定比例幀緩沖壓縮技術(shù)應(yīng)用于嵌入式圖形系統(tǒng)中[13];王宇飛等人利用雙緩沖技術(shù)顯著提高了測井曲線的繪制速度[14]; 為了避免繪圖效率對機(jī)場地面運(yùn)動目標(biāo)仿真過程的時效性造成不必要的干擾,影響仿真的準(zhǔn)確度,本文采用GDI+自帶的雙緩沖類BufferedGraphicsContext實(shí)現(xiàn)雙緩沖畫圖模式,較大程度上減少了程序繪圖運(yùn)行速度對仿真實(shí)時性的影響.
基于實(shí)時仿真理論,要將運(yùn)動目標(biāo)移動狀態(tài)與具體時間相關(guān)聯(lián),在坐標(biāo)變換繪圖過程中,模型的移動距離需要隨時間變化而做出調(diào)整.利用GDI+技術(shù)調(diào)整繪圖瞬間對應(yīng)的坐標(biāo)點(diǎn)位置,以目標(biāo)運(yùn)動過程總時間劃分合適的單位時間步長T,結(jié)合單位時間內(nèi)的速度變化和運(yùn)動目標(biāo)朝向角度變化值,計(jì)算單位時間步長T時段內(nèi)X軸和 Y軸方向的位移增量,進(jìn)而計(jì)算確定繪圖坐標(biāo)點(diǎn)位置.排除了繪圖效率對仿真模型中繪圖過程的客觀影響,并結(jié)合模型中機(jī)場目標(biāo)運(yùn)動路徑的存儲結(jié)構(gòu)和運(yùn)動規(guī)律,對確定繪圖坐標(biāo)點(diǎn)的實(shí)際問題建立計(jì)算模型.
圖5 左邊繪圖坐標(biāo)系中是機(jī)場運(yùn)動目標(biāo)移動行駛路線網(wǎng)絡(luò),其中擺渡車路線01 是利用改進(jìn)的A*算法求解確定的擺渡車最佳行駛路線,以該條路線為例,將路線中已知的相鄰坐標(biāo)兩點(diǎn)分解放大,已知機(jī)場運(yùn)動目標(biāo)模型對應(yīng)的行駛移動路徑、運(yùn)動速度、運(yùn)動加速度和運(yùn)動時間等信息,每隔單位步長T,確定繪圖對應(yīng)坐標(biāo)Pn的位置計(jì)算模型如圖5 所示.

圖5 路線相鄰路徑點(diǎn)分解計(jì)算模型
為方便機(jī)場運(yùn)動目標(biāo)屬性的描述與其相關(guān)數(shù)據(jù)的合理存儲,為機(jī)場運(yùn)動目標(biāo)建立統(tǒng)一的數(shù)據(jù)模型Model,如表3 所示.

表3 運(yùn)動目標(biāo)模型Model 屬性
令路徑中已知坐標(biāo)點(diǎn)為P(i),其相鄰坐標(biāo)點(diǎn)為P(i+1),兩點(diǎn)之間距離為Dis(i,i+1),兩點(diǎn)之間連線與水平方向夾角為 β,單位時間T間隔內(nèi) X方向和 Y方向增量分別為 Δx,Δy,N個T時間間隔內(nèi)的模型位移增量為incrementNT,結(jié)合表3 中Model 的相關(guān)屬性數(shù)據(jù)描述,對目標(biāo)模型勻速和非勻速運(yùn)動過程繪圖坐標(biāo)點(diǎn)Pn求解流程梳理如圖6 所示.

圖6 目標(biāo)模型繪圖坐標(biāo)點(diǎn)求解流程圖
基于上述計(jì)算模型,本文采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方式,設(shè)計(jì)Model 類封裝其相關(guān)屬性,初始化構(gòu)造函數(shù),移動距離、運(yùn)動速度、旋轉(zhuǎn)角度等計(jì)算函數(shù),模型旋轉(zhuǎn)角度計(jì)算方法主要功能是以對象綁定的移動路徑已知坐標(biāo)點(diǎn)為基礎(chǔ),計(jì)算目標(biāo)在運(yùn)動目標(biāo)坐標(biāo)系到繪圖仿真界面坐標(biāo)系繪圖操作時的旋轉(zhuǎn)角度circle_angle(i,i+1),結(jié)合GDI+繪圖仿真坐標(biāo)系特點(diǎn),該角度值主要包括以下4 種情況:
(1)當(dāng)yP(i+1)>yP(i)時:

(2)當(dāng)yP(i+1)<yP(i)時:

(3)當(dāng)yP(i+1)=yP(i)且xP(i+1)≥xP(i)時:

(4)除上述情況外,旋轉(zhuǎn)角度值為:

綜合式(9)-式(12)可在已知模型路徑點(diǎn)坐標(biāo)條件下正確控制仿真過程中機(jī)場運(yùn)動目標(biāo)的運(yùn)動朝向角度.根據(jù) X軸和 Y軸方向上的位移增量,在確定單位步長時間段內(nèi)對應(yīng)的繪圖坐標(biāo)點(diǎn)Pn時也包括了多種情況,如表4 所示.

表4 不同條件下 Pn坐 標(biāo)值
結(jié)合坐標(biāo)計(jì)算流程圖對相關(guān)數(shù)學(xué)理論模型,編寫程序接口將機(jī)場地面目標(biāo)實(shí)時運(yùn)動仿真過程產(chǎn)生的數(shù)據(jù)可視化,以天津?yàn)I海國際機(jī)場某航班地面保障擺渡車行駛運(yùn)動過程為例,該運(yùn)動目標(biāo)仿真過程的實(shí)時坐標(biāo)位置、運(yùn)動速度、朝向角度等數(shù)據(jù)展示如圖7 所示.其中詳細(xì)的軌跡坐標(biāo)和對應(yīng)位置的時刻信息可以為運(yùn)動目標(biāo)行駛路線碰撞檢測評估提供數(shù)據(jù)支撐,運(yùn)動目標(biāo)的速度位移變化可以用來評判目標(biāo)從出發(fā)地到目的地的運(yùn)動可行性.

圖7 Model 運(yùn)動仿真過程數(shù)據(jù)可視化
機(jī)場運(yùn)動目標(biāo)實(shí)時運(yùn)動二維仿真過程實(shí)際上是結(jié)合具體時間不斷實(shí)現(xiàn)圖像繪制和數(shù)據(jù)計(jì)算的同步過程.機(jī)場地面運(yùn)動目標(biāo)運(yùn)動過程仿真涉及到的地面保障車輛、旅客、保障人員、各類航空器的運(yùn)動過程對應(yīng)多個時間階段,而每個時間階段也可能包括多個目標(biāo)同時運(yùn)動的過程,如圖8 截取的某機(jī)場部分地面保障環(huán)節(jié)涉及到多個機(jī)場運(yùn)動目標(biāo)進(jìn)行作業(yè),根據(jù)機(jī)場地面目標(biāo)運(yùn)動特點(diǎn),設(shè)計(jì)并發(fā)程序?qū)⒎抡娓鱾€階段任務(wù)合理分工交給多個線程完成.

圖8 機(jī)場保障部分作業(yè)流程
本文采用多線程技術(shù),利用計(jì)時器來控制和管理不同時間階段對應(yīng)的多線程任務(wù),System.Timers.Timer 是.Net 基于服務(wù)器的多線程計(jì)時器,可以按照設(shè)定的時間間隔執(zhí)行事件處理程序,非常適合機(jī)場保障過程中不同目標(biāo)按照固定時間間隔執(zhí)行任務(wù)的情景,直接使用該計(jì)時器管理仿真計(jì)算過程流程如圖9所示.

圖9 多線程仿真繪圖流程
在計(jì)時器管理多線程任務(wù)過程中,如果一個計(jì)時器對象綁定的Elapsed 事件函數(shù)沒有處理完成,到達(dá)下一個時間點(diǎn)新的線程依舊會按時啟動執(zhí)行Model 信息更新的回調(diào)事件,當(dāng)遇到回調(diào)事件計(jì)算耗時而方法未在設(shè)置的interval 間隔內(nèi)執(zhí)行完畢的情況下,很容易出現(xiàn)超時導(dǎo)致的多線程重入問題,也就是多個線程進(jìn)入了計(jì)時器對象綁定的Elapsed 事件,導(dǎo)致線程不安全.圖10 是按照上述流程某罐式加油車的仿真實(shí)時坐標(biāo)更新情況,設(shè)置事件引發(fā)間隔為100 ms,到達(dá)間隔引發(fā)事件: 時間軸增長步長T秒,Model 信息計(jì)算更新; Timer不管回調(diào)事件是否執(zhí)行完畢,它只負(fù)責(zé)每隔100 ms 觸發(fā)一次,由于系統(tǒng)處理效率存在不穩(wěn)定性,出現(xiàn)了部分線程未在規(guī)定時間范圍內(nèi)完成數(shù)據(jù)計(jì)算情況,由此引發(fā)多線程重入問題導(dǎo)致坐標(biāo)重復(fù)更新.

圖10 改進(jìn)前目標(biāo)位置更新時間表
本文對上述仿真繪圖流程加以改進(jìn),讓定時器定時引發(fā)的回調(diào)事件能夠阻塞執(zhí)行,并且能夠動態(tài)的添加和移除多個不同機(jī)場目標(biāo)定時運(yùn)動任務(wù).
基于鎖的同步機(jī)制是多線程并行應(yīng)用中同步操作的主要實(shí)現(xiàn)機(jī)制[15].可重入鎖可解決多線程重入導(dǎo)致的線程不安全問題,但是考慮到本文頻繁調(diào)用回調(diào)事件,簡單的對回調(diào)函數(shù)部分進(jìn)行加鎖操作會嚴(yán)重影響仿真性能,本文對于單個機(jī)場運(yùn)動目標(biāo)仿真過程,結(jié)合回調(diào)次數(shù)來阻塞定時器達(dá)到線程安全的目的.首先對計(jì)時器進(jìn)行類封裝,在封裝類中對計(jì)時器調(diào)用時先將計(jì)時器阻塞,設(shè)置函數(shù)回調(diào)次數(shù)為單次保證回調(diào)函數(shù)線程安全,回調(diào)事件執(zhí)行完畢后再對計(jì)時器重啟.通過上述操作能夠定時阻塞調(diào)用回調(diào)方法并且很大程度上提高了仿真性能,并保證了單個運(yùn)動目標(biāo)的線程安全性.
考慮到機(jī)場地面保障作業(yè)任務(wù)的多目標(biāo)多時段等特點(diǎn),要實(shí)現(xiàn)多個機(jī)場運(yùn)動目標(biāo)的多個定時任務(wù)仿真過程正常運(yùn)行,設(shè)計(jì)靜態(tài)類SimulateTimerTask 實(shí)現(xiàn)多個不同機(jī)場目標(biāo)不同時段的定時運(yùn)動任務(wù).該封裝類主要包括以下函數(shù)屬性如表5.

表5 SimulateTimerTask 類關(guān)鍵屬性函數(shù)
為了在添加和移除不同機(jī)場運(yùn)動目標(biāo)的定時作業(yè)任務(wù)時保證線程的安全問題,在類內(nèi)部通過字典管理所有的SimulateTimer,同一個Model 的定時任務(wù)在添加時只會增加SimulateTimer 的調(diào)用次數(shù),而不會再次實(shí)例化新的計(jì)時器封裝對象,在添加和移除定時任務(wù)函數(shù)中使用鎖機(jī)制保證線程安全,添加機(jī)場運(yùn)動目標(biāo)定時任務(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();}}
對程序改進(jìn)后的某罐式加油車的仿真實(shí)時坐標(biāo)更新情況如所示,圖11 與圖10 改進(jìn)前的結(jié)果比較,對仿真過程的并發(fā)改進(jìn)設(shè)計(jì)有效解決了多線程重入導(dǎo)致的線程安全問題,提升了仿真程序性能和線程執(zhí)行任務(wù)的準(zhǔn)確性.

圖11 改進(jìn)后目標(biāo)位置更新時間表
對仿真過程進(jìn)行總體實(shí)現(xiàn),某機(jī)場在特定時間段保障車輛行駛過程、飛機(jī)滑行過程、人員軌跡繪制等實(shí)時二維仿真效果如圖12、圖13 所示,界面下方時間軸記錄當(dāng)前具體時間變化,動畫仿真窗口展示對應(yīng)時刻的機(jī)場地面目標(biāo)實(shí)時運(yùn)動狀態(tài).

圖12 機(jī)場運(yùn)動目標(biāo)實(shí)時運(yùn)動仿真過程展示

圖13 機(jī)場運(yùn)動目標(biāo)實(shí)時運(yùn)動仿真過程展示
本文利用復(fù)演法對建立的仿真系統(tǒng)模型進(jìn)行終態(tài)仿真試驗(yàn),機(jī)場運(yùn)動目標(biāo)每次仿真運(yùn)行都是相互獨(dú)立的,采用相同的初始條件和相同的目標(biāo)運(yùn)動參數(shù)對系統(tǒng)模型進(jìn)行N次仿真,設(shè)每次仿真運(yùn)行結(jié)果Xi是服從正態(tài)分布的隨機(jī)變量,隨機(jī)變量X的期望E(X)為:

其中,

制定試驗(yàn)方案,以天津?yàn)I海國際機(jī)場某時段地面保障過程運(yùn)動仿真為例,設(shè)定多次試驗(yàn)以相同速度、時間間隔和相同路徑距離進(jìn)行仿真模擬.明確仿真初始狀態(tài)后定義多個定時任務(wù),對上述運(yùn)動過程重復(fù)運(yùn)行程序監(jiān)測采樣50-80 次,為避免每次試驗(yàn)仿真運(yùn)行速度對結(jié)果產(chǎn)生影響,將所有試驗(yàn)方案的仿真運(yùn)行速度統(tǒng)一設(shè)置為100 ms/步長; 記錄不同地圖級別和不同仿真步長對應(yīng)的橫縱坐標(biāo)變化像素值、運(yùn)行時間、仿真軌跡坐標(biāo)等數(shù)據(jù),結(jié)合式(13)和式(14),對仿真誤差百分比和仿真效率進(jìn)行分析計(jì)算,根據(jù)試驗(yàn)采樣數(shù)據(jù)計(jì)算結(jié)果生成統(tǒng)計(jì)分析圖,如圖14、圖15 所示,圖中第1-8、9-17、18-24 組數(shù)據(jù)分別從左到右對應(yīng)機(jī)場瓦片地圖的層級數(shù)為16、17、18 級,仿真結(jié)果詳細(xì)分析如下.
使用本文研究的仿真模型系統(tǒng)進(jìn)行上述試驗(yàn),如圖14 為多次試驗(yàn)采樣中16-18 級瓦片拼接地圖不同仿真步長情況下的誤差距離與上述仿真實(shí)驗(yàn)路徑總距離的比值,結(jié)果顯示在1-14 s 步長范圍內(nèi)誤差值控制在0.50%以下,隨著地圖級別增加,仿真誤差逐步減小; 圖15 是不同地圖層級在不同仿真步長范圍的仿真繪圖程序運(yùn)行時間數(shù)值變化情況,隨著仿真步長增大,運(yùn)行時間相對減少,程序運(yùn)行效率隨之提高; 結(jié)合仿真動畫中目標(biāo)運(yùn)動軌跡連續(xù)性及誤差比值、程序運(yùn)行時間等多個因素,從實(shí)驗(yàn)結(jié)果和數(shù)據(jù)分析圖中可總結(jié)出: 將仿真步長設(shè)定在4-10 s 范圍內(nèi)不僅能夠取得良好的動畫效果且能將誤差控制在較小范圍內(nèi),在地圖層級數(shù)較低情況下可適當(dāng)降低仿真步長,層級較高情況下可適當(dāng)增加仿真步長來改善仿真效果和程序運(yùn)行效率.

圖14 多個定時任務(wù)下不同仿真步長誤差占比趨勢

圖15 多個定時任務(wù)下不同步長仿真過程運(yùn)行時間
本文對機(jī)場運(yùn)動目標(biāo)運(yùn)動仿真過程進(jìn)行數(shù)學(xué)建模,利用改進(jìn)的A*算法確定機(jī)場運(yùn)動目標(biāo)行駛路徑,結(jié)合并發(fā)機(jī)制對仿真過程進(jìn)行改進(jìn),針對具體的仿真試驗(yàn)對仿真結(jié)果進(jìn)行統(tǒng)計(jì)分析,最終實(shí)現(xiàn)了一種機(jī)場地面目標(biāo)實(shí)時運(yùn)動仿真過程模型,具有形象、安全、經(jīng)濟(jì)、實(shí)效等特點(diǎn).該仿真模型現(xiàn)可應(yīng)用于機(jī)場地面保障流程推演,應(yīng)急方案驗(yàn)證、運(yùn)輸決策等多個領(lǐng)域,充分體現(xiàn)了四型機(jī)場的“平安、綠色,智慧、人文”核心思想.