文章目錄
Simple Ant Colony Optimisation (SACO)
- 簡單蟻羣優化
- 蟻羣優化問題就是可以當成求解兩個點之間最短距離的優化問題。有很多的節點,其中一個是出發點一個是目的地,從出發點出發經過那些到達目的地的距離最短的問題。打個比方:從上海到北京,如果經過新疆,那麼這個路線繞的太遠了,就不是最短路徑。
- SACO中每兩個地方(節點)之間,存在兩個變量,一個是距離一個是信息素,距離是計算損失的,就是通過計算螞蟻走過的不同節點之間的總距離,來判斷這個螞蟻選擇的路線是否是比較短(優)的,信息素則是螞蟻在面臨選擇哪一個節點前進時的唯一指示,信息素濃度高的螞蟻選擇的概率大。
- 類似遺傳算法,蟻羣算法也是有一個種羣的,其中有K只螞蟻,然後每一隻螞蟻都會從出發點到目的地,只是走的路程會不同。他們都是基於同樣的信息素進行概率選擇路徑
- 螞蟻如何選擇不同的節點:
- 每一代結束之後,信息素如何更新:
- 第一步,之前殘留的信息素會揮發一些:
- 螞蟻走過的路徑上,螞蟻會釋放新的信息素:
可以看到,總共有只螞蟻,某一隻螞蟻假設走過從節點1到節點2的路徑,那麼就會在這個路徑上留下的信息素,可以看到這個留下的信息素是與這個螞蟻總共走完的路程成反比。可以理解爲,一隻螞蟻體內只有100的信息素,假設螞蟻走的總距離是200,那麼螞蟻就只能給每一條邊增加0.5的信息素,假設螞蟻走的總距離是50,那麼每一條邊釋放的信息素就是2,更加濃郁。這就是一種啓發式信息,總路程越短的螞蟻釋放的信息素濃度高,這樣他走的路就會更大概率被後一代的螞蟻重複選擇。
- 第一步,之前殘留的信息素會揮發一些:
Ant System(AS)
- 螞蟻系統。
- 螞蟻在選擇走向那個節點的時候,概率計算方法變化了:
AS的轉移概率計算(2種)
- 第一種就是下面的,增加了一個新的參數,這個參數是根據距離計算的
- 第二種計算方法是類似的:
AS的信息素更新(4種)
pheromone evaporation(信息素蒸發)
pheromone update(信息素更新)
- 前三種採用的公式與SACO相同,但是細節不同:
三個方法的區別就是更新的數值,但是具體的區別也很小。 - 第四種是採用了精英策略的更新方法:
可以看到,公式多了一項。其實最直觀的理解就是,用上面三種中的Ant-Cycle AS的方法計算完了之後,在重複吧種羣中最聰明的螞蟻釋放的信息素再計算一遍。(其實嚴格來說不算是再計算一遍,但是確實是相當於讓精英螞蟻釋放的信息素的濃度相比其他普通螞蟻的高)。
其實可以看的出來,這是一種強化本地搜索,弱化全局搜索的功效。但是可以提高收斂速度。
Ant Colony System(ACS)
- 這個就是現在常說的蟻羣算法
transition probability
- 這個就是螞蟻選擇哪一個節點前進的概率:
可以看到兩個計算概率的公式,這個是依照概率選擇的,如果概率r小於事先設定的,那麼就選擇上面的方法,上面的方法是貪婪算法,就是一定選擇信息素濃度最高的那一個路徑;反之選擇了下一種方法,那麼就是跟AS一樣的概率方法,不過仔細觀察可以發現,AS的公式中的在ACS中沒有了。
pheromone update
locally update rules
- 這個雖然叫做本地更新規則,但是其實可以看成pheromone蒸發的一種改進。
因爲信息素會不斷的蒸發,假設某一個路徑連續幾代都沒有螞蟻走過,那麼信息素不斷蒸發,會趨近於0,那麼將來就再也沒有螞蟻可能走這條路了,所以這裏設置了一個比較小的常數,這樣可以保證信息素趨近於而不是0,從而保證信息素被選擇的概率存在
globally update rule
- 雖然叫做全局更新規則,但是其實跟AS中的信息素更新也有些類似,又有不同。有點像是,僅僅讓精英螞蟻釋放信息素,其他螞蟻不能參與信息素的更新當中的感覺。
可以ACS中不管是local還是global,都有一個蒸發係數這樣的參數,然後全局搜索只考慮搜索到的最優策略(可能是當前代的最優結果,也可能是所有代中的最優)。