第三章 自動公路系統變換車道模式之構建
3.4 變換車道模式構建
3.4.2 變換車道模式
一、縱向控制(longitudinal control logic)
由於鄰近車道的車流狀況是影響變換車道成功的重大因素,所以本研究考量
在這裡一提的是圖 3-6 為說明變換車道之概念。若 AC 車輛鄰近車道無車輛,
行為並不會在 AC 車輛欲變換車道時來作最大加減速的動作,所以 MC 車輛的車
左式中第一個部分為原本與鄰近車道前車車間距;第二部分為變換過程中與
車輛速率比鄰近車道前車快,比鄰近車道後車慢,所以安全的車間距在變換車道
二、橫向控制(lateral control logic)
自動控制車輛之橫向控制,主要來自於變換車道時作用於 AC 車輛之加速度
3.4.4 加速度調整
的反應時間便前進了 8.33 公尺。若以高速公路行駛速率下限為時速 60km/h 前進,
則反應時間內前進了約 12.5 公尺。
回顧相關文獻,李月仙(1989)[19]修正提出的二維座標車流模擬模式,係利用 車輛行進之動態車長來控制車輛間隔距離,動態車長中便考量跟車駕駛者的反應 時間,因此,考慮 AC 車輛變換車道時鄰後前車為人為駕駛的反應時間,是變換 車道時潛在的安全需求。其文中所提通式如下:
( ) t
PLL=PLL TYPE + ×K V 其中,PLL:前車之動態車長 PLL TYPE( ):前車之靜態車長 K :跟車駕駛者反應時間 Vt:跟隨車之車速
3.5.2 人為心理因素
人為因素會導致駕駛行為的不同,在微觀車流模擬器 Paramics 裡也有描述駕 駛者的決定參數[12],分別為 Aggression 和 Awareness,此二項參數主要影響模擬 駕駛人的行為。車輛行為模式包括平均車間距(mean headway)、平均反應時間 (mean reaction time)、跟車模式(car-following model)以及變換車道模式(lane- changing model),這些模式參數值可藉由相關功能表加以控制。而在本研究裡以 安全係數ϕ 來決定安全車間距,若駕駛者較為瘋狂,則ϕ 值可能較小,故其認為 之安全車間距便較小;若駕駛者較為謹慎,則ϕ 值會較大,所需之安全車間距。
但實際的ϕ 值如何決定,尚須有文獻支持或用以機率分配來近似ϕ 值,本研究並 不將ϕ 值納入模擬實驗中。
但一般而言,AC 車輛的變換車道對於其鄰近車道之車輛會造成影響,若當 鄰近車道為人為駕駛,後車駕駛人察覺到 AC 車輛匯入的動作,會採取煞車減速 的動作;若鄰近車道後車為已變換完成之 AC 車輛,則 AC 車輛與 AC 車輛之間 保持最小的可接受車間距,並不會有任何影響。
故 AC 可接受之變換後車間距只會因此而變大,但目標車輛的車間距變大,
會壓縮目標車輛之下一輛 AC 車輛,所以針對每一輛 AC 車輛,都以鄰近車道車 輛最大的減速度來考慮可接受之車間距為最安全的方式,但考慮 AC 變換車道之 效率的話,此方式則面臨需要權衡。
3.6 強制煞車後的變換車道
當車輛無法在跟車緩衝區尋求到變換車道的機會,在進入強制煞車區之後,
車輛便強制煞車停在事故上游,但煞停之後仍須尋求變換車道的機會才不至於停 等在事故上游,造成停等車輛一直增加。然而煞停後的變換車道,面臨著更大的 挑戰,需考慮無鄰近車道前車、鄰近車道後車車速快等特性,包括 AC 車輛速率 為零、與鄰後車相對速率大、轉向角大、變換車道所需時間長,所需之變換車道 條件變的更加嚴苛。
第四章 程式模擬系統之發展
本章將使用程式語言 Turbo C 來撰寫第三章所構建之變換車道之控制邏輯,
所使用之版本為 Turbo C Version 2.01;在本章中也將建立變換車道的評估準則,
且欲瞭解鄰近車道車流量對變換車道成功率的關係。
4.1 程式撰寫
在程式方面,將建立一段高速公路三車道之路段,其中內線之兩車道分別用 來當作自動控制車道及其鄰近車道。主要係以主程式 main( )控制模式整體的運作 流程,在使用者輸入資料完成後,進行產生路段車輛副程式,分為產生 AC 車輛 P_laneGenerator( )跟產生 MC 車輛 Q_laneGenerator( )兩種,而兩個車輛產生的方 式做不同的產生控制,於下將有較詳細的說明。
系統模擬時間採用時階(time step)的方式,由於時間為連續的,若以一秒為單 位容易造成誤差,故以此方式將系統時間改成時階的方式,至於每一時階的長度 已經變數化,本模擬程式訂為 0.1 秒,若需要變更只需在程式最前面之 TIMESLICE 的值進行變動即可。
在模擬時間內進行多個副程式:drawRoad( ) 副函式為繪製高速公路車道以 及事故位置;drawlane( ) 為繪製在自動控制車道上移動的 AC 車輛及在一般車道 上移動的車輛,以及從自動車道變換成功之 AC 車輛都會繪製;P_laneTransition ( ) 為設定在自動控制車道上的車輛下一秒的移動,其間還會進行變換車道及搜尋 search _insert( )、check_trans( )、car_can_reach( )等等之副函式;Q_laneTransition ( ) 為設定在一般車道上車輛下一秒的移動,並且會做跟車行為副函式 cal_safe( );
在模擬時間結束後,藉由資料輸出副函式 showpq( )來輸出模擬資料。主程式 模擬流程圖如圖 4-1 所示。
程式中以建立資料結構 struct 分別代表所有的車輛資料,struct 分別包含了時 間、車輛種類、X 軸距離、Y 軸距離、速率、加速度、與前車車間距、與後車車 間距、三個門檻值,另外還建立有兩個指標變數(pointer),以鏈串列(link-list)的方 式來實作,分別針對兩個車道內之車輛進行串聯的動作,其優點為每輛車隨時以 指標變數指向其前車及後車,若要進行變換車道,則原本的車輛只要切斷其前後 指標,切換到鄰近車道之後,再建立起指標,車輛便可以重新排列。上述之 X 軸 距離為車輛前進行駛的距離,亦可稱為縱向距離;Y 軸距離表示車輛所位於之車 道,亦可稱為橫向距離。下列將說明各個主要函式之詳細內容:
圖 4-1 主程式 main( )流程圖 main( )
輸入資料
模擬時間開始 simu_time=0
車輛移動屬性 P_ laneTransition ( ) Q_ laneTransition ( )
END 否 是 模擬時間結束
資料輸出 showpq( ) 繪製道路及車輛
drawRoad( ) drawplan( ) 產生路段車輛 P_laneGenerator( ) Q_laneGenerator( )
1. Input
主要負責資料輸入,其設定主要是放入主程式 main( )中,參數修改部分包括 車隊大小設定、車隊初始速率設定、以及鄰近車道車流量。參數修改部分主要是 為了整合模擬使用者與程式可讀性之間的關係,將常用的 kph 單位轉換成 mps 單 位,以及將每小時每車道之車流量轉換成程式可讀之每分鐘車流。
本研究設定三個重要參數:車隊大小設定為欲瞭解車隊的大小對變換車道的 影響,模擬的大小範圍在每個車隊 2 至 10 輛之間;車隊初始速率設定為欲瞭解 車輛在不同的車速下對變換車道決策的影響,尤其事故影響下車行速率可能不 高,以及車輛在高速行駛下遇到事故的影響,故模擬初始速率的大小範圍在時速 40 km/hr 至 120 km/hr;鄰近車道車流量為欲瞭解鄰近車道車流狀況對變換車道決 策的影響,模擬範圍為每小時每車道 100 輛至每小時每車道 1800 輛,4.2 節將有 更詳細之說明。
2. P_laneGenerator( )
AC 車輛的產生以鏈串列(link list)來實作,鏈串列中有數個 node (車輛),每 一台車輛之間以指標連接,如果車輛需要改變車道,只要將指標指到的地方稍作 修改就可以達到變換車道的目的,而且每兩輛 MC 車輛之間可以插入多輛的 AC 台車。在 P_laneGenerator( )有個 next_car_time 變數,其功能猶如車時間距
(headway),我們藉由 AC 車輛需要保持的初始車隊車間距,除以初始設定的車隊 初速,來計算 AC 車輛產生的車時間距,其目的就是要顯示出自動公路系統乃是 以車隊的形式接近事故地點。程式中我們以車輛要保持 20 公尺的車間距(不含車 長,若計算車長,則車頭與車尾之車間距約為 16 公尺),故設定 next_car_time 為 AC 車輛產生的 headway。
另外,會有個 hittime( )的副程式,其功能為搜尋系統時間跟 next_car_time 一 樣的話,就會產生一輛 AC 車輛,而 AC 車輛的初始設定都完全一樣。接著會對 每台車作出初始設定:如初速、車輛種類、速率、加速度,並計算這台車的三個 門檻值(d, f, b)。
3. Q_laneGenerator( )
MC 車輛的產生方式與 P_laneGenerator( )的方式雷同,唯車輛產生的方式不 是為一秒產生一台 MC 車輛,而是 next_car_time 令它為 normal( )函式所回傳之 值,normal( )函式為常態分配,以鄰近車道車流產生率以每分鐘平均產生多少車,
轉換成產生車輛所需之秒數平均值,再經由常態分配來作為車間時距(headway)。
假設車輛初始流量符合卜瓦松分配 (若λ夠大,一般是以λ≥5,則分配可以用 normal 分配來近似),平均每分鐘釋放λ台車,因此將 60/λ作為 Normal 分配的平 均值(mean),變異數為 1,即以 Normal(60/λ,1)來釋放車輛。
4. drawRoad( )、drawlane( ):
此二函式為繪圖函式,以 Turbo C 內建之<graphics.h>函式庫,並建立副函 式 drawRoad( )繪製出三車道之直線,以斜線當作已知之事故地點,而繪製車輛的 部分則由 drawlane( )副程式來執行。由於螢幕只能容納 640×480 個像數,以一個 像數代表一公尺,故若要能夠在現有之電腦設備下觀看到整個模擬的效果,則模 擬之路段只能有 640 公尺。但若想要表達更長的車道長度,只要經過程式碼將比 例縮放(rescale),將現有長度 640 個像數來表示,縮放比例之後,車輛所行進的 距離等都不會變,只有在螢幕顯示成圖檔的時候會有視覺上的大小不同而已。
車輛的部分,為了區別自動車輛與手動車輛,故以顏色來區分,亮藍色為 AC 車輛,紅色則為 MC 車輛。特別一提的是,如果程式中判斷 AC 車輛可以變 換車道,則會顯示成紅色,並且執行加速或減速,在 TRANS_SECONDS 時間到 之後就會變換至鄰近車道,但還是會顯示原來 AC 車輛之亮藍色。
5. P_laneTransition ( )
此函式最主要為控制及計算在自動車道上行駛的車輛,自動車道上僅有 AC 車輛,故 AC 車輛在產生後便依照自己的三個門檻值(d,f,b)分別做其區域內該有之 行為,在車輛未進入車隊拆解區,則保持等速;進入車隊拆解區後,進行 cal_safe( ) 函式保持車距;進入跟車緩衝區之後,進行減速到與鄰近車道平均車速接近的 xxx
此函式最主要為控制及計算在自動車道上行駛的車輛,自動車道上僅有 AC 車輛,故 AC 車輛在產生後便依照自己的三個門檻值(d,f,b)分別做其區域內該有之 行為,在車輛未進入車隊拆解區,則保持等速;進入車隊拆解區後,進行 cal_safe( ) 函式保持車距;進入跟車緩衝區之後,進行減速到與鄰近車道平均車速接近的 xxx