亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

并行微觀交通仿真中非阻塞式的車輛移動(dòng)方法

文檔序號(hào):8457398閱讀:500來(lái)源:國(guó)知局
并行微觀交通仿真中非阻塞式的車輛移動(dòng)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及系統(tǒng)仿真領(lǐng)域、微觀交通仿真領(lǐng)域,尤其涉及一種并行環(huán)境下的微觀交通仿真中非阻塞式的車輛移動(dòng)方法。
【背景技術(shù)】
[0002]交通問(wèn)題一直是一個(gè)嚴(yán)重的社會(huì)問(wèn)題,制約著城市的發(fā)展。由于道路交通系統(tǒng)是一個(gè)復(fù)雜的巨系統(tǒng),單純的理論研宄或?qū)嶒?yàn)方法都不能很好的勝任,而基于計(jì)算機(jī)仿真技術(shù)的微觀交通仿真系統(tǒng)則是分析和解決交通問(wèn)題的有效手段。由于微觀交通仿真系統(tǒng)需要模擬每一輛車的行為,因此對(duì)計(jì)算機(jī)的性能要求較高,傳統(tǒng)的微觀交通仿真系統(tǒng)不能仿真大范圍的交通系統(tǒng)。
[0003]目前已有的并行微觀交通仿真方法分兩類,一類是創(chuàng)建多個(gè)線程,每個(gè)線程完成特定的工作,但線程是非對(duì)稱的,也就是每個(gè)線程負(fù)責(zé)不同的任務(wù),因此難以平衡線程之間的負(fù)載,也不能使線程數(shù)量根據(jù)CPU核心數(shù)靈活增減;另一類并行仿真方法線程是對(duì)等的,但是在控制線程相互作用時(shí)使用了鎖,即阻塞式的同步方案。無(wú)論哪種方案,都還沒(méi)有達(dá)到硬件性能的極限,影響微觀仿真系統(tǒng)性能的進(jìn)一步提升。

【發(fā)明內(nèi)容】

