2017年11月30日 星期四

Simutrans(模擬交通)遊戲運用21種運輸系統之範例:運河篇(四)。

第四次的「運用21種運輸系統之範例」,介紹的是一個匯集了所有21種運輸系統路線的運輸轉運設施,分屬21個單元。

這個運輸轉運設施稱為綜合轉運中心,其所在城市有一條河流經過,利用這條河流開闢了運河,設置了一條運河航線當做城市內部運輸路線使用。
00:05 從區域綜合轉運中心的運河碼頭開始,此中心擁有21種運輸系統33條路線,地上3層、地下2層。
00:14 左下角是膠輪捷運列車。
00:19 右上角有三節公車、輕軌電車。
00:38 旁邊的架空纜線是無軌電車專用的。
00:45 天上有直昇機飛過。
02:01 與郵務船同時停靠碼頭。
04:03 位於城市邊緣了。

每個運河碼頭的涵蓋範圍都跟旁邊其它運輸系統車站的涵蓋範圍重疊,使得重疊區內每個建築物的乘客、郵件都有兩個車站設施可以選擇搭乘,這就引發一個疑問:「乘客、郵件是如何選擇要從哪個車站開始搭乘?」及後續:「之後又是如何選擇運輸路線或交通工具到達要去的地方?」。可惜的是,以上皆非。原因在於乘客、郵件(甚至是貨物)選擇的是可以最快找到的路徑節點,跟車站性質、運輸路線遠近、交通工具快慢、花費成本無關。路徑是指交通工具在車站間實際行駛的軌跡,節點就是指車站。

乘客、郵件以每格建築物為單位,貨物以整棟建築物為單位來計算車站涵蓋範圍(station_coverage)。首先,出發建築物在涵蓋範圍(station_coverage)內隨機找到一個車站,此車站如果有路徑可到達目的地建築物的話,所產生的乘客、郵件、貨物就以此車站為起點站;沒有路徑可到達目的地建築物的部分,會在此車站累積一筆無路線(no route)的資料,然後隨機尋找下一個涵蓋範圍(station_coverage)內的車站,直到全部都有路徑或沒有車站可找為止。所謂有路徑可到達,指的是出發建築物涵蓋範圍(station_coverage)內的車站和目的地建築物涵蓋範圍(station_coverage)內的車站之間有多條路徑可以連接,並且須轉乘的話也不能超過設定的轉乘次數(max_transfers),及程式嘗試尋找的路徑總長度不能超過設定的長度(max_route_steps)、且途中車站總數也不能超過設定的車站數(max_hops),否則就找不到路徑。

有了起點站,表示有路徑可到達目的地建築物,接著要找終點站。跟找起點站一樣,隨機在目的地建築物涵蓋範圍(station_coverage)內找到一個車站,有路徑可從起點站到達的話,就以此站為終點站;否則隨機再尋找下一個涵蓋範圍(station_coverage)內的車站,直到找到為止;如此就決定好了起點站和終點站。

從起點站到終點站之間有多條路徑可以選擇的話,程式會先選擇路線總合加權值最少的組合當做路徑,加權值越少表示路線停靠站越少、可以最快被找到。不須轉乘的路徑稱為路線,每條路線起點站加權值是8,每多停一站加權值加1;有轉乘的話則視為另一條路線。一條路徑可以由多條路線組合而成,加權值為18的2條路線組合比加權值為19的1條路線能更快被找到。

有多條路徑總合加權值一樣時,程式會選擇轉乘次數少的;轉乘次數一樣時,就從第一條路線的加權值開始比較,選擇最少的那條,如一樣,則往第二條路線依序下去;比完全部路線如果還是一樣,在只有一個轉乘站的情況下,選擇最新設立(車站從無到有)的轉乘站;轉乘站有兩個以上時,從第一個轉乘站開始比較,選擇最早設立(車站從無到有)的轉乘站,再依序往第二個轉乘站比下去,如此就能找出唯一的路徑。

找到唯一的路徑之後,路徑上的起點站、轉乘站、終點站即是節點,決定好節點之後,乘客、郵件、貨物就會搭乘途經節點之間任何可以搭乘的交通工具,有合適載貨類別的空位就搭,不論遠近、快慢、大小、種類、貴或便宜。不經節點之間的交通工具,即使中間可以到達終點站,也不會搭乘,因為交通工具沒有經過選定好的節點,不符合規定。

當坐上交通工具時,會遇到終點站、轉乘站在同一路線上時,這時先到達的就先下車。比如先到達終點站就先下車,旅途完成。先到達轉乘站就先在轉乘站下車,然後在同一交通工具排隊上車續往終點站前進,交通工具如不擁擠,就可全數續搭同一班車前進,如果交通工具很擁擠,上車順序是:近的站比遠的站優先上車、轉乘的比直達的優先上車,所以這時候有可能搭不上同一班車,得等下一班次。

沒有留言:

張貼留言