基于文件共享的paramics和matlab數據交互方法和設備的制造方法
【技術領域】
[0001] 本發明屬于交通仿真領域,具體涉及一種基于文件共享的PARAMCIS和MATLAB數 據交互方法和設備。
【背景技術】
[0002] 智能交通系統的應用能夠改善交通出行狀況,而交通仿真是智能交通系統的重 要組成部分,能夠對系統進行評價和估計,為交通控制算法的選擇提供了科學的依據。 PARAMICS是一款領先的微觀交通仿真軟件,具有動態三維可視化用戶界面,支持100萬 個交叉口,32000個小區的仿真,旨在設計經濟、高效、對駕駛員和行人友好的交通系統。 PARAMICS軟件本身提供了API函數供使用者進行二次開發,使用者可通過C/C++語言調用 API函數來開發插件程序,然后將插件程序編譯為動態鏈接庫。將成功編譯的動態鏈接庫的 路徑寫入programming文件后,在核心仿真模塊運行時,PARAMICS會自動加載該動態鏈接 庫。然而,在應用PARAMICS進行交通仿真時,常會用到智能控制算法,采用C/C++語言來實 現這些算法,工作量較大,開發周期較長,而且算法的效率和精度很大程度上依賴于開發者 對算法結構的深刻理解。
[0003] MATLAB是一款成熟的數學軟件,提供了較為全面的智能控制算法工具箱,開發者 能夠迅速實現相關算法。MATLAB和PARAMICS本身并不能直接進行數據交互,而WINDOWS的 進程間通訊及消息傳遞技術或MATLAB和C/C++混合編程技術實現較為復雜,且與交通仿真 并無太大聯系。因此,尋找一種易于實現的MATLAB和PARAMICS數據交互方法成為亟待解 決的問題。
【發明內容】
[0004] 本發明提供了一種通過PARAMCIS軟件的插件程序所實現的方法,該插件程序通 過共享文件與MATLAB程序交互,該方法包括:插件程序初始化;設置共享文件更新時刻;以 及讀取flag文件,并根據flag文件中的驅動標志值來讀寫相應共享文件。
[0005] 本發明還提供了一種通過與PARAMICS軟件一起使用的MATLAB程序所實現的方 法,該MATLAB程序通過共享文件與PARAMICS軟件的插件程序交互,共享文件包括flag文 件、data文件和control文件,該方法包括:a)初始化MATLAB程序的參數;b)改寫flag文 件的驅動標志為〇 ;c)讀取flag的驅動標志,直到驅動標志為1 ;d)讀取data文件,得到 PARAMICS軟件的交通數據;e)根據data文件中的交通數據,運行控制算法,獲得運行結果; 以及f)將控制算法的運行結果寫入control文件。
[0006] 本發明還提供了一種通過PARAMCIS軟件的插件程序所實現的設備,該插件程序 通過共享文件與MATLAB程序交互,該設備包括:用于插件程序初始化的裝置;用于設置共 享文件更新時刻的裝置;以及用于讀取flag文件,并根據flag文件中的驅動標志值來讀寫 相應共享文件的裝置。
[0007] 本發明還提供了一種通過與PARAMICS軟件一起使用的MATLAB程序所實現的設 備,該MATLAB程序通過共享文件與PARAMICS軟件的插件程序交互,共享文件包括flag文 件、data文件和control文件,該設備包括:a)用于初始化MATLAB程序的參數的裝置;b) 用于改寫flag文件的驅動標志為0的裝置;c)用于讀取flag的驅動標志,直到驅動標志 為1的裝置;d)用于讀取data文件,得到PARAMICS軟件的交通數據的裝置;e)用于根據 data文件中的交通數據,運行控制算法,獲得運行結果的裝置;以及f)用于將控制算法的 運行結果寫入control文件的裝置。
[0008] 根據本發明的基于文件共享的MATLAB和PARAMICS數據交互方法,能在不同的 MATLAB和PARAMICS版本下實現數據交互,為快速而有效地驗證交通控制算法效果提供了 一種有效途徑。該數據交互方法能夠通過相對簡單的共享文件,迅速建立起微觀交通仿真 軟件PARAMICS和數學軟件MATLAB之間的數據聯系,從而縮短開發周期,降低算法實現的難 度,為交通控制算法的仿真提供有力保障。
【附圖說明】
[0009] 圖1示出了根據本發明方法的實施例的結構圖。
[0010] 圖2示出了根據本發明方法的實施例的數據交互結構圖。
[0011] 圖3示出了根據本發明方法的實施例的PARAMICS插件程序流程圖。
[0012] 圖4示出了根據本發明方法的實施例的MATLAB程序流程圖。
【具體實施方式】
[0013] 以下結合附圖和實施例對本發明的技術方案作進一步詳細說明。以下實施例在以 本發明技術方案為前提下進行實施,給出了詳細的實施方式和過程,但本發明的保護范圍 不限于下述的實施例。
[0014] 圖1示出了本發明根據本發明方法的實施例的結構圖。如圖1所示,插件程序對 PARAMICS軟件執行各種讀寫和控制操作,并通過共享文件機制與MATLAB程序交互。
[0015] 為更好地理解本實施例提出的方法,選取一個兩相位的單交叉口的PARAMCIS控 制算法仿真進行說明。
[0016] (1)定義共享文件形式:
[0017] 如圖2所示,定義三種類型的共享文件,分別為data文件、flag文件以及control 文件。其中,data文件用來存儲從PARAMCIS軟件中采集到的交通數據,例如各車道交通流 量,插件程序擁有寫入權限,MATLAB程序擁有讀出權限;flag文件為程序交替運行驅動標 志,插件程序和MATLAB程序都可以對其進行讀寫操作;control用來存儲MATLAB程序的 算法結果,此實施例中為綠信比,插件程序對其擁有讀出權限,MATLAB軟件對其擁有寫入權 限。
[0018] ⑵獲取路網相關參數:
[0019] 為了采集到PARAMICS相關的仿真數據,并且能夠通過插件對其進行控制,需要獲 取該交叉口所有相關link的名稱和位置和每個link上detector的名稱,以及該交叉口node的名稱等參數。
[0020] (3)插件程序設計:
[0021 ] 參考圖3說明插件程序的操作機制。
[0022] a)程序初始化
[0023] 插件程序的初始化主要在voidqpx_NET_preOpen(void)函數中完成,在初始化 過程中,根據要控制的node名稱,獲取其相關指針,然后通過結點外部控制設置函數void qps_NDE_externalController(NODE*node,Boolon),將其設置為外部控制節點。
[0024]b)設置共享文件更新時刻
[0025] 在該實施例中,插件程序的主體部分在void qpx_NET_second(void)函數中編寫, 該函數在仿真時間每秒結束時調用。本實施例仿真時間每40秒(控制周期)更新一次共 享文件。
[0026]c)讀取flag文件
[0027]i驅動標志為 0,用函數intcjpg_DTL_count(L00P*loop,inttype)采集每個車道 的流量,然后將數據寫入data文件,然后將驅動標志置為1;
[0028]ii驅動標志為1,先讀取flag文件,然后讀取control文件,在本實施例中 control文件中存儲的是綠信比,綠信比與控制周期的乘積即為下一個周期的綠燈時間,以 此可得到新的配時方案。根據新的配時方案更新PARAMICS參數,可以使PARAMICS按照更 新的參數運行,執行以上操作,直到驅動標志位不等于1 ;
[0029]iii驅動標志為2,無操作。
[0030] (4)編譯生成動態鏈接庫:
[0031] 將插件程序編譯生成動態鏈接庫(DLL),并在PARAMICS路網文件夾下新建 programming文件(后綴為Modeller"或無后綴),將動態鏈接庫的地址和文件名復制到 該文件中,如"D:\ParamicsPlugin\SingleControl.dll" 并保存。
[0032] (5)MATLAB程序設計:
[0033] 參考圖4說明MATLB程序的操作機制。
[0034]a)初始化參數
[0035] 初始化MATLAB程序時,關鍵參數為程序最大循環次數,該次數應與PARAMICS仿真 時間相對應。本實施例中仿真時間為400分鐘,故最大循環次數為
[0036]b)改寫flag文件的驅動標志為0。
[0037]c)讀取flag驅動標志位,直到標志位為1。
[0038]d)讀取data文件,得到每個車道的流量數據。
[0039]e)根據data文件中的數據,運行控制算法,計算出綠信比。
[0040]f)將控制算法的運行結果寫入control文件。
[0041]g)若未達最大次數,則跳轉至b),否則程序終止。
[0042] (6)程序運行方法:
[0043]先用PARAMICS軟件的核心仿真模塊Modeller打開相應的路網,再打開編寫完成 的MATLAB程序,之后運行MATLAB程序,然后運行Modeller開始仿真。
[0044] 根據本發明實施例,提供了一種通過PARAMCIS軟件的插件程序所實現的設備,該 插件程序通過共享文件與MATLAB程序交互,該設備包括:用于插件程序初始化的裝置;用 于設置共享文件更新時刻的裝置;以及用于讀取flag文件,并根據flag文件中的驅動標志 值來讀寫相應共享文件的裝置。
[0045] 根據本發明的實施例,還提供了一種通過與PARAMICS軟件一起使用的MATLAB程 序所實現的設備,該