image.png
本章介紹如何設(shè)置和運(yùn)行MATSim,并描述構(gòu)建基本場(chǎng)景的要求。更新信息可從
http://matsim.org,尤其是
http://matsim.org/docs。
將源代碼導(dǎo)入不同的計(jì)算環(huán)境并通過API(應(yīng)用程序編程接口)擴(kuò)展MATSim在第二部分第45章中進(jìn)行了描述。2.1 設(shè)置和運(yùn)行MATSim
2.1.1 設(shè)置MATSim
要運(yùn)行MATSim,必須安裝符合相應(yīng)MATSim版本的java SE(Java標(biāo)準(zhǔn)版)。此時(shí),這是JavaSE11。
GitHub上的MATSim示例項(xiàng)目您可以在GitHub上派生或克隆一個(gè)所謂的示例項(xiàng)目,請(qǐng)參見
https://github.com/matsim-org/matsim-example-project。
這個(gè)版本的目標(biāo)是那些精通IDE(集成開發(fā)環(huán)境)(例如Eclipse、IntelliJ)和Java的程序員,以及那些希望使用MATSim編程的程序員。該方法將自動(dòng)下載MATSim(作為所謂的Maven articfact),允許您瀏覽源代碼,并讓您隨時(shí)了解最新版本或快照。它不允許您修改現(xiàn)有的MATSim代碼,在大多數(shù)情況下,這也是不必要的:在這種情況下,您最好與開發(fā)人員聯(lián)系,我們將嘗試幫助或?qū)崿F(xiàn)缺少的擴(kuò)展點(diǎn)。
GitHub上所謂的代碼示例項(xiàng)目中提供了一些Java程序,如第3.1.1.3節(jié)所述,請(qǐng)參見
https://github.com/matsim-org/matsim-code-examples。
Standalone
“單機(jī)版”面向那些對(duì)IDE(例如Eclipse)和Java不熟練的用戶,希望通過編輯輸入文件來使用MATSim,包括 config.xml. 提供了一個(gè)基本的GUI(圖形用戶界面)。
您將需要正式的MATSim發(fā)行版,一個(gè)zip文件(通常用版本號(hào)MATSim指定)-yy.yy.yy年.zip),包括運(yùn)行它所需的所有內(nèi)容。它可以下載以下相應(yīng)的鏈接下
http://matsim.org/downloads。在MATSim目錄樹中解壓縮結(jié)果。
Maven
可以將MATSim用作Maven插件;發(fā)布版本和快照都可用??稍谙铝芯W(wǎng)站,查詢更多信息:
http://matsim.org/downloads。同樣,GitHub上所謂的代碼示例項(xiàng)目中提供了一些Java程序,如第3.1.1.3節(jié)所述,請(qǐng)參見
https://github.com/matsim-org/matsim-code-examples。
瀏覽源代碼
如果您只想查看代碼而不下載和安裝zip文件:在GitHub上,MATSim目錄樹的根位于
https://github.com/matsim-org/matsim-libs。 或者,如果您已經(jīng)用Maven安裝了MATSim示例項(xiàng)目,那么MATSim源代碼將自動(dòng)在IDE中可用。
其他選擇
http://matsim.org/downloads 描述其他選項(xiàng),包括如何獲取較舊或較新版本或如何添加擴(kuò)展。
2.1.2 啟動(dòng)MATSim
從版本0.8.x開始,可以通過雙擊MATSim JAR(Java存檔)文件來啟動(dòng)MATSim。在IDE(例如Eclipse)中,可以通過運(yùn)行Gui類(org.matsim.run.gui)。打開GUI并運(yùn)行MATSim,
配置——通過選擇“choose”按鈕指示的配置文件進(jìn)行配置
開始——點(diǎn)擊“Start MATSim”
如果輸出目錄(如配置文件中定義的,見下文)已經(jīng)存在,則需要將其刪除,然后才能成功啟動(dòng)運(yùn)行;可通過點(diǎn)擊“Delete”按鈕進(jìn)行刪除。
運(yùn)行成功完成后,可以點(diǎn)擊“open”按鈕在文件瀏覽器中打開輸出目錄。輸出文件,例如output_network.xml.gz 和 output_events.xml.gz,可通過將文件拖放進(jìn) VIA 可視化軟件,并回放模擬交通。
2.1.3 配置MATSim
MATSim在配置文件中配置。它在用戶和MATSim之間建立連接,并包含影響模擬行為的設(shè)置列表。
所有配置參數(shù)都是參數(shù)名和參數(shù)值的簡(jiǎn)單對(duì)應(yīng)。參數(shù)被分為多個(gè)邏輯組;一個(gè)組具有與控制器相關(guān)的設(shè)置,如迭代次數(shù),另一個(gè)組具有mobsim的設(shè)置,如mobsim的結(jié)束時(shí)間。如第3章所示,許多MATSim模塊可以添加到MATSim中,并通過指定相應(yīng)的配置文件部分進(jìn)行配置。
Minimal MATSim GUI
可用參數(shù)和有效參數(shù)值的列表可能因版本而異。要查看與您使用的版本相關(guān)的所有可用設(shè)置的列表,請(qǐng)?jiān)贛ATSim GUI工具中運(yùn)行“Create Default config. xml“配置文件 ,見圖2.2.2。這將創(chuàng)建一個(gè)新的配置文件,其中包含所有可用的參數(shù),以及它們的默認(rèn)值,通常還有一個(gè)解釋性注釋,從而更容易查看可用的設(shè)置。針對(duì)要模擬的場(chǎng)景,需要使用和修改特定的設(shè)置,可以將帶有相應(yīng)參數(shù)的行復(fù)制到配置文件中,并且在該文件中修改參數(shù)值。
MatSIM GUI Tools
配置文件包含以下信息:
<modulename="network"><paramname="inputNetworkFile"value="<path-to-network-file>"/></module><modulename="plans"><paramname="inputPlansFile"value="<path-to-plans-file>"/></module><modulename="controler"><paramname="firstIteration"value="0"/><paramname="lastIteration"value="0"/></module><modulename="planCalcScore"><parametersettype="activityParams"><paramname="activityType"value="h"/><paramname="typicalDuration"value="12:00:00"/></parameterset><parametersettype="activityParams"><paramname="activityType"value="w"/><paramname="typicalDuration"value="08:00:00"/></parameterset></module>
示例可進(jìn)入如下網(wǎng)址,進(jìn)行查看:
https://github.com/matsim-org/matsim-code-examples/blob/12.x/scenarios/equil/config.xmlhttps://github.com/matsim-org/matsim-example-project/tree/master/scenarios/equil/config.xml
請(qǐng)注意,自版本0.9.x以來,大多數(shù)文件名都與配置文件保持相對(duì)路徑。因此輸入文件名也可以用url(統(tǒng)一資源定位器)表示。
在本例中,供應(yīng)由“道路網(wǎng)絡(luò)”提供,需求由“計(jì)劃”文件提供。第2.2.1節(jié)描述了典型的輸入數(shù)據(jù)。第一次和最后一次的迭代數(shù)值相同,意味著不需要執(zhí)行需求的重規(guī)劃。首先執(zhí)行的是mobsim(圖1.1),然后是每個(gè)執(zhí)行計(jì)劃的績(jī)效評(píng)分。為了發(fā)揮作用,計(jì)分需要從配置文件中知道計(jì)劃中使用的所有活動(dòng)類型以及每個(gè)活動(dòng)類型的典型持續(xù)時(shí)間。
第4章描述了進(jìn)一步的配置可能性。
MatSIM loop, sometimes called the MATSim cycle
2.2 構(gòu)建和運(yùn)行基本場(chǎng)景
本節(jié)提供用于測(cè)試MATSim的輸入數(shù)據(jù)文件以及輸出的標(biāo)準(zhǔn)文件信息。第一,本節(jié)從典型的輸入和輸出數(shù)據(jù)開始。第二,它將涉及到MATSim中使用的單位、約定和坐標(biāo)系。第三,本節(jié)將描述一個(gè)示例場(chǎng)景。第四,關(guān)于實(shí)際數(shù)據(jù)需求的提示。最后,以開始測(cè)試數(shù)據(jù)為結(jié)束,即使用免費(fèi)提供的場(chǎng)景輸入數(shù)據(jù)。
2.2.1 典型輸入數(shù)據(jù)
MATSim最少需要如下文件:
config.xml,包含MATSim的配置選項(xiàng),見上文第2.1.3節(jié)。
network.xml,包含(道路)網(wǎng)絡(luò)的描述。
population.xml,提供有關(guān)交通需求的信息,即個(gè)體人列表及其每日計(jì)劃。
因此,population.xml 以及 network.xml可能會(huì)變得很大。為了節(jié)省磁盤空間,MATSim支持以壓縮格式讀寫數(shù)據(jù)。MATSim使用GZIP壓縮。因此,許多文件名都有附加后綴.gz,如 population.xml.gz. MATSim根據(jù)文件名識(shí)別文件是否為壓縮的。
如下會(huì)更詳細(xì)地闡述關(guān)于道路和人口文件的設(shè)置要求;有關(guān)配置文件,請(qǐng)參閱上面的第2.1.3節(jié)。
2.2.1.1 network.xml
道路網(wǎng)絡(luò)是個(gè)體(或車輛)可以在其上移動(dòng)的基礎(chǔ)設(shè)施。道路由節(jié)點(diǎn)和鏈接(在圖論中,也稱為頂點(diǎn)和邊)組成。MATSim的XML(可擴(kuò)展標(biāo)記語言)數(shù)據(jù)格式的簡(jiǎn)單網(wǎng)絡(luò)描述可以包含大約以下信息:
<networkname="examplenetwork"><nodes><nodeid="1"x="0.0"y="0.0"/><nodeid="2"x="1000.0"y="0.0"/><nodeid="3"x="1000.0"y="1000.0"/></nodes><links><linkid="1"from="1"to="2"length="3000.00"capacity="3600"freespeed="27.78"permlanes="2"modes="car"/><linkid="2"from="2"to="3"length="4000.00"capacity="1800"freespeed="27.78"permlanes="1"modes="car"/><linkid="3"from="3"to="2"length="4000.00"capacity="1800"freespeed="27.78"permlanes="1"modes="car"/><linkid="4"from="3"to="1"length="6000.00"capacity="3600"freespeed="27.78"permlanes="2"modes="car"/></links></network>
有關(guān)工作示例,請(qǐng)進(jìn)入以下網(wǎng)址進(jìn)行查看:
https://github.com/matsim-org/matsim-code-examples/tree/12.x/scenarios/equilhttps://github.com/matsim-org/matsim-example-project/tree/master/scenarios/equil每個(gè)元素都有一個(gè)標(biāo)識(shí)符id。Node由x和y坐標(biāo)值描述(另見第2.2.3.3節(jié)和第17.1節(jié))。Link具有更多功能;from和to屬性引用節(jié)點(diǎn)并描述網(wǎng)絡(luò)幾何體。其他可用于描述交通道路的屬性如下:
Length:連接的長(zhǎng)度,通常以米為單位(見第2.2.3節(jié))。
Capacity:連接的通行能力,即穿過連接的車輛數(shù)量,通常以每小時(shí)車輛數(shù)為單位。
FreeSpped:自由速度是允許車輛沿連接線行駛的最大速度,通常以米/秒為單位。
Perlanes:在“起”和“終”節(jié)點(diǎn)指定的方向上可用的車道數(shù)(永久車道)。
Modes:鏈路上允許的模式列表。這是一個(gè)逗號(hào)分隔的列表,例如modes=“car,bike,taxi”。
所有鏈接都是單向的。如果一條路可以雙向行駛,則必須使用“反向到”和“從”屬性定義兩個(gè)鏈接(請(qǐng)參見上面列表中id為2和3的鏈接)。
2.2.1.2 population.xml
File Format MATSim 交通需求由個(gè)體人的每日計(jì)劃來進(jìn)行描述。整個(gè)個(gè)體集合也稱為人口量,因此該文件名為population.xml / plans.xml,因?yàn)槿丝谖募旧习粋€(gè)每日計(jì)劃列表。
Population 中包含基于層次結(jié)構(gòu)的數(shù)據(jù),如下例所示。這個(gè)例子闡述了內(nèi)部所包含的數(shù)據(jù)結(jié)構(gòu);最小的輸入文件,對(duì)應(yīng)著只需要較少的信息,之后會(huì)做闡述。
<population> <person id="1"> <plan selected="yes" score="93.2987721"> <act type="home" link="1" end_time="07:16:23"/> <leg mode="car"> <route type="links">123</route> </leg> <act type="work" link="3" end_time="17:38:34"/> <leg mode="car"> <route type="links">31</route> </leg> <act type="home" link="1"/> </plan> </person> <personid="2"> <plan selected="yes" score="144.39002"> ... </plan> </person></population>
有關(guān)工作示例,請(qǐng)進(jìn)入以下網(wǎng)址進(jìn)行查看:
https://github.com/matsim-org/matsim-code-examples/tree/12.x/scenarios/equilhttps://github.com/matsim-org/matsim-example-project/tree/master/scenarios/equilPopulation 中包含人員列表,每個(gè)人員包含各自的計(jì)劃列表,每個(gè)計(jì)劃中包含 acitives 和 leg 列表。
每個(gè)人只有一個(gè)計(jì)劃會(huì)被標(biāo)記為選中。每個(gè)個(gè)體人所選擇的計(jì)劃由mobSIM執(zhí)行。在重新規(guī)劃階段,可能會(huì)選擇不同的計(jì)劃。一個(gè)計(jì)劃可以包含一個(gè)分?jǐn)?shù)作為屬性。在計(jì)分階段,通過mobSIM計(jì)算計(jì)分,并在計(jì)分執(zhí)行后將計(jì)分存儲(chǔ)在計(jì)劃中。
每個(gè)計(jì)劃中的 activities 和 legs 列表描述了每個(gè)個(gè)體人的出行活動(dòng)。
Activities:活動(dòng)被分配了一個(gè)類型,通常包括了一個(gè)定義的結(jié)束時(shí)間,這部分中將日常計(jì)劃中的最后一個(gè)活動(dòng)排除。有些例外情況是,活動(dòng)有持續(xù)時(shí)間而不是結(jié)束時(shí)間。這類活動(dòng)通常是由路程匹配算法自動(dòng)生成的,本書中沒有描述。為了描述活動(dòng)發(fā)生的位置,可以通過為活動(dòng)指定一個(gè)x和y屬性值來為其指定一個(gè)坐標(biāo),或者為其指定一個(gè)道路id,描述活動(dòng)可以從哪條道路到達(dá)。因?yàn)槟M需要一個(gè)道路屬性,所以當(dāng)?shù)缆穼傩詠G失時(shí),Controler會(huì)為給定的坐標(biāo)計(jì)算最近的道路。
Leg:描述 個(gè)體人 如何計(jì)劃從一個(gè)位置到下一個(gè)位置;每個(gè) leg 必須分配一個(gè)傳輸模式。leg 可以選擇是否帶有 trav_time屬性,用于描述 leg 的預(yù)期行程時(shí)間。對(duì)于需要模擬的leg,它必須包含一條路線。路線的行進(jìn)方式取決于leg定義好的模式。對(duì)于car leg來說,個(gè)體人必須按照給定順序遍歷所有鏈接,而對(duì)于 transit leg,則存儲(chǔ)有關(guān)站點(diǎn)位置和預(yù)期公交服務(wù)的信息。MATSim會(huì)自動(dòng)為不包含初始路線的初始計(jì)劃 計(jì)算初始路線。
個(gè)體人在上一個(gè)activity(或leg)結(jié)束后直接啟動(dòng)leg。mobsim中個(gè)體人的處理取決于其選擇的模式。默認(rèn)情況下,mobsim很好地支持car leg 和 transit leg。 如果mobsim遇到一個(gè)它不知道的模式,它默認(rèn)為遠(yuǎn)距離傳輸模式。在這種情況下,個(gè)體人將從模擬現(xiàn)實(shí)中移除,并在 leg 的預(yù)期行程時(shí)間過去后重新插入到其目標(biāo)位置。
A Minimal Population File:人口數(shù)據(jù)格式是MATSim中最核心的數(shù)據(jù)結(jié)構(gòu)之一,一開始可能顯得有點(diǎn)過于繁雜。幸運(yùn)的是,目前需要知道的只是一小部分。Population.xml 文件大約只需要以下信息:
<population> <personid="1"> <plan> <act type="home"x="5.0"y="8.0"end_time="08:00:00"/> <leg mode="car"/> <act type="work"x="1500.0"y="890.0"end_time="17:30:00"/> <leg mode="car"/> <act type="home"x="5.0"y="8.0"/> </plan> </person> <personid="2"> ... </person></population>
可在 plans-minimal.xml in matsim-code-examples 查詢相關(guān)示例。
以下項(xiàng)目可用于最簡(jiǎn)方式來進(jìn)行描述:
每個(gè)人不需要一個(gè)以上的計(jì)劃。
該計(jì)劃不必選擇或評(píng)分。
活動(dòng)可通過其坐標(biāo)定位。
活動(dòng)應(yīng)該有一個(gè)合理的結(jié)束時(shí)間。
leg 只包含一個(gè)模式,沒有路線。
當(dāng)模擬開始時(shí),MATSim Controler 將加載這樣一個(gè)文件,然后為每個(gè)活動(dòng)分配最近道路,為每個(gè)leg計(jì)算合適的行進(jìn)路線,然后開始進(jìn)行迭代模擬。
2.2.2 典型輸出數(shù)據(jù)
MATSim創(chuàng)建可用于分析結(jié)果以及監(jiān)視當(dāng)前模擬設(shè)置進(jìn)度的輸出數(shù)據(jù)。一些文件總結(jié)了一個(gè)完整的MATSim運(yùn)行,而另一些文件僅為特定的迭代創(chuàng)建。第一類文件直接進(jìn)入輸出文件夾的頂層,可以在配置文件的controler部分中指定。其他文件存儲(chǔ)在 ITERS/it. {iteration number} 的iteration specific文件夾中,這些文件夾在output文件夾中連續(xù)創(chuàng)建。對(duì)于某些文件(通常是大型文件,如population),可以在配置文件中指定輸出頻率。然后它們只轉(zhuǎn)到相應(yīng)的迭代文件夾。總結(jié)整個(gè)MATSim運(yùn)行的文件是“動(dòng)態(tài)”構(gòu)建的,即在每次迭代之后,存儲(chǔ)當(dāng)前計(jì)算的迭代值,允許對(duì)運(yùn)行進(jìn)行連續(xù)監(jiān)視。一些文件是默認(rèn)創(chuàng)建的(例如分?jǐn)?shù)統(tǒng)計(jì)文件);其他文件需要由相應(yīng)的配置文件部分觸發(fā)(例如計(jì)數(shù)數(shù)據(jù)文件)。
以下輸出文件是連續(xù)構(gòu)建的,以總結(jié)整個(gè)運(yùn)行。
Log File:在MATSim運(yùn)行期間,會(huì)打印一個(gè)日志文件,其中包含您以后可能需要的分析信息,或者運(yùn)行崩潰時(shí)的記錄。
Warnings and Errors Log File:有時(shí),MATSim會(huì)識(shí)別仿真或其配置中的問題;然后會(huì)將警告和錯(cuò)誤消息寫入日志文件。由于日志文件包含的信息太多,因此可以忽略這些警告。在運(yùn)行輸出的目錄中會(huì)生成一個(gè)單獨(dú)的日志文件,其中只包含警告和錯(cuò)誤消息。在運(yùn)行期間/之后檢查此文件以查找可能的問題非常重要。
Score Statistics:分?jǐn)?shù)統(tǒng)計(jì)以圖片形式提供(scorestats.png),以及文本文件(scorestats.txt文件). 它們顯示了每個(gè)迭代中所有個(gè)體人的平均、最佳、最差、已執(zhí)行和總體平均值。圖1.2顯示了一個(gè)得分圖示例。
Leg Travel Distance Statistics:leg 行程距離統(tǒng)計(jì)(文件:traveldistancestats.png 以及traveldistancestats.txt 文件)與得分統(tǒng)計(jì)數(shù)據(jù)相當(dāng),但相反,以旅行距離為主體進(jìn)行繪制。
StopWatch:StopWatch (StopWatch.txt) 包含每次迭代的重新規(guī)劃或mobsim執(zhí)行操作的計(jì)算機(jī)時(shí)間(所謂的掛鐘時(shí)間)。這些數(shù)據(jù)有助于計(jì)算性能分析,例如,與 mobsim 相比,重新規(guī)劃需要多長(zhǎng)時(shí)間?
為特定迭代創(chuàng)建以下輸出文件:
Events:模擬中的每一個(gè)動(dòng)作都被記錄為一個(gè)MATSim事件,無論是活動(dòng)開始還是路網(wǎng)道路線的改變,見圖2.3。每個(gè)事件都擁有一個(gè)或多個(gè)屬性。默認(rèn)情況下,包含事件發(fā)生的時(shí)間。此外,還可以包括觸發(fā)事件的個(gè)體人ID或發(fā)生事件的道路ID等信息。事件文件是后期分析的重要基礎(chǔ),就像可視化工具一樣。第45.5節(jié)詳細(xì)討論了事件。
Mobsim events.png
Plan:在可配置的迭代中,打印當(dāng)前的總體狀態(tài)以及個(gè)體人的計(jì)劃。最終迭代的計(jì)劃也在 輸出 文件夾中可以找到。
Leg Histogram:在每次迭代中,繪制 Leg 直方圖。Leg 直方圖描述了每個(gè)時(shí)間單位到達(dá)、離開或途中的個(gè)體人數(shù)量。為每個(gè)運(yùn)輸模式和所有運(yùn)輸模式的總和創(chuàng)建直方圖。每個(gè)文件以迭代編號(hào)開始,以傳輸模式結(jié)束(例如,1.legHistogram_car.png or 1.legHistogram_all.png). 還創(chuàng)建了一個(gè)文本文件(例如,1. legHistogram.txt),包含所有傳輸模式的數(shù)據(jù)。
Trip Durations:對(duì)于每個(gè)迭代,一個(gè)行程持續(xù)時(shí)間文件(例如,1. tripdurations.txt),列出每個(gè)活動(dòng)對(duì)的出行次數(shù)及其持續(xù)時(shí)間(例如,從工作到家或從家到購(gòu)物)。
Link Stats:在每個(gè)迭代中,打印一個(gè)道路統(tǒng)計(jì)文件,其中包含每個(gè)網(wǎng)絡(luò)鏈接上的每小時(shí)計(jì)數(shù)值和出行時(shí)間。如第6.3節(jié)所述,道路統(tǒng)計(jì)對(duì)于與真實(shí)世界的計(jì)數(shù)數(shù)據(jù)進(jìn)行比較尤其重要。
2.2.3 單位、約定、坐標(biāo)系統(tǒng)
2.2.3.1 單位
MATSim 試圖對(duì)實(shí)際單位做一些假設(shè),但有時(shí)對(duì)某些估計(jì)是必要的。一般來說,MATSim希望類似類型的變量(例如,所有距離)無論在哪里使用都在同一個(gè)單位中。在下面的簡(jiǎn)短概述中,列出了最重要的(預(yù)期的)單元。
Distance:例如,在道路的長(zhǎng)度中使用距離單位。它們應(yīng)該與坐標(biāo)系使用相同的單位,從而允許MATSim計(jì)算直線距離。由于常用的UTM(通用橫軸墨卡托)投影坐標(biāo)系(見第2.2.3.3節(jié))使用米作為距離單位,這是MATSim中最常用的距離單位。
Time:MATSim在某些特定場(chǎng)景里可以支持 時(shí):鐘:秒。但在內(nèi)部,它使用秒作為默認(rèn)的時(shí)間單位。例如,這意味著道路速度必須以每秒距離(通常為米每秒)來指定。這個(gè)規(guī)則的一個(gè)顯著的例外是評(píng)分參數(shù),MATSim期望每小時(shí)的值。
Money:該數(shù)值本身無單位。單位隱含地由貨幣的邊際效用給出(參見下面的等式(5.5))。因此,當(dāng)一個(gè)人從德國(guó)搬到瑞士時(shí),參數(shù) m 必須從“每歐元效用”改為“每瑞士法郎效用”。
2.2.3.2 約定
MATSim使用ID進(jìn)行描述。這些標(biāo)識(shí)符可以是任意字符串,但有以下例外:ID不應(yīng)包含任何空格字符(包括制表符、新行等)或逗號(hào)、分號(hào)等,因?yàn)檫@些字符通常用于在ID列表上區(qū)分不同的ID。
2.2.3.3 坐標(biāo)系統(tǒng)
在適當(dāng)?shù)淖鴺?biāo)系中準(zhǔn)備數(shù)據(jù):在多個(gè)輸入文件中,需要指定坐標(biāo),例如道路節(jié)點(diǎn)的坐標(biāo)。目前,我們強(qiáng)烈建議不要使用WGS84坐標(biāo)(即GPS(全球定位系統(tǒng))坐標(biāo))或任何其他球坐標(biāo)(東西方向的坐標(biāo)范圍為?180 至+180,南北方向的坐標(biāo)范圍為?90 至+90)。MATSim必須在部分代碼中計(jì)算兩點(diǎn)之間的距離。球坐標(biāo)之間距離的計(jì)算非常復(fù)雜,而且可能很慢。相反,MATSim使用簡(jiǎn)單的畢達(dá)哥拉斯定理,但這需要笛卡爾坐標(biāo)系。因此,我們強(qiáng)烈建議使用笛卡爾坐標(biāo)系,最好是距離單位對(duì)應(yīng)于一米的坐標(biāo)系。
許多國(guó)家和地區(qū)都定義了自定義坐標(biāo)系,并針對(duì)本地使用進(jìn)行了優(yōu)化。最好向您感興趣地區(qū)的GIS(地理信息系統(tǒng))專家咨詢最常用的坐標(biāo)系,并將其用于您的數(shù)據(jù)。
如果您沒有關(guān)于您所在地區(qū)使用的坐標(biāo)系的信息,則最好使用UTM坐標(biāo)系。這個(gè)系統(tǒng)將世界劃分為多個(gè)波段,每個(gè)波段寬6度,分為北部和南部,稱為UTM區(qū)。對(duì)于每個(gè)分區(qū),定義了一個(gè)優(yōu)化的坐標(biāo)系。為您所在的地區(qū)選擇UTM區(qū)域(Wikipedia有一個(gè)很好的顯示區(qū)域的地圖;更好的選擇是
https://www.geoplaner.com/)使用它的坐標(biāo)系。
如果對(duì)坐標(biāo)系有具體需求的話,需要在錄入數(shù)據(jù)的時(shí)候,將坐標(biāo)系也錄入到MATSim中。在以下案例中,可能某些分析可能需要輸出到 GoogleEarth或QGIS 中做可視化。因此,可以在配置文件中指定MATSim需要使用的坐標(biāo)系:
<module name="global"> <param name="coordinateSystem"value="EPSG:32608"/></module>
有多種方法可以指定所使用的坐標(biāo)系。最簡(jiǎn)單的方法是使用 “EPSG代碼”。大多數(shù)常用的坐標(biāo)系已經(jīng)標(biāo)準(zhǔn)化和編號(hào)。EPSG代碼標(biāo)識(shí)坐標(biāo)系,可直接由MATSim使用。要為您的坐標(biāo)系找到正確的EPSG代碼(例如,其中一個(gè)UTM區(qū)域),請(qǐng)?jiān)L問網(wǎng)站
http://www.spatialreference.org 有用。在本網(wǎng)站上搜索您的坐標(biāo)系,例如“WGS 84/UTM Zone 8N”(用于北半球UTM Zone 8),以查找匹配坐標(biāo)系及其EPSG代碼的列表(在本例中)EPSG:32608)。另外,MATSim還可以解析 WKT 格式的坐標(biāo)系描述。
從0.8.x版本開始,MATSim接受不同于內(nèi)部坐標(biāo)系的坐標(biāo)系中的輸入數(shù)據(jù)。這是通過類型的設(shè)置進(jìn)行實(shí)現(xiàn)。
<module name= "network" >...<param name= "inputCRS" value="EPSG:12345"/></module>
這也適用于其他輸入文件,例如,plans 文件。然后,在輸入過程中,該文件中的所有坐標(biāo)將轉(zhuǎn)換為配置的全局部分中給定的坐標(biāo)系。
第三個(gè)選項(xiàng)是直接在相應(yīng)的文件中指定坐標(biāo)系。語法大約是
...<network> <attributes> <attribute name="coordinateReferenceSystem" class="java.lang.String">EPSG:31468 </attribute> </attributes>...
輸出文件通常包含這樣一個(gè)條目,因此可以在那里進(jìn)行檢查。這也適用于坐標(biāo)系與上述全局坐標(biāo)系不同的輸入文件,并且它提供與配置文件中的 inputCRS 條目相同的功能。
2.2.4 示例場(chǎng)景
MATSim發(fā)行版附帶了一個(gè)名為equil的示例場(chǎng)景,位于examples/scenarios/equil文件夾中,其中包含以下文件:config.xml, network.xml, plans100.xml,plans2000.xml.gz,分別有100人和2000人的每日計(jì)劃,只使用汽車模式。此外,還提供了一個(gè)只有兩個(gè)人的小群體(plans2.xml),一個(gè)使用公共交通工具,另一個(gè)使用汽車模式。在文件夾(counts100.xml)中還可以找到計(jì)數(shù)數(shù)據(jù)的示例。
場(chǎng)景中的道路如圖2.4所示。
Equil scenario network.png
下面幾行通過討論配置文件中最重要的部分,來解釋 config.xml。
config.xml 文件的 “strategy” 部分:如下面的配置文件所示,此場(chǎng)景使用了重新規(guī)劃。在每一次迭代中,10%的個(gè)體人重新選擇他們的出行計(jì)劃(模塊:重新選擇)。剩下的90%選擇他們的最高分?jǐn)?shù)計(jì)劃在當(dāng)前迭代中重新執(zhí)行(模塊:最高分)。如果代理的內(nèi)存已滿(由max Agent Plan Memory Size定義),需要從該內(nèi)存中刪除計(jì)劃。默認(rèn)情況下,得分最低的計(jì)劃會(huì)被刪除;該部分也具有可配置性,目前正在研究中。
<module name="strategy"> <param name="maxAgentPlanMemorySize"value="5"/><!--0 means unlimited--> <parameterset type="strategysettings"> <param name="strategyName" value="ReRoute"/> <param name="weight" value="0.1"/> </parameterset> <parameterset type="strategysettings"> <param name="strategyName" value="BestScore"/> <param name="weight" value="0.9"/> </parameterset></module>
config.xml 文件的 “planCalcScore” 部分:planCalcScore部分定義了用于評(píng)分的參數(shù),如第5章所述。如示例中所示,指定了兩種活動(dòng)類型:h(home)和w(work)。population 文件(參見第2.2.1.2節(jié))中包含的所有活動(dòng)類型必須在配置文件的 planCalcScore 中定義。
<module name="planCalcScore"> <parameterset type="activityParams"> <paramname="activityType"value="h"/> <paramname="typicalDuration"value="12:00:00"/> </parameterset> <parameterset type="activityParams"> <param name="activityType"value="w"/> <param name="typicalDuration"value="08:00:00"/> </parameterset></module>
config.xml 文件的 “controler” 部分:場(chǎng)景進(jìn)行10次迭代,將文件輸出到 ./output/equil(第2.2.2節(jié)),并使用QSim作為mobsim的計(jì)算內(nèi)核(第1.3、4.4和7節(jié)中有更多關(guān)于mobsim的內(nèi)容)。
<modulename="controler"> <param name="outputDirectory"value="./output/equil"/> <param name="lastIteration"value="10"/> <param name="mobsim"value="qsim"/></module>
Visualization 仿真結(jié)果可以通過Via可視化(第???章)或OTFVis(章節(jié)??)。
2.2.5 數(shù)據(jù)需求
2.2.5.1 人口和活動(dòng)時(shí)間表
需求估計(jì)是MATSim的重要組成部分。這意味著,在理論上,只需要向MATSim提供從一個(gè)模擬平均工作日到下一個(gè)工作日不變的需求組件。例如:人口及其居住和工作地點(diǎn)。然而,在實(shí)踐中,MATSim還沒有準(zhǔn)備好對(duì)完整的出行需求進(jìn)行內(nèi)生建模。例如,必須提供活動(dòng)的順序和持續(xù)時(shí)間作為輸入。MATSim未涵蓋的所有出行需求選擇都必須進(jìn)行外部估算。
對(duì)于人口生成,存在兩種可能性:簡(jiǎn)單的方法是直接使用完整的人口普查;更嚴(yán)格的方法是根據(jù)抽樣或結(jié)構(gòu)調(diào)查生成一個(gè)合成人口(例如,Guo和Bhat,2007)。對(duì)于MATSim,這兩種方法都已經(jīng)被瑞士聯(lián)邦統(tǒng)計(jì)局(BFS)(2000)和Müller(2011)使用。
出行需求通常來源于調(diào)查:對(duì)于瑞士,來源于Microcesus(瑞士聯(lián)邦統(tǒng)計(jì)局(BFS),2006年)。也可以使用較新的數(shù)據(jù)源,如GPS或智能手機(jī)出行日記(例如,Zilske和Nagel,2015)
需求和人口生成的一個(gè)關(guān)鍵部分是工作場(chǎng)所的分配,因?yàn)橥ㄇ诮煌ㄈ匀皇墙煌M的主要問題,特別是在高峰時(shí)間。瑞士的全面普查工作地點(diǎn)是在市一級(jí)進(jìn)行調(diào)查的。然而,這樣優(yōu)質(zhì)的數(shù)據(jù)庫并不多見。
在得到了研究區(qū)域的居住人口之后,可能需要額外的需求組成部分,例如跨境和貨運(yùn)。由于這些組件通常無法進(jìn)行內(nèi)部自主建模,MATSim提供了以不同方式處理不同子種群的功能(第4.6節(jié))。
例如,可以規(guī)定過境個(gè)體人不得在研究區(qū)域內(nèi)選擇目的地,或者貨運(yùn)個(gè)體人不得將其送貨活動(dòng)改為休閑活動(dòng)。
2.2.5.2 道路
在模擬實(shí)踐中,使用了兩種不同的網(wǎng)絡(luò)類型:規(guī)劃網(wǎng)絡(luò)和導(dǎo)航網(wǎng)絡(luò)(比較瑞士圖2.4(a)和圖2.4(b)中的例子,以了解蘇黎世地區(qū))。前者更精簡(jiǎn),通常用于初步探索性模擬運(yùn)行,而后者通常用于策略運(yùn)行,通常提供更多的細(xì)節(jié),如自行車,甚至行人連接。數(shù)據(jù)可從聯(lián)邦辦公室等官方來源、OSM(OpenStreetMap)等免費(fèi)來源以及包括導(dǎo)航網(wǎng)絡(luò)提供商在內(nèi)的商業(yè)來源獲得。
Zurich networks.png
2.2.6 打開場(chǎng)景輸入數(shù)據(jù)
下面是一些示例場(chǎng)景
https://github.com/matsim-org/matsim-code-examples/tree/12.x/scenerios。在以下網(wǎng)址可以找到更多方案
http://matsim.org/open-scenario-data。2.3 MATSim 生存指南
MATSim有很多選擇和可能性,找到這些選擇和可能性可能是一項(xiàng)艱巨的任務(wù)?;谖覀冏约旱慕?jīng)驗(yàn)總結(jié),有以下幾個(gè)建議:
自版本0.9.x以來,配置文件中的大多數(shù)文件路徑都是相對(duì)于配置文件的目錄的。 一般來說,這會(huì)使文件路徑的處理比過去容易得多。但是,舊的配置文件可能不再工作。 有些出乎意料的是,在大多數(shù)情況下,url可以用作輸入路徑。
總是從一個(gè)小例子開始測(cè)試。
總是先測(cè)試大型場(chǎng)景的1%數(shù)據(jù)量(例如,隨機(jī)抽取的初始需求的子樣本)。MATSimGUI(圖2.1)允許使用命令工具 …Create sample Population 創(chuàng)建樣本人口。
如第4.4節(jié)所述,這需要調(diào)整一些參數(shù),特別是mobsim的flowCapacityFactor和storageCapacityFactor。如第二部分第6.3節(jié)所示,示例場(chǎng)景還要求對(duì)計(jì)數(shù)數(shù)據(jù)進(jìn)行參數(shù)調(diào)整。
如果您的設(shè)置不再工作,請(qǐng)立即返回到工作版本,并從那里開始小步操作。
檢查logFileWarningErrors.log日志.
檢查附加到配置文件選項(xiàng)的注釋。
檢查output_config.xml.gz 文件 或 logfile.log。
嘗試設(shè)置盡可能少的配置文件選項(xiàng)。
帶來兩個(gè)優(yōu)點(diǎn):
(i)除了必須設(shè)置的選項(xiàng)外,您的模擬將隨著更新的MATSim默認(rèn)值而改變,因此也會(huì)隨著社區(qū)當(dāng)前認(rèn)為的最佳配置而改變。
(ii)只要配置文件語法的更改與您自己的設(shè)置不同,您就不會(huì)受到影響。
輸出目錄包含輸出 output_config_reduced.xml,這是這種“最簡(jiǎn)化”配置文件的起點(diǎn)。
文檔:
http://matsim.org/javadoc(或者使用IDE提供的javadoc文檔)。最新教程:
http://matsim.org/docs。最初運(yùn)行更復(fù)雜的模式作為傳送。 以后可以將它們添加為“真實(shí)”模式。
最初運(yùn)行時(shí),先不要使用擴(kuò)展程序。 對(duì)于擴(kuò)展程序的功能,應(yīng)該清楚其功能并逐步添加。