[0004]本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)的不足,提供一種并行微觀交通仿真中非阻塞式的車輛移動(dòng)方法。
[0005]本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的:一種并行微觀交通仿真中非阻塞式的車輛移動(dòng)方法,包括以下步驟:
[0006](I)仿真初始化階段,包括以下子步驟:
[0007](1.1)為每一個(gè)路段中的每一條車道創(chuàng)建一個(gè)車輛管理裝置(以下簡(jiǎn)稱LVC);
[0008](1.2)將每一個(gè)路段映射到一個(gè)線程;
[0009](2)仿真進(jìn)行階段,若車輛僅在路段內(nèi)部移動(dòng),則不涉及線程間的交互,否則,若車輛從上游路段的車道進(jìn)入下游路段中的車道,由于不同路段分屬于不同的線程,因此會(huì)產(chǎn)生并發(fā)和競(jìng)爭(zhēng),此時(shí)需要執(zhí)行以下操作:
[0010](2.1)上游路段所處的線程將車輛從當(dāng)前車道的LVC中除去,并將車輛標(biāo)記為游離狀態(tài),表示車輛不再屬于任何路段;
[0011](2.2)上游路段所處的線程將車輛提交到下游車道的緩沖區(qū)中;
[0012](2.3)下游路段的線程從緩沖區(qū)中提取車輛并把車輛加入到下游車道的LVC中,從而在并發(fā)環(huán)境下高性能地實(shí)現(xiàn)車輛的跨路段移動(dòng)。
[0013]進(jìn)一步地,所述步驟1.1中,每個(gè)LVC與每個(gè)路段中的每條車道是一一對(duì)應(yīng)關(guān)系,用于管理車道上的車輛,LVC由兩部分組成:一個(gè)緩沖區(qū),最多容納一個(gè)車輛對(duì)象的指針,用于保存剛剛從車道上游新進(jìn)入的車輛;一個(gè)車輛容器,用于保存車道上的車輛,車輛按位置的先后順序排序。
[0014]進(jìn)一步地,所述步驟1.2具體為:首先確定線程數(shù)量,用戶可通過(guò)參數(shù)指定線程數(shù),若未指定,則默認(rèn)線程數(shù)量即為CPU核心數(shù)量,假設(shè)線程數(shù)量為n,則創(chuàng)建η個(gè)線程,存放在線程池之中;接下來(lái)把整個(gè)路網(wǎng)包含的所有路段分為η組,每組固定分配給一個(gè)線程,組內(nèi)所有路段中的車輛狀態(tài)更新由該線程驅(qū)動(dòng);路段分組方法沒(méi)有特殊要求,只需要保證每個(gè)組的路段數(shù)盡可能相等,以使每個(gè)線程負(fù)載均衡。
[0015]進(jìn)一步地,所述步驟2.2中,所述下游路段車道對(duì)應(yīng)的緩沖區(qū)屬于臨界資源,上游線程將車輛提交到該緩沖區(qū)使用的是一種基于沖突檢測(cè)的樂(lè)觀并發(fā)策略,也就是非阻塞式同步(Non-Blocking Synchronizat1n)方案,不使用鎖,具體為:利用CAS指令,上游線程將車輛與緩沖區(qū)中的值進(jìn)行一次原子交換,若交換得到空值,則表示原緩沖區(qū)為空,表示車輛已經(jīng)成功置入緩沖區(qū)中;否則上游線程交換得到另一輛車,說(shuō)明緩沖區(qū)中已有其它車輛,表示車輛發(fā)生碰撞,流程終止;所述CAS(compare-and-swap)指令為硬件級(jí)的原子指令,CAS指令包含3個(gè)操作數(shù):內(nèi)存地址V,舊的預(yù)期值A(chǔ),新值B,當(dāng)且僅當(dāng)V中原有的值和A值相等時(shí),處理器用B值更新V中存儲(chǔ)的值,否則就不執(zhí)行更新,指令的返回值視硬件的不同或者返回一個(gè)布爾值表示是否更新成功,或者返回V中的舊值(不是新值B),上述整個(gè)操作是原子性的。
[0016]進(jìn)一步地,所述步驟2.3中,下游路段所處的線程從緩沖區(qū)中獲取車輛同樣使用CAS指令,具體為:下游線程將空值與緩存區(qū)中的值進(jìn)行一次原子交換,交換后下游線程得到原緩沖區(qū)中的值(車輛),而緩沖區(qū)被置空;若下游線程交換后仍為空值,說(shuō)明緩存區(qū)中原本就沒(méi)有車,此時(shí)終止流程;否則,下游線程得到從上游線程駛?cè)氲能囕v,此時(shí)應(yīng)將車輛加入到下游車道的LVC的車輛容器中,并更新車輛的位置狀態(tài)為隸屬于下游車道,同時(shí)進(jìn)行安全性檢查;安全性檢查指的是判斷車輛位置是否與前面車輛重疊,若重疊表示車輛發(fā)生碰撞,此時(shí)終止流程。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:1)線程之間是對(duì)稱的,平等的,可以任意增加或減少線程數(shù)量,可以完全利用不同核心數(shù)量的CPU ;2)顯著提高了車輛移動(dòng)的性能,從而提高了微觀交通仿真的整體性能,利用硬件級(jí)的原子指令,完全避免了鎖的使用,消除了線程之間的同步開(kāi)銷,在普通4核心電腦上支持超過(guò)100萬(wàn)臺(tái)車輛的仿真,滿足城市規(guī)模交通的實(shí)時(shí)仿真。
【附圖說(shuō)明】
[0018]圖1是車道上車輛管理裝置(LVC)的結(jié)構(gòu)示意圖;
[0019]圖2是上游車道的線程將車輛提交給下游車道的流程圖;
[0020]圖3是下游車道的線程接收車輛的流程圖。
【具體實(shí)施方式】
[0021]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
[0022]本發(fā)明一種并行微觀交通仿真中非阻塞式的車輛移動(dòng)方法,包含以下步驟:
[0023](I)仿真初始化階段,包括以下子步驟:
[0024](1.1)為每一個(gè)路段中的每一條車道創(chuàng)建一個(gè)車輛管理裝置(LVC)。
[0025]車輛管理裝置(以下簡(jiǎn)稱LVC)用于管理車道上的車輛,其結(jié)構(gòu)如圖1所示,由兩部分組成:一個(gè)緩沖區(qū),最多容納一個(gè)車輛對(duì)象的指針,用于保存剛剛從車道上游新進(jìn)入的車輛;一個(gè)車輛容器,用于保存車道上的車輛,車輛按位置的先后順序排序。仿真初始化階段需要為每個(gè)路段中的每條車道創(chuàng)建一個(gè)LVC,LVC與車道是一一對(duì)應(yīng)關(guān)系。
[0026](1.2)將每一個(gè)路段映射到一個(gè)線程。
[0027]該步驟首先要確定線程數(shù)量,用戶可通過(guò)參數(shù)指定線程數(shù),若未指定,則默認(rèn)線程數(shù)量即為CPU核心數(shù)量,假設(shè)線程數(shù)量為n,則創(chuàng)建η個(gè)線程,存放在線程池之中,以供后續(xù)使用。接下來(lái)把整個(gè)路網(wǎng)包含的所有路段分為η組,每組固定分配給一個(gè)線程,組內(nèi)所有路段中的車輛狀態(tài)更新由該線程驅(qū)動(dòng)
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1