教程——sumolympics
SUMOlympics
本教程針對不同的交通模式設置了比賽(集體 100 米沖刺)。您將學習如何在 netedit 中創建特殊車道和(非常簡單的)紅綠燈,使用不同的車輛類別來定義車輛類型,您將為不同類型創建流程。所有文件也可以在 <SUMO_HOME>/docs/tutorial/sumolympics 目錄中找到。
本教程是 PTV Group 設計的一個 VISSIM Scenario 的重構。
創造一個節點
并通過按 e 進入邊創建模式并單擊編輯區域中的兩個不同位置來創建一個新網絡并添加一條邊。更改為檢查模式(按 i)并單擊邊緣的起點(在您第一次單擊的位置)。現在在左側檢查器面板中標記為 pos 的文本字段中輸入 0,0(見圖)。對邊的端點執行相同操作,將其位置設置為 1000,0。現在將您的網絡保存在名稱 sumolypics.net.xml 下(按 Ctrl+Shift-S)。
現在我們還有很長的路要走,這將是我們比賽的舞臺。比賽的參與者將是公共汽車、有軌電車、自行車、客車和腳等交通工具。他們應該并排在不同的車道上行駛。因此,我們必須為每種模式添加通道。為此,請右鍵單擊邊緣并將鼠標懸停在上下文菜單中的“添加受限車道”上。這將向您展示創建專用車道的三種選擇:Sidewalk、Bikelane 和 Buslane。為每種類型添加一個車道。
要創建電車,我們通過單擊同一上下文菜單中的“復制車道”來添加新車道。對于那條車道,我們必須將允許的車輛類別限制為有軌電車。為此,首先取消選中工具欄中編輯模式下拉菜單右側的“選擇邊緣”框(模式仍應設置為“(i)檢查”)。然后單擊新創建的通道和檢查器面板中的“允許”按鈕。這將打開一個對話框,其中包含所有可能的車輛類別的復選框。取消選中除“rail_urban”之外的所有選項,然后單擊“接受”。現在編輯剩余車道的限額(目前所有車輛類別都允許)并將其保留給“乘客”類別(即乘用車)。
現在讓我們分割邊緣為競爭對手創建一個起點:右鍵單擊邊緣的某處,然后從上下文菜單中選擇“在此處分割邊緣”。然后單擊創建的節點(在 SUMO 術語中,這已經是一個“連接點”)。在 pos 字段中將其 x 坐標設置為 900,將其 y 坐標設置為 0,就像您在上面創建邊緣時所做的那樣。實際上,我們為參賽者創建了一條 100 米的跑道,并為每種競爭模式設置了 900 米的保持區域。現在再次選中復選框“選擇邊緣”并將兩條邊緣重命名為“beg”和“end”(在檢查器面板中)。保存您的網絡 (Ctrl-S)。
定義競爭車輛類型
作為下一步,我們定義了競爭車輛類型。打開一個名為 sumolympics.rou.xml 的新文件并插入以下車輛類型定義:
<routes><vType id="pkw" length="5" maxSpeed="50" accel="2.6" decel="4.5" sigma="0.2" speedDev="0.2" vClass="passenger"/><vType id="bus" length="15" maxSpeed="30" accel="1.2" decel="2.5" sigma="0.1" speedDev="0.1" vClass="bus"/><vType id="tram" length="40" maxSpeed="13" accel="0.8" decel="0.5" sigma="0.1" speedDev="0.1" vClass="rail_urban"/><vType id="bike" length="1.8" width="0.8" maxSpeed="7.5" accel="0.8" decel="1.5" sigma="0.5" speedDev="0.5" vClass="bicycle"/> </routes>有關這些定義的詳細信息,請查看車輛類型屬性描述。
對于每種車輛類型,我們通過在 vType 定義下方(在 元素中!)添加以下 <flow …/> 元素來安排和定位運送 100 人的車輛:
...<flow id="pkw" type="pkw" from="beg" to="end" begin="0" end="0" number="66" departPos="last"/><flow id="bus" type="bus" from="beg" to="end" begin="0" end="0" number="5" departPos="last"/><flow id="tram" type="tram" from="beg" to="end" begin="0" end="0" number="2" departPos="last"/><flow id="bike" type="bike" from="beg" to="end" begin="0" end="0" number="100" departPos="last"/>...請注意,這假設平均車輛占用率為 1.5。[1]有關流屬性含義的詳細信息,請參閱流定義部分。
要開始模擬,請創建一個 SUMO 配置文件(將其命名為 sumolympics.sumocfg):
<configuration><input><net-file value="sumolympics.net.xml"/><route-files value="sumolympics.rou.xml"/></input><processing><lateral-resolution value="1." /></processing> </configuration>在這里,我們給出處理參數橫向分辨率,其值對應于以米為單位的子車道寬度,以實現騎車人利用整個車道寬度相互超車的更真實的行為(參見子車道模型和自行車模擬)。通過雙擊配置文件 sumolympics.sumocfg (Windows) 或從終端運行 sumo-gui -c sumolympics.sumocfg 開始模擬。將步進延遲調整為 100 ms,然后按下運行按鈕 ()。
定義開始信號(紅綠燈)和行人
公平完整的比賽還有兩件事要做:1)所有參賽者都應該在起跑線前自由定位(騎自行車的人排成一排,盡管他們可以通過多分組來獲得更好的結果密集使用整個車道寬度)2)我們希望將行人包括在比賽中。
首先我們用netedit在邊“beg”和“end”的交界處創建一個紅綠燈:按t進入紅綠燈編輯模式。單擊連接,然后單擊左側面板中的“創建 TLS”。下面,在標簽階段下,為第一階段鍵入“rrrrr”(“r”表示紅色)并將其持續時間設置為 100(秒)。這將為騎自行車的人提供足夠的時間更密集地分組。對于第二階段,輸入“GGGGG”(是的,“G”代表綠色)并將其持續時間設置為 1000(即直到模擬運行結束)。現在再次運行模擬,看看自行車跑得比汽車快。看?我們都應該更頻繁地使用我們的自行車!
如果您在消息窗口中注意到警告(例如“警告:tlLogic ‘gneJ2’ 中缺少黃色階段,切換到階段 0 時為 tl-index 0 編程’0’”),請不要擔心。 SUMO 會定期檢查 tls-phases 的基本一致性,如果您有相交的流,則缺少黃色階段可能會導致崩潰。但是,這是一種特殊情況,顯然我們不需要關心這一點。如果您想了解有關交通燈控制的更多信息,請參閱 TraCI-Tutorials TraCIpedCrossing 和 TraCI4Traffic_Lights 或交通燈的主要部分。
你覺得行人會慢還是快?讓我們來看看。您已經可以猜到,這種方法對行人來說有點不同。這是因為它們不是車輛類(不再是),而是構成了一個自己的類,稱為“人”。例如,目前還沒有類似于車輛流的人流這樣的元素(盡管它即將到來,請參閱#1515)。因此,我們將編寫一個 python 腳本來生成一個路由文件 sumolympic_walking.rou.xml。 (請注意,在 <SUMO_HOME>/tools 文件夾中有一個名為 walkerFlow.py 的小腳本,如果您想做更復雜的事情,它會很有用。)
這是簡單的腳本(將文件稱為 makeSumolympicWalkers.py 之類的文件):
#!/usr/bin/python #parameters outfile = "sumolympicWalks.rou.xml" startEdge = "beg" endEdge = "end" departTime = 0. #time of departure departPos = -30. #position of departure arrivalPos = 100. #position of arrival numberTrips = 100 #number of persons walking #generate XML xml_string = "<routes>\n" for i in range(numberTrips):xml_string += ' <person depart="%f" id="p%d" departPos="%f" >\n' % (departTime, i, departPos)xml_string += ' <walk edges="%s %s" arrivalPos="%f"/>\n' % (startEdge, endEdge, arrivalPos)xml_string += ' </person>\n' xml_string += "</routes>\n" with open(outfile, "w") as f:f.write(xml_string)通過雙擊(或從命令行使用 python makeSumolympicWalkers.py)執行腳本。如果您的計算機上沒有 python,請在執行任何其他操作之前安裝它! (從這里獲取)我們必須將生成的路由文件 sumolympicWalks.rou.xml 包含在配置文件 sumolympic.sumocfg 中,讓模擬知道它們。只需用逗號分隔即可包含多個路由文件。因此,修改我們配置的 <route-files …/>-entry 看起來像這樣(確保文件名之間沒有空格!):
...<route-files value="sumolympics.rou.xml,sumolympicWalks.rou.xml"/>...總結
以上是生活随笔為你收集整理的教程——sumolympics的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis基础一_常用指令
- 下一篇: 滴滴Booster移动APP质量优化框架