張 巖,李 想,孫文橋,劉啟鋼,張 明
(1.中國鐵道科學(xué)研究院集團(tuán)有限公司 運(yùn)輸及經(jīng)濟(jì)研究所,北京 100081;2.中國鐵路南寧局集團(tuán)有限公司 柳州站,廣西 柳州 545007)
鐵路站場(chǎng)取送車是為了實(shí)現(xiàn)貨物裝卸、車輛檢修清洗等目的,從站場(chǎng)股道向作業(yè)地點(diǎn)送車和從作業(yè)地點(diǎn)取回車輛的作業(yè)過程,包括單送、單取、送取結(jié)合等多種形式。其中,現(xiàn)場(chǎng)單取作業(yè)場(chǎng)景較多,而且多為可按任意順序掛走的“普通車流”[1-2]。受到車列最大長度限制,取車作業(yè)往往需要多次往返。在此情況下,合理安排調(diào)車機(jī)車(以下簡(jiǎn)稱“調(diào)機(jī)”)的取車順序可以提高機(jī)車車輛作業(yè)效率,加快車輛集結(jié)進(jìn)度,保證車流的準(zhǔn)點(diǎn)出發(fā),有利于縮短車輛周轉(zhuǎn)時(shí)間[3]。
鐵路站場(chǎng)取送車順序優(yōu)化問題是一個(gè)經(jīng)典的NP難問題,目前國內(nèi)相關(guān)研究較多。李文權(quán)等[4]采用圖論和排序論求解樹枝形鐵路專用線取送車問題。石紅國等[5]將鐵路取送車問題抽象為哈密爾頓圖最短回路問題進(jìn)行求解。這些算法的計(jì)算次數(shù)隨著存車股道數(shù)量的增加呈指數(shù)增加,在存車股道數(shù)量較多時(shí),很難在規(guī)定時(shí)間內(nèi)求得最優(yōu)解。郭垂江等[6]利用C-W節(jié)約改進(jìn)算法解決動(dòng)態(tài)規(guī)劃計(jì)算量大、耗時(shí)長的問題。有部分學(xué)者應(yīng)用蟻群算法、遺傳算法等人工智能算法求解取送車計(jì)劃優(yōu)化問題,有效縮短求得可接受解的時(shí)間[7-10]。但是,這些研究?jī)H考慮取車、送車、調(diào)車等作業(yè)一次完成的情況,未考慮多次往返目標(biāo)作業(yè)地點(diǎn)的取車場(chǎng)景,算法也難以在有限時(shí)間內(nèi)快速求解。另外,還有一些研究表明[11-14],蟻群算法可以在有限時(shí)間內(nèi)求解旅行商問題的最優(yōu)路徑,然而多次往返取車模型涉及“城市”訪問次數(shù)動(dòng)態(tài)變化的情況,傳統(tǒng)蟻群算法無法直接求解。為此,考慮車組最大長度和最晚取回目標(biāo)站場(chǎng)時(shí)間限制,將股道入口信號(hào)機(jī)與車組之間距離、牽出車組長度納入到調(diào)機(jī)總走行距離計(jì)算公式,建立數(shù)學(xué)模型以描述鐵路站場(chǎng)取車作業(yè)過程。改進(jìn)傳統(tǒng)蟻群算法步驟,使其適應(yīng)城市訪問次數(shù)動(dòng)態(tài)變化條件下旅行商問題求解,計(jì)算得到多次往返取車作業(yè)順序的最優(yōu)方案。
鐵路站場(chǎng)包括到達(dá)場(chǎng)、編組場(chǎng)、出發(fā)場(chǎng)、車輛檢修站場(chǎng)、貨物裝卸站場(chǎng)等,大多為樹枝形站場(chǎng)[8]。樹枝形鐵路站場(chǎng)布置示意圖如圖1所示。站場(chǎng)入口處只有1條線路,通過道岔分成多級(jí)樹枝形線路,最末端線路為作業(yè)股道。站場(chǎng)入口和股道入口均設(shè)置信號(hào)機(jī),調(diào)機(jī)經(jīng)入口信號(hào)機(jī)進(jìn)入站場(chǎng),按順序進(jìn)入各作業(yè)股道連掛車輛組成車列,再經(jīng)站場(chǎng)入口信號(hào)機(jī)將車列取回至目標(biāo)車場(chǎng)。如果車列長度超出最大長度限制,則需要進(jìn)行多次往返取車,可能需要多次到同一股道取車。鐵路站場(chǎng)往返取車作業(yè)優(yōu)化問題可以描述為:以調(diào)機(jī)總走行距離最短為目標(biāo),在完成所有的取車任務(wù)的條件下,確定多次往返取車的最優(yōu)取車順序。
圖1 樹枝形鐵路站場(chǎng)布置示意圖Fig.1 Layout of branch-shaped railway yard
為方便建模,提出以下假設(shè):①只采用1臺(tái)調(diào)機(jī)進(jìn)行取車作業(yè),調(diào)機(jī)的走行平均速度已知;②調(diào)機(jī)起始位置為站場(chǎng)入口信號(hào)機(jī)外端;③樹枝形站場(chǎng)的線路、道岔、信號(hào)機(jī)位置已知;④作業(yè)開始前,各作業(yè)股道停留的車輛數(shù)和各車輛長度已知;⑤停留在作業(yè)股道上的車組的位置與股道入口信號(hào)機(jī)的距離已知;⑥車列最大長度限制已知。
設(shè)站場(chǎng)有n條作業(yè)股道,G= {gi|i= 1,2,…,n}為站場(chǎng)所有作業(yè)股道集合。l為車列最大長度限制;d為本站場(chǎng)入口信號(hào)機(jī)至取車目標(biāo)站場(chǎng)入口信號(hào)機(jī)距離;v為調(diào)機(jī)走行的平均速度。函數(shù)d(gi)為本站場(chǎng)入口信號(hào)機(jī)至作業(yè)股道gi入口信號(hào)機(jī)的距離,函數(shù)dg(gi,gj)為作業(yè)股道gi的入口信號(hào)機(jī)經(jīng)最近折返道岔至作業(yè)股道gj的入口信號(hào)機(jī)的距離。
m為停有待取車組的股道總數(shù),P= {pi|i= 1,2,…,m}為存車股道(在取車開始前有車輛停留的股道)集合。函數(shù)d(pi)為本站場(chǎng)入口信號(hào)機(jī)至存車股道pi入口信號(hào)機(jī)的距離;函數(shù)dlt(pi)為存車股道pi上車組最晚到達(dá)目標(biāo)站場(chǎng)的時(shí)間;函數(shù)dt(pi)為存車股道pi上車組實(shí)際到達(dá)目標(biāo)站場(chǎng)的時(shí)間,函數(shù)dp(pi)為存車股道pi上車組與該股道入口信號(hào)機(jī)之間的距離;函數(shù)dg(pi,pj)為作業(yè)股道pi入口信號(hào)機(jī)經(jīng)最近折返道岔至存車股道pj入口信號(hào)機(jī)的距離。當(dāng)pi=gi,pj=gj時(shí),有dp(pi) =dp(gi), 且dg(pi) =dg(gi),dg(pi,gj) =dg(gi,gj)。函數(shù)cn(pi)為股道pi停留車組包含的車輛數(shù);函數(shù)ptl(pi)為股道pi停留車組總長度。
Q= (q1,q2,…,qk)為取車股道順序,其中qi∈P(i= 1,2,…,k),調(diào)機(jī)可能到同一存車股道多次取車,因而在取車股道順序Q中,一個(gè)存車股道可能出現(xiàn)多次,有k≥m。函數(shù)tl(qi)為在股道qi取走的車組長度,qtl(qi)為連掛股道qi上車組后車列總長度,有qtl(qi) =qtl(qi-1) +tl(qi)。函數(shù)ptl(qi)為取完股道qi上車組后,股道qi上剩余車組的長度,有ptl(qi) =ptl(qi) -tl(qi)。調(diào)機(jī)取車總走行距離為其中dis(qi)為取股道qi上車組的走行距離,表示調(diào)機(jī)從站場(chǎng)入口信號(hào)機(jī)外側(cè)或上一次作業(yè)結(jié)束位置開始,至將目標(biāo)股道車組牽引至目標(biāo)股道入口信號(hào)機(jī)內(nèi)側(cè)或送至目標(biāo)站場(chǎng)的走行距離。如果送至目標(biāo)站場(chǎng)后仍有待取車組,還應(yīng)包括調(diào)機(jī)返回站場(chǎng)入口信號(hào)機(jī)外側(cè)的距離。
給出調(diào)機(jī)處于不同起始位置時(shí),單次連掛調(diào)機(jī)走行距離的計(jì)算公式。當(dāng)調(diào)機(jī)處于站場(chǎng)入口信號(hào)機(jī)外側(cè)時(shí),連掛后,如果qtl(qi) <l,那么
如果dtl(qi) =l,那么
如果qtl(qi) >l,那么
調(diào)機(jī)取第1個(gè)車組之前或送完1個(gè)最大長度車列返回時(shí),調(diào)機(jī)處于站場(chǎng)入口信號(hào)機(jī)外側(cè)。調(diào)機(jī)連掛完目標(biāo)股道車組后,將車組牽出至目標(biāo)股道入口信號(hào)機(jī)內(nèi)側(cè)。公式 ⑴ 表示調(diào)機(jī)取車組的走行距離包括站場(chǎng)入口信號(hào)機(jī)至車組所在股道入口信號(hào)機(jī)的距離、股道車組停留位置距該股道入口信號(hào)機(jī)距離的2倍。在股道完成一次作業(yè)后,將剩余車組與該股道入口信號(hào)機(jī)之間距離dp(pi)更新為0。當(dāng)取最后一個(gè)車組時(shí),需將車組牽到站場(chǎng)入口信號(hào)機(jī)外側(cè)并送至目標(biāo)站場(chǎng)。公式 ⑵ 表示當(dāng)取完目標(biāo)股道車組后車列長度達(dá)到調(diào)機(jī)最大牽引推送長度限制時(shí),調(diào)機(jī)需要額外將車組牽引出站場(chǎng)入口信號(hào)機(jī),并往返至取車目標(biāo)站場(chǎng),當(dāng)所有車輛取完時(shí)不必返回。公式⑶ 表示當(dāng)取完目標(biāo)車組后車列長度大于調(diào)機(jī)最大牽引推送長度l限制時(shí),調(diào)機(jī)需額外將車組牽引出站場(chǎng)入口信號(hào)機(jī),將車組送至取車目標(biāo)站場(chǎng),返回后停留在站場(chǎng)入口信號(hào)機(jī)外側(cè)。
當(dāng)調(diào)機(jī)處于股道時(shí),連掛后,如果qtl(qi) <l,那么
如果qtl(qi) =l,那么
如果qtl(qi) >l,那么
當(dāng)調(diào)機(jī)取完某個(gè)股道上的車組后,車列長度未達(dá)到l且i<k,調(diào)機(jī)將股道車組釋放在該股道入口信號(hào)機(jī)內(nèi)側(cè),繼續(xù)取下一個(gè)車組。調(diào)機(jī)需要將上一個(gè)股道車組牽出到qi-1至qi的折返道岔外側(cè),因而調(diào)機(jī)至下一個(gè)股道的走行距離包括股道入口信號(hào)機(jī)至下一個(gè)股道入口信號(hào)機(jī)之間距離、牽出車組長度和目標(biāo)連掛車組停留位置距股道入口信號(hào)機(jī)距離的2倍。公式 ⑷ 至 ⑹ 都包含調(diào)機(jī)從原股道至取車目標(biāo)股道的走行距離,公式 ⑷ 表示取最后一個(gè)車組時(shí),需要將車組牽出站場(chǎng)入口信號(hào)機(jī)并送至目標(biāo)站場(chǎng)。公式 ⑸、⑹ 表示當(dāng)連掛車組后,車列長度大于等于l時(shí),調(diào)機(jī)需要額外將車組牽引至站場(chǎng)入口信號(hào)機(jī)外側(cè),送至目標(biāo)站場(chǎng),返回后停留在站場(chǎng)入口信號(hào)機(jī)外側(cè),當(dāng)作業(yè)完畢(即i=k)時(shí)不計(jì)算返回路程。
對(duì)單次連掛調(diào)機(jī)走行距離的計(jì)算公式求和,得到調(diào)機(jī)總走行距離公式。優(yōu)化目標(biāo)是調(diào)機(jī)將站場(chǎng)所有停留車組取出并送至目標(biāo)站場(chǎng)的總走行距離R最短,目標(biāo)函數(shù)為
股道上車組到達(dá)目標(biāo)站場(chǎng)的時(shí)間dt(pi)為股道上所有車組被送到目標(biāo)站場(chǎng)時(shí),調(diào)機(jī)的總走行距離除以調(diào)機(jī)的平均速度,計(jì)算公式為
鐵路站場(chǎng)取車模型可以抽象為旅行商問題求解。在鐵路站場(chǎng)往返取車作業(yè)優(yōu)化問題中,將股道看作旅行商問題中的“城市”,將每次車列的移動(dòng)看作旅行商問題中“城市”之間的一次“遷移”。當(dāng)存車股道較少時(shí),可以使用深度優(yōu)先或廣度優(yōu)先等遍歷算法,搜索取車順序的所有解,從而獲得最優(yōu)解;而當(dāng)存車股道數(shù)量較大時(shí),遍歷算法無法在可以接受的時(shí)間內(nèi)完成求解,為此需要借助智能優(yōu)化算法求解。蟻群算法是解決旅行商問題的一種有效的智能優(yōu)化算法,可在較短的時(shí)間內(nèi)尋找到NP問題的滿意解[10-11]。傳統(tǒng)旅行商問題可以描述為:尋找一條距離最短的路徑,使旅行商選擇1條路徑從1個(gè)城市出發(fā),經(jīng)過所有城市1次,再回到出發(fā)城市。旅行商問題的實(shí)質(zhì)是在1個(gè)帶權(quán)無向圖中找1個(gè)權(quán)值最小的哈密爾頓回路[12]。但是,傳統(tǒng)旅行商問題只能經(jīng)過同一個(gè)城市1次,無法描述多次往返取車的場(chǎng)景。因此,將鐵路取車問題抽象成帶權(quán)有向圖的最小權(quán)重路徑求解問題,節(jié)點(diǎn)間弧的權(quán)重可動(dòng)態(tài)變化。城市可看作股道,與傳統(tǒng)蟻群算法實(shí)現(xiàn)不同,城市i可能等于城市j,即調(diào)機(jī)可以重復(fù)經(jīng)過同一個(gè)股道。
在蟻群算法中,每個(gè)螞蟻根據(jù)隨機(jī)遷移規(guī)則選擇股道,生成一個(gè)完整的取車路徑。股道間遷移規(guī)則可用公式 ⑼ 描述。
當(dāng)一次迭代完成,所有螞蟻都將所有股道上的車組全部取完,并找到一條完整路徑后,需要更新路徑上的信息素,更新公式為
式中:t表示第t次迭代,每次迭代生成全部螞蟻的路徑;ρ為信息素蒸發(fā)系數(shù),0 <ρ< 1 ;τij(t)為第t次迭代節(jié)點(diǎn)i到節(jié)點(diǎn)j之間路徑上的信息素濃度;u表示螞蟻的數(shù)量;表示第r個(gè)螞蟻在弧ij上留下的信息素,其中θ為信息素增加強(qiáng)度系數(shù),當(dāng)螞蟻r未經(jīng)過弧ij時(shí),為0;Disr表示第r個(gè)螞蟻完成全部取車任務(wù)的總走行距離。
公式 ⑽ 中,當(dāng)出現(xiàn)車組實(shí)際到達(dá)時(shí)間超出車組最晚到達(dá)時(shí)間時(shí),有
式中:DP為晚點(diǎn)懲罰系數(shù)。
選取我院不良事件上報(bào)系統(tǒng)中2013年1月—2016年12月發(fā)生的跌倒墜床事件35例,其中,有陪護(hù)23例,無陪護(hù)12例;其中,男11例,女24例,年齡56~97歲,其中60歲以下6例,61~69歲有7例,70~79歲有10例,80~89歲有9例,90歲以上3例;08:00 AM—07:59 PM跌倒墜床16人,08:00PM—07:59AM跌倒墜床19人;生活自理能力評(píng)分(ADL)均在50~60分之間,其中≤54分12例,≥55分23例;發(fā)生在衛(wèi)生間6例,走廊4例,病室25例?;颊咦晕艺疹櫮芰Γ耗茏岳?0人,部分自理16例,不能自理9例。
車組實(shí)際到達(dá)目標(biāo)站場(chǎng)的時(shí)間算法如圖2所示。
圖2 車組實(shí)際到達(dá)目標(biāo)站場(chǎng)的時(shí)間算法Fig.2 Algorithm of arrival time to destination yard of wagon group
取車最優(yōu)路徑求解算法函數(shù)結(jié)構(gòu)如圖3所示。首先,初始化信息素,然后進(jìn)入循環(huán)。每次迭代都先將所有螞蟻隨機(jī)放置在股道上,然后循環(huán)處理每一個(gè)螞蟻,為其找到完整的取車路徑。路徑搜索過程與傳統(tǒng)蟻群算法不同,傳統(tǒng)算法城市數(shù)量固定,弧數(shù)量固定,可以確定循環(huán)次數(shù),通常用For循環(huán)實(shí)現(xiàn)[11-13],而取車最優(yōu)路徑問題求解中,每個(gè)螞蟻經(jīng)過股道的數(shù)量可變,因而用圖2中第6行所示的While循環(huán)實(shí)現(xiàn),循環(huán)結(jié)束條件是所有股道上車組全部取完。循環(huán)處理完所有螞蟻后,計(jì)算并將上一次迭代中的最優(yōu)路徑賦值給第一個(gè)螞蟻。然后,按信息素更新規(guī)則更新信息素,進(jìn)入下一次迭代。當(dāng)找到滿意解或者達(dá)到最大迭代次數(shù)后,循環(huán)結(jié)束。
某編組站樹枝形鐵路站場(chǎng)線路如圖1所示。圖1中,g1至g8代表8個(gè)股道,d0代表站場(chǎng)入口信號(hào)機(jī),d1至d8代表各股道入口信號(hào)機(jī),w1至w7為道岔的岔心編號(hào),c為目標(biāo)站場(chǎng)。調(diào)機(jī)初始停于d0外側(cè),車列最大長度限制l= 600 m。假設(shè)車輛長度全為均值15 m時(shí),車列最大車輛數(shù)量為40。股道入口信號(hào)機(jī)間距離如表1所示;股道入口信號(hào)機(jī)與站場(chǎng)入口信號(hào)機(jī)間距離如表2所示。本站場(chǎng)入口信號(hào)機(jī)至取車目標(biāo)站場(chǎng)入口信號(hào)機(jī)距離d= 2 000 m,調(diào)機(jī)速度v= 3 m/s。
圖3 改進(jìn)蟻群算法結(jié)構(gòu)Fig.3 Structure of improved ACA
表1 股道入口信號(hào)機(jī)間距離 mTab.1 Distance between track entrance signals
表2 股道入口信號(hào)機(jī)與站場(chǎng)入口信號(hào)機(jī)間距離 mTab.2 Distance between track entrance signal and shunting yard entrance signal
當(dāng)股道g1,g5,g8停有車組時(shí),P= {g1,g5,g8}。車組停放位置描述如表3所示。在一臺(tái)中央處理器為i7-3630Q 2.4 GHz,內(nèi)存12 GB的計(jì)算機(jī)上求解。蟻群算法信息素的重要度α= 0.7,啟發(fā)因子的重要度β= 0.7,信息素蒸發(fā)系數(shù)ρ= 0.9,信息素增加強(qiáng)度系數(shù)θ= 0.1,最大迭代次數(shù)設(shè)為1 000,晚點(diǎn)到達(dá)懲罰系數(shù)DP為20 000 m。蟻群算法迭代10次后可收斂到最優(yōu)解,求得次優(yōu)路徑為“g8—g5—g1—c—g1—c”,次優(yōu)走行距離為9 170 m,最優(yōu)路徑為“g1—g8—c—g5—c”,最短走行距離為9 130 m,無晚點(diǎn),與利用深度優(yōu)先算法求解得到的結(jié)果一致。
表3 車組停放位置描述Tab.3 Description of wagon group parking position
為了驗(yàn)證取車最優(yōu)路徑求解蟻群算法執(zhí)行性能和結(jié)果正確性,利用相同站場(chǎng)對(duì)不同股道停車情況進(jìn)行計(jì)算,將計(jì)算時(shí)間和結(jié)果與深度優(yōu)先算法進(jìn)行對(duì)比。車組停放數(shù)量描述如表4所示。
表4 車組停放數(shù)量描述Tab.4 Description of wagon group parking number
P1至P6代表6種停車情況,如P1代表股道g1,g2,g3上停有車組,6種停車情況具體如下。
P1= {g1,g2,g3}
P2= {g1,g2,g3,g4}
P3= {g1,g2,g3,g4,g5}
P4= {g1,g2,g3,g4,g5,g6}
P5= {g1,g2,g3,g4,g5,g6,g7}
P6= {g1,g2,g3,g4,g5,g6,g7,g8}
針對(duì)以上6種停車情況,不考慮最晚到達(dá)約束,分別利用深度優(yōu)先算法和蟻群算法進(jìn)行求解。蟻群算法相關(guān)參數(shù)取值為α= 0.7,β= 0.7,ρ= 0.9,θ= 0.1,最大迭代次數(shù)設(shè)為1 000,不設(shè)迭代提前停止條件,晚點(diǎn)到達(dá)懲罰系數(shù)DP為20 000 m。深度優(yōu)先算法通過遍歷所有路徑,求出的最短距離即為最優(yōu)解。
算例計(jì)算結(jié)果比較如表5所示。由表5可知,在全部6種停車情況下,蟻群算法求得的最短路徑與深度優(yōu)先算法求得的最短路徑相等,即為最優(yōu)解。隨著存車股道數(shù)量增加,深度優(yōu)先算法需要遍歷的路徑總量和計(jì)算時(shí)間快速增加,P5和P6的計(jì)算時(shí)間已經(jīng)達(dá)到92.545 s和3 350.608 s。
表5 算例計(jì)算結(jié)果比較Tab.5 Comparison of algorithm case calculation result
算法實(shí)際計(jì)算時(shí)間變化趨勢(shì)如圖4所示。圖4的橫坐標(biāo)代表不同存車股道集合,縱坐標(biāo)代表計(jì)算時(shí)間,虛線為深度優(yōu)先算法,實(shí)線為蟻群算法。由圖4可知,深度優(yōu)先算法的計(jì)算時(shí)間隨著存車股道數(shù)量的增長呈指數(shù)增長,蟻群算法計(jì)算時(shí)間隨著存車股道數(shù)量的增長呈線性增長,增幅基本不變。在6個(gè)股道停車的情況下,蟻群算法計(jì)算時(shí)間仍小于1 s。
分別對(duì)6種停車情況進(jìn)行100次求解,統(tǒng)計(jì)收斂到最優(yōu)解迭代次數(shù)的最小、最大和平均值。不同停車情況下最優(yōu)解迭代次數(shù)統(tǒng)計(jì)如表6所示。
由表6可知,每種情況最優(yōu)解迭代次數(shù)的最小值均為1次,最大值隨著存車股道數(shù)量的增加而不斷增加,但均可在100次迭代以后收斂到最優(yōu)解。實(shí)際應(yīng)用過程中,如將蟻群算法最大迭代次數(shù)設(shè)為1 000,則可保證大部分情況下在1 s以內(nèi)求出最優(yōu)解,計(jì)算結(jié)果可信,求解算法具備一定的實(shí)用性。
圖4 算法實(shí)際計(jì)算時(shí)間變化趨勢(shì)Fig.4 Variation trend of algorithm actual calculation time
表6 不同停車情況下最優(yōu)解迭代次數(shù)統(tǒng)計(jì) 次Tab.6 Statistics of iteration number of different wagon parking situation
(1)建立鐵路站場(chǎng)多次取車作業(yè)模型,對(duì)實(shí)際調(diào)車線路參數(shù)、牽出車組連掛車數(shù)動(dòng)態(tài)變化、調(diào)機(jī)走行模式等特征進(jìn)行描述,使模型更接近鐵路實(shí)際調(diào)車作業(yè)場(chǎng)景。
(2)當(dāng)存車股道規(guī)模加大,改進(jìn)蟻群算法較深度優(yōu)先算法在計(jì)算時(shí)間上存在明顯優(yōu)勢(shì),且實(shí)際上都可以在規(guī)定迭代次數(shù)內(nèi)獲得最優(yōu)解,能夠?yàn)殍F路站場(chǎng)取車計(jì)劃編制提供智能輔助決策,有效壓縮取車時(shí)間,加速車輛周轉(zhuǎn)。