本專案為一個網頁應用程式,目的協助交通工程師或研究人員進行路網號誌時制設計、車流模擬,並透過最佳化演算法(如遺傳演算法 GA、模擬退火 SA、NSGA-II)優化路口間的號誌時差,以期達到最大化綠波效益。
使用者可以視覺化地建構路網,設定各路口的號誌週期、時相、時差等參數,並觀察車輛在時空圖上的運行軌跡。本工具亦提供 Pareto 最優解的匯出與匯入功能,方便使用者比較與套用不同的優化方案。
網址 https://taichungbus.somee.com/offset/main.html
- 路口設定https://www.youtube.com/watch?v=EePOvNXtuew
- 時差優化(單一起點)https://www.youtube.com/watch?v=dVKS-7DhBHY
- 軌跡動態模擬及車流績效https://www.youtube.com/watch?v=RcslK0h6Lg0
- 左鍵點圓點建立路口
- 右鍵點已建立的路口,彈出設定視窗
- 左鍵點線條,建立各路口的連線
- 端點設定為"起點",及選正確的方向,完成時空圖設定
main.html: 主要的 HTML 結構檔案。styles.css: 頁面的 CSS 樣式檔案。code_1601_H_8_02.js: 負責路網設計、繪圖、路口設定、基礎模擬邏輯、時空圖繪製、統計計算等核心功能。code_1602_ga_5.js: 包含單目標及多目標優化演算法 (SA, GA, NSGA-II)、Pareto 解的選擇與應用介面、Pareto 解的匯出與匯入邏輯。code_1602_ga_plus.js: 包含其他優化演算法的變體或輔助函數 (例如optimizeSA3,optimizeGA3,optimizeNSGAIIForTwoSpawnPoints3等,基於通過路口/距離比例的適應度函數)。code_1606_greenwave_5.js: 負責計算綠波相關的指標,例如computeRatioMatrix,用於評估不同路徑的綠波品質。
- 視覺化路網設計:在格點畫布上點選建立路口、連線設定路段及距離。
- 詳細路口設定:可設定路口名稱、時差、鎖定狀態、主/從號誌(同亮)、車輛產生起點、車輛頻率、行駛方向、多時相(含綠燈/紅燈秒數及通行方向)。
- 時空圖呈現:視覺化車輛運行軌跡與號誌狀態,便於分析車流連續性。
- 時差優化演算法:內建模擬退火 (SA)、遺傳演算法 (GA)、NSGA-II 等演算法,自動優化號誌時差。優化後的時差數據顯示於路網設計區的路口圓形上。
- Pareto 最優解管理:支援多目標優化後的 Pareto 解集顯示、選擇、匯出與匯入。
- 動態車流模擬:模擬車輛在設計路網中的運行情況。
- 行車統計:提供簡易及詳細的行車數據統計,如平均速度、停等次數等。
- 檔案操作:支援路網設計的 JSON 格式匯出與匯入,以及軌跡資料的匯出入。
-
開啟網頁:直接在支援 JavaScript 的瀏覽器中開啟
main.html檔案。 -
路網設計區:
- 建立路口:在設計畫布的格點上點擊以建立路口 (圓點)。
- 建立路段:先後點選兩個路口以在其間建立路段連線。再次點選已選路口可取消選取。
- 設定路口參數:
- 在畫布上右鍵點擊一個路口,或點擊左下角的「路口設定」圖示 (
minimizedIcon),會展開「路口設定」面板。 - 在面板中設定路口名稱、時差 (Offset)、是否鎖定 (優化時不變動)、週期 (由各時相時間加總顯示)、是否為主燈號、是否引用其他主燈號。
- 若設為起點 (Spawn Point),可設定車輛產生頻率、行駛方向及起點名稱。
- 設定時相數量,並為每個時相配置車流流向 (勾選通行方向)、綠燈秒數及黃燈+全紅秒數。
- 在畫布上右鍵點擊一個路口,或點擊左下角的「路口設定」圖示 (
- 檔案操作:
- 點擊「選擇檔案」匯入先前儲存的 JSON 路網設計。
- 點擊「導出為 JSON」儲存當前設計。
-
時空圖與優化區:
- 設定模擬參數:輸入「車輛速度 (km/h)」。
- 選擇起點進行分析:從「選擇起點」下拉選單中選擇一個已在路口設定中定義的起點,相關分析 (如最大綠波秒數、時空圖繪製) 會基於此起點。
- 時空圖:會根據當前設定的路網、號誌及選定起點,顯示車輛軌跡和號誌狀態。
- 最大綠波秒數:顯示基於當前設定及選定起點計算出的理論最大連續綠燈時間。
- 優化時差:點擊「優化時差」按鈕。系統會根據設定的起點數量,自動選用合適的演算法 (SA, GA, NSGA-II) 調整各路口時差。優化過程中會有進度提示。
- 若優化結果為多目標 Pareto 解,會在下方的「多目標」區顯示。
- 軌跡動態模擬:點擊「軌跡動態模擬」按鈕,可觀察車輛在路網中的即時運行動畫 (此處的模擬主要用於視覺化,優化時的評估可能使用不同的模擬或計算方式)。
- 匯出/匯入軌跡:可將模擬產生的車輛軌跡資料匯出或匯入。
- 匯出時空圖:將當前的時空圖畫布存為圖片。
-
多目標區:
- 若執行了多目標優化 (通常是 NSGA-II),此處會顯示 Pareto 最優解列表。
- 使用者可以從列表中選擇一個解。
- 提供「匯出 Pareto 解」和「匯入 Pareto 解」按鈕,方便儲存和載入優化結果集。
-
行車統計區:
- 點擊「簡易統計」或「詳細統計」按鈕,會在下方區域顯示模擬後的車輛運行數據。
- 路徑時空圖[已完整]:
- 目前時空圖主要基於單一起點的直線連續路段。
- 未來擴展功能,將允許使用者選定路網中的一條特定路徑,並為該路徑生成時空圖,以更精確分析特定 O-D (起終點)的綠燈協調情況。
- 適應度函數介面化[已完整]:
- 讓使用者選擇其他不同的評估指標。
- 例如,未來提供選項讓使用者選擇是以「最大化通過路口數」、「最大化通過距離」等作為優化目標。
- 允許多目標優化時,選擇不同的目標組合。
- 不同行車方向的不同速限:
- 目前車輛速度可能是全域設定或基於路段。
- 允許各路段設定不同的期望速限。
本專案程式碼採用 GNU Affero General Public License (AGPL) version 3.0 或其後續版本授權。
簡單來說,這意味著您可以:
- 自由地執行本程式。
- 自由地研究本程式的運作方式,並根據您的需求修改它 (源碼可訪問是前提)。
- 自由地重新發佈本程式的副本。
- 自由地將您修改後的版本發佈給其他人。
AGPL 與標準 GPL 的主要區別在於,如果您在網路上提供本程式(例如作為一個網路服務),您也必須向網路使用者提供源碼的訪問權限。這確保了即使軟體僅作為服務提供,使用者及其開發者社群仍能保有修改和再發佈的自由。
因此,您需要遵守 AGPL 的條款,主要包括:
- 當您發佈本程式或其衍生作品時(包括透過網路提供服務),必須以同樣的 AGPL 條款授權。
- 您必須提供源碼的可訪問性給所有與該軟體互動的使用者。
- 您需要保留原始的版權聲明和 AGPL 授權聲明。
有關 AGPL 條款的完整詳情,請參閱 GNU Affero General Public License v3.0。