Skip to content

Repository files navigation

時空圖時差優化工具 (TimeSpace Diagram Offset Optimization Tool)

本專案為一個網頁應用程式,目的協助交通工程師或研究人員進行路網號誌時制設計、車流模擬,並透過最佳化演算法(如遺傳演算法 GA、模擬退火 SA、NSGA-II)優化路口間的號誌時差,以期達到最大化綠波效益。

使用者可以視覺化地建構路網,設定各路口的號誌週期、時相、時差等參數,並觀察車輛在時空圖上的運行軌跡。本工具亦提供 Pareto 最優解的匯出與匯入功能,方便使用者比較與套用不同的優化方案。

立即使用

網址 https://taichungbus.somee.com/offset/main.html

教學影片(持續增加中)

技巧:

  • 左鍵點圓點建立路口
  • 右鍵點已建立的路口,彈出設定視窗
  • 左鍵點線條,建立各路口的連線
  • 端點設定為"起點",及選正確的方向,完成時空圖設定

專案結構

  • 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 格式匯出與匯入,以及軌跡資料的匯出入。

如何操作 🚀

  1. 開啟網頁:直接在支援 JavaScript 的瀏覽器中開啟 main.html 檔案。

  2. 路網設計區

    • 建立路口:在設計畫布的格點上點擊以建立路口 (圓點)。
    • 建立路段:先後點選兩個路口以在其間建立路段連線。再次點選已選路口可取消選取。
    • 設定路口參數
      • 在畫布上右鍵點擊一個路口,或點擊左下角的「路口設定」圖示 (minimizedIcon),會展開「路口設定」面板。
      • 在面板中設定路口名稱、時差 (Offset)、是否鎖定 (優化時不變動)、週期 (由各時相時間加總顯示)、是否為主燈號、是否引用其他主燈號。
      • 若設為起點 (Spawn Point),可設定車輛產生頻率、行駛方向及起點名稱。
      • 設定時相數量,並為每個時相配置車流流向 (勾選通行方向)、綠燈秒數黃燈+全紅秒數
    • 檔案操作
      • 點擊「選擇檔案」匯入先前儲存的 JSON 路網設計。
      • 點擊「導出為 JSON」儲存當前設計。
  3. 時空圖與優化區

    • 設定模擬參數:輸入「車輛速度 (km/h)」。
    • 選擇起點進行分析:從「選擇起點」下拉選單中選擇一個已在路口設定中定義的起點,相關分析 (如最大綠波秒數、時空圖繪製) 會基於此起點。
    • 時空圖:會根據當前設定的路網、號誌及選定起點,顯示車輛軌跡和號誌狀態。
    • 最大綠波秒數:顯示基於當前設定及選定起點計算出的理論最大連續綠燈時間。
    • 優化時差:點擊「優化時差」按鈕。系統會根據設定的起點數量,自動選用合適的演算法 (SA, GA, NSGA-II) 調整各路口時差。優化過程中會有進度提示。
      • 若優化結果為多目標 Pareto 解,會在下方的「多目標」區顯示。
    • 軌跡動態模擬:點擊「軌跡動態模擬」按鈕,可觀察車輛在路網中的即時運行動畫 (此處的模擬主要用於視覺化,優化時的評估可能使用不同的模擬或計算方式)。
    • 匯出/匯入軌跡:可將模擬產生的車輛軌跡資料匯出或匯入。
    • 匯出時空圖:將當前的時空圖畫布存為圖片。
  4. 多目標區

    • 若執行了多目標優化 (通常是 NSGA-II),此處會顯示 Pareto 最優解列表。
    • 使用者可以從列表中選擇一個解
    • 提供「匯出 Pareto 解」和「匯入 Pareto 解」按鈕,方便儲存和載入優化結果集。
  5. 行車統計區

    • 點擊「簡易統計」或「詳細統計」按鈕,會在下方區域顯示模擬後的車輛運行數據。

後續待開發事項 🛠️

  • 路徑時空圖[已完整]
    • 目前時空圖主要基於單一起點的直線連續路段。
    • 未來擴展功能,將允許使用者選定路網中的一條特定路徑,並為該路徑生成時空圖,以更精確分析特定 O-D (起終點)的綠燈協調情況。
  • 適應度函數介面化[已完整]
    • 讓使用者選擇其他不同的評估指標。
    • 例如,未來提供選項讓使用者選擇是以「最大化通過路口數」、「最大化通過距離」等作為優化目標。
    • 允許多目標優化時,選擇不同的目標組合。
  • 不同行車方向的不同速限
    • 目前車輛速度可能是全域設定或基於路段。
    • 允許各路段設定不同的期望速限。

授權條款 📜

本專案程式碼採用 GNU Affero General Public License (AGPL) version 3.0 或其後續版本授權。

簡單來說,這意味著您可以:

  • 自由地執行本程式。
  • 自由地研究本程式的運作方式,並根據您的需求修改它 (源碼可訪問是前提)。
  • 自由地重新發佈本程式的副本。
  • 自由地將您修改後的版本發佈給其他人。

AGPL 與標準 GPL 的主要區別在於,如果您在網路上提供本程式(例如作為一個網路服務),您也必須向網路使用者提供源碼的訪問權限。這確保了即使軟體僅作為服務提供,使用者及其開發者社群仍能保有修改和再發佈的自由。

因此,您需要遵守 AGPL 的條款,主要包括:

  • 當您發佈本程式或其衍生作品時(包括透過網路提供服務),必須以同樣的 AGPL 條款授權。
  • 您必須提供源碼的可訪問性給所有與該軟體互動的使用者。
  • 您需要保留原始的版權聲明和 AGPL 授權聲明。

有關 AGPL 條款的完整詳情,請參閱 GNU Affero General Public License v3.0

About

時空圖時差優化工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages