智慧型控制 Intelligent Control

蟻群最佳化

原講義本頁只有一個連到 Dorigo 蟻群最佳化網站的連結;以下說明、公式與互動示範都是補充。

蟻群最佳化(Ant Colony Optimization,ACO)由 Marco Dorigo 在 1992 年提出,靈感來自螞蟻找食物的行為。螞蟻視力很差,卻能找出巢與食物之間的最短路徑,靠的是費洛蒙(pheromone):螞蟻走過會留下費洛蒙,後面的螞蟻傾向走費洛蒙濃的路,而費洛蒙會隨時間蒸發。

巢食物短路徑:來回快 → 單位時間經過的螞蟻多 → 費洛蒙累積多長路徑:費洛蒙少,又不斷蒸發 → 越來越少螞蟻走線的粗細=費洛蒙濃度

著名的雙橋實驗:巢與食物之間有一長一短兩條路。一開始螞蟻隨機選,但走短路的螞蟻來回比較快,單位時間內短路上經過的螞蟻多、累積的費洛蒙也多;越多螞蟻因此選短路,又留下更多費洛蒙——這種正回饋加上蒸發「遺忘」舊資訊,最後幾乎所有螞蟻都走短路。

Ant System:解旅行推銷員問題 Ant System for the TSP

旅行推銷員問題(TSP):給定 \(n\) 個城市,找一條每個城市剛好經過一次、最後回到起點的最短路線。城市一多,可能的路線數 \((n-1)!/2\) 爆炸性成長(10 個城市就有 181 440 條),無法一一比較。Ant System 讓 \(m\) 隻螞蟻反覆建構路線:

  1. 每隻螞蟻從隨機城市出發,在城市 \(i\) 時,以下列機率選擇還沒去過的城市 \(j\): $$p_{ij} = \frac{\tau_{ij}^{\,\alpha}\,\eta_{ij}^{\,\beta}}{\sum_{l \in \text{未去過}} \tau_{il}^{\,\alpha}\,\eta_{il}^{\,\beta}},\qquad \eta_{ij} = \frac{1}{d_{ij}}$$ 其中 \(\tau_{ij}\) 是邊 \(ij\) 上的費洛蒙,\(\eta_{ij}\) 是「能見度」(距離越近越有吸引力),\(\alpha\)、\(\beta\) 決定兩者的相對比重。
  2. 所有螞蟻走完一輪後,費洛蒙先蒸發,再由每隻螞蟻在自己走過的邊上留下費洛蒙,路線越短留下越多: $$\tau_{ij} \leftarrow (1-\rho)\,\tau_{ij} + \sum_{k=1}^{m} \Delta\tau_{ij}^{k},\qquad \Delta\tau_{ij}^{k} = \begin{cases} Q/L_k, & \text{螞蟻 } k \text{ 走過邊 } ij \\ 0, & \text{其他} \end{cases}$$ \(\rho\) 是蒸發率,\(L_k\) 是第 \(k\) 隻螞蟻的路線總長。
  3. 重複到指定的輪數,記錄找到過的最短路線。
自製動畫(依控制理論數值模擬)

和 GA、PSO 一樣,ACO 也是以族群為基礎、帶隨機性的最佳化方法;但它特別適合「路徑、排程、組合」這類離散問題,在控制領域可用於機器人路徑規劃、生產排程,也有人用來搜尋 PID 或模糊控制器的參數。

延伸閱讀:Ant Colony Optimization(M. Dorigo)↗(原講義連結的舊網址已改為這個目錄)。