王志強(qiáng)
(蘇州大學(xué)城市軌道交通學(xué)院,215006,蘇州∥講師)
基于牽引計(jì)算的列車運(yùn)行仿真技術(shù)可充分利用現(xiàn)代計(jì)算機(jī)軟硬件技術(shù),真實(shí)、快速、準(zhǔn)確地計(jì)算列車運(yùn)行過程,為線路工程咨詢、工程設(shè)計(jì)、運(yùn)營管理提供強(qiáng)有力的科技設(shè)計(jì)手段和輔助分析與決策工具,具有重要的現(xiàn)實(shí)意義。然而,傳統(tǒng)的列車運(yùn)行仿真算法運(yùn)算量大、運(yùn)算效率低,大大限制了其應(yīng)用范圍。為此,本文從常規(guī)算法的缺點(diǎn)和不足出發(fā),充分發(fā)揮日益普及的多核中央處理器(CPU)的運(yùn)算優(yōu)勢(shì),提出基于并行計(jì)算的列車運(yùn)行仿真快速算法。該算法能在不影響運(yùn)算精度的前提下大大提升運(yùn)算效率,為拓展列車運(yùn)行仿真技術(shù)的應(yīng)用范圍奠定基礎(chǔ)。
以單質(zhì)點(diǎn)模型為例,列車受到的外力全部作用在質(zhì)點(diǎn)上,包括:牽引力Fqy,基本阻力Wjz,由于曲線、坡道和隧道等產(chǎn)生的附加阻力Wfz,制動(dòng)力Fzd,列車自身的重力Pg,線路對(duì)列車的支持力N 等(如圖1所示)。
圖1 列車受力分析
影響列車運(yùn)行過程的外力主要有 Fqy、Wjz、Wfz和Fzd。由它們矢量疊加產(chǎn)生的合力,是推動(dòng)列車運(yùn)行狀態(tài)不斷變化的源泉。
1)單位牽引力fqy:其取值根據(jù)牽引特性數(shù)據(jù)(fqy=f1(v)),通過線性插值法求得任意速度點(diǎn)的單位牽引力值。
2)單位基本阻力wjz:根據(jù)公式wjz=a+bv+cv2求得,其中a、b、c 為與車輛有關(guān)的經(jīng)驗(yàn)常數(shù)。
3)單位附加阻力wfz:包括單位坡度附加阻力wi(wi=i,i 為線路坡度),單位曲線附加阻力wr(wr=A/R,其中A =600 為經(jīng)驗(yàn)常數(shù),R 是線路曲線半徑)和單位隧道附加阻力 ws(ws=0.000 13Ls,Ls為隧道長(zhǎng)度)三部分。
4)單位制動(dòng)力fzd:根據(jù)制動(dòng)特性曲線(fzd=fz(v))采取線性插值法計(jì)算任意速度的單位制動(dòng)力。
列車運(yùn)行過程中的各種工況包括:起動(dòng)工況,加速工況,惰行工況及制動(dòng)工況。各工況下列車所受單位合力c 如下:
1)起動(dòng)工況下:
式中,e 為單位起動(dòng)阻力的經(jīng)驗(yàn)值。
2)加速工況下:
3)惰行工況下:
4)制動(dòng)工況下:
根據(jù)所受的單位合力c,即可求得列車瞬時(shí)加速度a 如下:
式中:
C——列車受到的合力;
m——列車總質(zhì)量;
γ——回轉(zhuǎn)質(zhì)量系數(shù),通常取0.06;
g——重力加速度。
然后按照式(6)所示速度-距離基本迭代計(jì)算公式,計(jì)算列車運(yùn)行過程中的相關(guān)數(shù)據(jù)。
式中:
ai——第i 步長(zhǎng)時(shí)的列車瞬間加速度;
ci——第i 步長(zhǎng)時(shí)列車受到的單位合力;
Si——第i 步長(zhǎng)時(shí)列車的位置;
vi——第i 步長(zhǎng)時(shí)列車的速度;
Δt——每個(gè)步長(zhǎng)的時(shí)間間隔。
列車制動(dòng)距離是指自制動(dòng)開始到停車,列車所通過的距離。為了保證城市軌道交通列車的準(zhǔn)確停車,必須要滿足列車到達(dá)車站指定位置時(shí)速度為零。
為了確保列車進(jìn)站精確停車,仿真計(jì)算過程中的每一步都需要調(diào)用算法來判斷列車在當(dāng)前狀態(tài)(vi,Si)下若采取制動(dòng),能否滿足列車到站時(shí)速度為零的要求。所以,計(jì)算過程中需要頻繁調(diào)用“準(zhǔn)確停站判斷算法”,如圖2所示。
圖2 列車準(zhǔn)確停站的判斷算法
列車運(yùn)行仿真常規(guī)算法流程的具體步驟如下:
1)取得線路平縱斷面、列車牽引特性、列車制動(dòng)力等基礎(chǔ)數(shù)據(jù)。
2)根據(jù)運(yùn)營的限速要求和線路曲線對(duì)速度的限制要求,將列車的運(yùn)行線路分成若干個(gè)限速分段,并且判斷限速分段之間能否滿足列車的合理過渡,即列車從限速為vi的分段向限速為vj的分段過渡時(shí)列車制動(dòng)能力能否滿足要求。
3)初始化列車的速度、位移、時(shí)間等相關(guān)參數(shù)。
4)計(jì)算在列車起動(dòng)過程中,每一個(gè)步長(zhǎng)時(shí)間內(nèi)的列車速度值、時(shí)間值和位移值,并將數(shù)據(jù)保存。
5)判斷列車在下一個(gè)步長(zhǎng)內(nèi),如果采取牽引工況的話,能否滿足列車制動(dòng)準(zhǔn)確停站的要求。如果滿足條件,則計(jì)算列車在下一個(gè)步長(zhǎng)內(nèi)牽引工況下的列車速度值、時(shí)間值和位移值,并將數(shù)據(jù)保存;反之,則轉(zhuǎn)步驟6)。
6)判斷列車在下一個(gè)步長(zhǎng)內(nèi),如果采取惰行工況的話,能否滿足列車制動(dòng)準(zhǔn)確停站的要求。如果滿足條件,則計(jì)算列車在下一個(gè)步長(zhǎng)內(nèi)惰行工況下的列車速度值、時(shí)間值和位移值,并將數(shù)據(jù)保存;反之,則轉(zhuǎn)步驟7)。
7)計(jì)算列車在下一個(gè)步長(zhǎng)內(nèi)制動(dòng)工況下的列車速度值、時(shí)間值和位移值,并將數(shù)據(jù)保存。
8)判斷列車是否到達(dá)終點(diǎn),如果是,則轉(zhuǎn)步驟9);反之,則轉(zhuǎn)步驟5)。
9)將每個(gè)步長(zhǎng)內(nèi)計(jì)算得到的列車運(yùn)行數(shù)據(jù)在圖上表示出來,并用短直線連接,以形成列車牽引的速度-距離(v-S)曲線和時(shí)間-距離(T-S)曲線。
根據(jù)上述常規(guī)算法的計(jì)算流程,不難發(fā)現(xiàn)該算法存在以下不足:
1)仿真算法采用單線程順序計(jì)算,列車只能從起點(diǎn)開始,按照里程依次前行,途徑沿線的各個(gè)區(qū)間和車站,最后到達(dá)終點(diǎn)。
2)計(jì)算過程中的每一個(gè)仿真步長(zhǎng)都需要進(jìn)行1 至2 次的制動(dòng)起點(diǎn)反向推算,才能判斷出擬采用的牽引工況是否滿足要求。而每次的制動(dòng)起點(diǎn)反向推算,都需要調(diào)用圖2所示的反向遞推試湊算法來尋找制動(dòng)起點(diǎn)。這就使得算法的計(jì)算量非常巨大,計(jì)算過程耗時(shí)很長(zhǎng),不利于實(shí)時(shí)仿真的實(shí)現(xiàn),也限制了列車運(yùn)行仿真技術(shù)的推廣應(yīng)用。
為了克服上述常規(guī)算法的不足,本文在下述兩方面對(duì)常規(guī)算法進(jìn)行了改進(jìn)。
充分利用日益普及的多核CPU 的計(jì)算優(yōu)勢(shì),將線路上每個(gè)區(qū)間的列車運(yùn)行過程拆分為一個(gè)獨(dú)立的運(yùn)算單元,實(shí)現(xiàn)各區(qū)間的列車運(yùn)行過程并行計(jì)算,待所有區(qū)間運(yùn)行過程完成之后,再將計(jì)算數(shù)據(jù)匯總和處理。
圖3所示為常規(guī)算法的順序計(jì)算流程,按照里程順序依次計(jì)算各區(qū)間的運(yùn)行數(shù)據(jù),抵達(dá)線路終點(diǎn)后仿真計(jì)算完成。
圖3 單線程順序計(jì)算的流程示意圖
圖4所示為本文采用的并行計(jì)算算法流程。因各區(qū)間的運(yùn)行過程被當(dāng)做一個(gè)獨(dú)立的運(yùn)算單元,因此與圖3所示的順序計(jì)算流程相比,并行計(jì)算在計(jì)算開始前的準(zhǔn)備和計(jì)算結(jié)束后的處理上均有所不同。
圖4 多線程并行計(jì)算的流程示意圖
1)計(jì)算開始前的準(zhǔn)備工作:將各運(yùn)算單元的列車初始位置設(shè)為區(qū)間起點(diǎn)車站的中心線位置,列車初始速度設(shè)為車站控制速度,初始仿真時(shí)鐘設(shè)為零。
式中:
si,0,vi,0,ti,0——分別為第 i 個(gè)運(yùn)算單元的列車位移、列車速度和仿真時(shí)間的初始值;
si,s1,vi,s1——分別為第 i 個(gè)運(yùn)算單元所對(duì)應(yīng)的區(qū)間起點(diǎn)車站的中心線位置和該起點(diǎn)車站所規(guī)定的車站控制速度。
2)計(jì)算結(jié)束后的處理工作:按區(qū)間里程順序,按式(8)所示的換算規(guī)則,依次收集各區(qū)間的運(yùn)行數(shù)據(jù),得到完整的全線列車運(yùn)行仿真數(shù)據(jù)。
式中:
sk,vk,tk——為匯總后的第 k 組計(jì)算結(jié)果數(shù)據(jù)中的列車位移、列車速度和仿真時(shí)間;
si,j,vi,j,ti,j——為第 i 個(gè)運(yùn)算單元的第 j 組計(jì)算結(jié)果數(shù)據(jù)中的列車位移、列車速度和仿真時(shí)間。
與順序計(jì)算一樣,并行計(jì)算忽略了列車每次抵達(dá)區(qū)間終點(diǎn)站時(shí)產(chǎn)生的位置誤差和速度誤差,即每次列車開始從區(qū)間起點(diǎn)站出發(fā)時(shí),其位置和速度都默認(rèn)為起點(diǎn)車站規(guī)定的標(biāo)準(zhǔn)值。
與順序計(jì)算相比較,并行計(jì)算雖然在計(jì)算開始前的準(zhǔn)備和計(jì)算結(jié)束后的處理上有額外的工作,但從式(7)和式(8)可知,其主要是簡(jiǎn)單的賦值運(yùn)算。因此,并行計(jì)算的綜合效率要遠(yuǎn)高于順序計(jì)算。
采用預(yù)先計(jì)算制動(dòng)曲線的方法,當(dāng)列車v-s 坐標(biāo)點(diǎn)遠(yuǎn)離制動(dòng)曲線時(shí),只進(jìn)行限速要求判斷不進(jìn)行制動(dòng)起點(diǎn)推算;當(dāng)列車v-s 坐標(biāo)點(diǎn)接近制動(dòng)曲線時(shí),才啟動(dòng)制動(dòng)起點(diǎn)推算,以尋找最佳的制動(dòng)起點(diǎn)。
如圖5所示,常規(guī)算法的制動(dòng)起點(diǎn)反向推算需列車從A 站出發(fā)時(shí)起,至列車v-s 曲線點(diǎn)抵達(dá)制動(dòng)曲線時(shí)止,其推算運(yùn)行距離如圖5 中的L常規(guī)。
圖5 減少制動(dòng)起點(diǎn)反向推算次數(shù)的技術(shù)示意圖
從圖5 中可知,大量的反向制動(dòng)推算工作是沒有必要的,只有當(dāng)列車v-s 曲線點(diǎn)靠近制動(dòng)曲線時(shí),才有必要進(jìn)行制動(dòng)反向推算。為此,可從制動(dòng)曲線與限速紅線的交點(diǎn)所對(duì)應(yīng)的距離s1處開始進(jìn)行反向推算,則所需的推算距離為圖5所示的L推算,其遠(yuǎn)小于L常規(guī)。從而大大減少了列車運(yùn)行過程中的制動(dòng)起點(diǎn)反向推算次數(shù),減少了計(jì)算量,大大地提升了列車運(yùn)行計(jì)算的速度。
在圖6 中,與常規(guī)算法的流程一樣,首先進(jìn)行基礎(chǔ)數(shù)據(jù)的讀取和限速分段的劃分;然后,按照區(qū)間數(shù)量劃分運(yùn)算單元,列車在每個(gè)區(qū)間的單向運(yùn)行過程被劃分為一個(gè)獨(dú)立的線程運(yùn)算單元;再后,主線程將各個(gè)區(qū)間范圍內(nèi)的線路基礎(chǔ)數(shù)據(jù)、限速要求數(shù)據(jù)和列車性能數(shù)據(jù)傳遞給對(duì)應(yīng)的線程運(yùn)算單元,做好啟動(dòng)計(jì)算前的準(zhǔn)備工作;接著,主線程給每一個(gè)線程運(yùn)算單元傳達(dá)啟動(dòng)計(jì)算命令,并不斷偵聽各線程運(yùn)算單元的計(jì)算進(jìn)度,直至所有線程運(yùn)算單元完成計(jì)算;最后,主線程收集各線程運(yùn)算單元的計(jì)算結(jié)果,并進(jìn)行處理和匯總,得到全線路范圍內(nèi)的列車運(yùn)行仿真數(shù)據(jù),并將其保存后繪制v-s、t-s 曲線,結(jié)束本次計(jì)算。
在圖7 中,線程運(yùn)算單元首先接收到主線程傳遞來的線路基礎(chǔ)數(shù)據(jù)、限速要求數(shù)據(jù)和列車性能數(shù)據(jù),并找出區(qū)間內(nèi)每個(gè)速度控制點(diǎn)的控制位置和控制速度;然后,按照反向遞推法求出每個(gè)速度控制點(diǎn)對(duì)應(yīng)的制動(dòng)曲線,找出該制動(dòng)曲線與限速紅線的交點(diǎn),并記錄其位置信息s1,i。接著,將列車初始位置設(shè)為區(qū)間起始車站的中心線位置,將列車的初始速度設(shè)為區(qū)間起始車站的控制速度,將仿真時(shí)鐘設(shè)為零,并開始仿真計(jì)算;在每一個(gè)仿真步長(zhǎng)內(nèi),首先判斷列車當(dāng)前位置 sk是否小于 s1,i,若 Sk< s1,i,則列車在下一步長(zhǎng)工況選擇時(shí),只需判斷是否滿足限速紅線要求即可,無需進(jìn)行制動(dòng)起點(diǎn)推算;反之,若sk≥s1,i,則列車在下一步長(zhǎng)工況選擇時(shí),需要進(jìn)行制動(dòng)起點(diǎn)推算,判斷是否同時(shí)滿足制動(dòng)停車和限速紅線兩個(gè)要求;最后,當(dāng)列車到達(dá)區(qū)間終點(diǎn)車站的中心線位置時(shí),保存仿真數(shù)據(jù)并結(jié)束計(jì)算。
圖6 基于并行計(jì)算的列車運(yùn)行仿真算法流程圖
圖8所示為采用改進(jìn)算法的一個(gè)列車運(yùn)行仿真效果實(shí)例圖。圖8 中設(shè)有10 個(gè)車站,A 站~J 站,選用編組相同的列車進(jìn)行追蹤運(yùn)行,仿真步長(zhǎng)取0.1 s,其它參數(shù)略。列車從A 站起動(dòng)到J 站停車,在中間各站均停車30 s,列車的運(yùn)行曲線如圖8所示。在i7-920(2.66 GHz 四核八線程)的微機(jī)平臺(tái)上,在計(jì)算參數(shù)完全相同的條件下采用改進(jìn)算法完成本次運(yùn)算共用時(shí)6.2 s,而常規(guī)算法完成本次運(yùn)算則耗時(shí)274 s??梢?,本文所述的并行計(jì)算方法在多核CPU平臺(tái)上的計(jì)算效率要遠(yuǎn)高于常規(guī)算法,且其效率的提高值隨著CPU 內(nèi)核數(shù)的增加而增加。
本文提出了一種軌道交通列車運(yùn)行仿真計(jì)算的快速算法,能在不影響計(jì)算精度的前提下大大地提升列車運(yùn)行仿真計(jì)算的運(yùn)算速度,克服了列車運(yùn)行仿真常規(guī)算法運(yùn)算量大、計(jì)算速度慢等缺點(diǎn)。該算法可應(yīng)用于列車運(yùn)行仿真、多列車運(yùn)行模擬、列車運(yùn)行延誤及其傳播特點(diǎn)分析等相關(guān)技術(shù)領(lǐng)域,可提升系統(tǒng)分析計(jì)算的效率。
圖7 單個(gè)運(yùn)算單元的算法流程圖
圖8 基于牽引計(jì)算的列車運(yùn)行仿真效果實(shí)例圖
[1]劉海東,毛保華,何天健,等.不同閉塞方式下城軌列車追蹤運(yùn)行過程及其仿真系統(tǒng)的研究[J].鐵道學(xué)報(bào),2005(2):120.
[2]石紅國,彭其淵,郭寒英.城市軌道交通牽引計(jì)算模型[J]. 交通運(yùn)輸工程學(xué)報(bào),2005(4):20.
[3]王志強(qiáng),何嘉杭.故障列車救援情況下的多列車運(yùn)行仿真研究[J].城市軌道交通研究,2013(1):19.