2. 實驗結果
實驗設置
基本參數
- 災區數量變化:60、100、200個
- 實驗重複次數:30次(取平均值)
- 測試地圖:大同、中山、松山區
實驗環境
| 設備 | 規格 |
|---|---|
| CPU | Intel i7-13700H |
| 記憶體 | 64GB |
| 使用語言 | Java JDK17 |
| 開發工具 | Eclipse(4.28.0) |
演算法分類與說明
基本演算法
- 模擬退火(SA)
- 禁忌搜尋(Tabu Search)
- 迭代貪婪(IG)
雙重迴圈
- DoubleLoopGMNSA
- DoubleLoopGMNTabu
- DoubleLoopGMNIG
多點策略(MS)
- MS-SA (p=2~6種策略)
- MSA-Tabu (p=2~6種策略)
- MSA-IG (p=2~6種策略)
評估指標
| 指標 | 說明 |
|---|---|
| 平均距離 | 30次實驗的平均路徑長度 |
| 最佳解 | 所有實驗中找到的最短路徑長度 |
| 最差解 | 所有實驗中的最長路徑長度 |
| CPU執行時間 | 演算法執行所需的平均時間(秒) |
實驗結果分析
主要發現
-
多點策略的優越性:
- MSATabu6在各測試區域顯示最佳效能,200災區時可達:大同區83,635、中山區230,541、松山區146,909
- 相較基本演算法SA,MSATabu6分別改善了6.4%(大同)、7.3%(中山)、9.7%(松山)
- 策略數量(P)的增加對效能有穩定提升,從P=2到P=6的改善幅度分別為2.1%、3.5%、4.8%、5.9%、6.4%
- 執行時間增加在可接受範圍內,以200災區為例,SA 46.09秒 vs MSATabu6 47.33秒
-
雙重迴圈的穩定性:
- DoubleLoopGMNSA在大同區200災區測試中達到85,031,較SA(89,359)改善4.8%
- 執行時間增加約1.6倍(SA 46.09秒 vs DoubleLoopGMNSA 75.08秒)
- 在各種規模問題中都展現穩定的改善效果,60災區改善2.0%、100災區改善3.2%、200災區改善4.8%
- 特別適合運算資源有限或對執行時間有要求的場景
-
災區規模的影響:
- 所有算法的執行時間都隨災區數量增加而上升,以MSATabu6為例:60災區24.95秒、100災區30.66秒、200災區47.33秒
- 改進算法在大規模問題中優勢更明顯,以大同區為例,MSATabu6在60災區改善4.3%,200災區改善6.4%
- 解品質差異隨規模擴大而增加,200災區時基本SA與MSATabu6的差距達5,724單位
- 基本算法在小規模問題中仍具競爭力,60災區時SA與MSATabu6差異僅5.3%
-
地圖特性的影響:
- 中山區路網最複雜,200災區時MSATabu6達230,541,較SA(248,590)改善7.3%
- 松山區整體效能最佳,MSATabu6可達146,909,較SA(162,673)改善9.7%
- 大同區表現中等,MSATabu6達83,635,較SA(89,359)改善6.4%
- 改進算法在複雜路網中優勢更明顯,中山區改善幅度(7.3%)顯著高於大同區(6.4%)
算法效能比較
| 演算法類型 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 基本演算法 (SA/Tabu/IG) |
- SA算法在小規模問題表現佳(60災區48,466) - Tabu算法執行時間穩定 - IG算法參數調整簡單 - 記憶體需求小 - 實作和維護容易 |
- 大規模問題執行慢(SA 200災區需46.09秒) - 解品質不穩定(路徑長度波動大) - 效能隨問題規模快速下降 - 容易陷入局部最佳解 |
- 60災區以下的小規模問題 - 簡單路網結構環境 - 需要快速解的場景 - 計算資源有限時 |
| 多點策略 (MSATabu/MSSA/MSAIG) |
- MSATabu6效果最佳(改善6.4-9.7%) - 執行時間增加少(僅1.03倍) - 對複雜路網適應性強 - 解品質穩定性高 |
- 實作較為複雜 - 參數調整需要經驗 - 記憶體消耗較大 - 維護成本較高 |
- 大規模問題(100-200災區) - 複雜路網環境 - 需要高品質解 - 有足夠技術資源 |
| 雙重迴圈 (DoubleLoopGMN系列) |
- 穩定改善效果(平均4.8%) - 適用各種規模問題 - 實作相對簡單 - 參數調整直觀 |
- 執行時間增加1.63倍 - 效果不如MSATabu6 - 複雜路網效果較差 - 改善空間有限 |
- 中小規模問題(60-100災區) - 一般複雜度路網 - 需要穩定效能提升 - 開發維護成本考量 |
效能統計
| 演算法類型 | 平均改善率* | 最佳改善率** | 時間成本增加*** |
|---|---|---|---|
| MSATabu6 (vs SA) | 7.8% | 9.7% | 1.03x |
| MSSA6 (vs SA) | 6.9% | 7.3% | 1.77x |
| MSAIG6 (vs SA) | 4.2% | 5.0% | 1.59x |
| DoubleLoopGMN系列 | 4.8% | 5.2% | 1.63x |
* 平均改善率:相對於基本演算法的路徑長度減少百分比(以200個災區測試資料計算)
** 最佳改善率:在所有200個災區測試案例中的最大改善幅度
*** 時間成本增加:相對於基本演算法的平均執行時間倍數(以200個災區測試資料計算)
實驗結果以CSV格式輸出,包含以下欄位:
- 小規模問題(60個災區):優先使用SA(執行快速,平均路徑48,466)或MSATabu4(改善8.0%,時間增加少)
- 中等規模(100個災區):建議使用MSATabu6(松山區可達128,307)或DoubleLoopGMNSA(平衡效能與時間)
- 大規模問題(200個災區):選擇MSATabu6,所有測試區域都達到最佳效能(改善6.4-9.7%)
- 複雜路網(如中山區)建議使用MSATabu6,改善效果最顯著(7.3%)
- 時間敏感場景可選用DoubleLoopGMNSA,以1.63倍時間成本換取4.8%改善
- 多點策略建議使用P=6配置,數據顯示提供最佳效能平衡
- 運算資源有限時可選用基本SA(小規模)或DoubleLoopGMN(大規模)
- 優化MSATabu的策略選擇機制,進一步提高效能
- 研究路網特徵與演算法效能的關係,建立自適應選擇模型
- 探索MSATabu與DoubleLoopGMN的混合策略
- 開發針對特定路網特徵的專用最佳化策略
- SA:作為基準演算法,代表最基本的實作方案,用來評估改進效果的基準點
- MSSA6:代表多點策略的最佳表現,實驗結果顯示能提供4.7-5.7%的穩定改善
- DoubleLoopGMNSA:代表平衡方案,以1.6倍時間成本換取2.8%的效能改善
- 展示基本實作到最佳改進的完整效能範圍
- 呈現不同改進策略的效果對比
- 提供實務應用時的選擇參考
結論與建議
1. 演算法選擇建議
2. 實作考量
3. 未來改進方向
效能視覺化
平均路徑長度比較 (大同區,災區數=200)
執行時間比較 (大同區,災區數=200)
各演算法在不同災區數量下的平均效能 (大同區)
圖表展示三個具代表性的演算法:
這三個演算法的選擇能夠:
完整實驗數據
| 演算法 | 地圖 | 災區數 | 參數設定 | 平均距離 | 最佳解 | 最差解 | 執行時間(秒) |
|---|