1. 程式人生 > >2018-4-8蟻群演算法---包子陽《智慧優化演算法以及Matlab實現》第五章

2018-4-8蟻群演算法---包子陽《智慧優化演算法以及Matlab實現》第五章

資料來源:

《智慧優化演算法以及matlab實現》包子陽  餘繼周 編著

第五章-----蟻群演算法

是一種元啟發式優化演算法(自己理解:就是作為群體的單位個體也就是元,在裡面充當著隨機的選擇搜尋的方向,有助於全域性勘探)

啟發:

自然界的螞蟻有能力在沒有然和提示的情況下找到從巢穴矩離食物的最短路徑。

螞蟻使用的方法策略:

螞蟻在尋找事物的時候在起走過的路徑上會釋放一種分泌物----資訊素,隨著時間的推移該物質會進行揮發,但是若是這是相對比較近的路就能會有更多的螞蟻走,有更多的資訊素

1.自然界螞蟻真實的覓食行為

(1)初始階段,環境中並沒有資訊素的遺留,螞蟻尋找事物完全是隨機選擇路徑。

(2)在各個螞蟻選擇完路徑之後,後來的螞蟻會根據感知的資訊素,挑選濃度最高的那一條路徑(因為路徑短的話,會回來的快一些,資訊素的濃度高)

舉例子:



2.人工蟻群的優化過程

人工蟻群是將具有簡單功能的工作單元看作是螞蟻。兩者都是用同樣的選擇優化機制,區別就是人工蟻群具有一定的記憶功能,能夠記憶已經返問過的節點。(就是在TSP的問題中記錄每一個訪問過的城市,以免銷售人員再次的選擇這個城市)

人工螞蟻系統與真實螞蟻系統的異同_百度文庫

https://wenku.baidu.com/view/a2e284d26bd97f192379e9b0.html



區別:


在TSP問題的人工蟻群演算法彙總,假設m只螞蟻在圖的相鄰加點間移動,從而寫作非同步的得到問題的解。妹紙螞蟻的一步轉移改由圖中的每條邊上的兩類引數決定:(1)資訊素值(2)可見度,也就是先驗值

資訊素有揮發以及增強(路徑被走)

螞蟻向下一個目標運動是通過一個隨機原則實現的,也就是運用當前所在節點儲存資訊,計算下一步可達節點的概率,並按概率細實線一步移動,如此往復,一步一步的接近最優解

3.蟻群演算法的特點:


4.蟻群演算法的TSP流程:

基本的蟻群演算法;

演算法的初始,將m只螞蟻隨機的放到n個城市,同時每隻螞蟻的禁忌表tabu的第一個元素設定為它當前所在的城市。

作為初始階段將各路徑的資訊素為一個較小的常數,然後每一隻螞蟻根據路徑的資訊素以及啟發式資訊(也就是先驗資訊,經驗之類的一些。這個例子中就是兩個城市之間的矩離)

而時刻t,螞蟻k從i到j城市的概率為




5.基於螞蟻演算法的具體實現步驟:

(1)引數初始化。令時間t=0和迴圈次數Nc=0,設定最大迴圈次數G,將m個螞蟻置於n個元素(城市),令有向圖上每一條邊(i,j)的初始化資訊量

(2)迴圈次數Nc=Nc+1

(3)螞蟻的禁忌表索引號k=1

(4)螞蟻的數目k=k+1

(5)螞蟻個體根據改路公式,選擇元素j進行前進並加入禁忌表

(6)修改禁忌表指標,即選擇好只有將螞蟻移動到新的元素,並把該元素移動到該螞蟻個體的禁忌表中

(7)若集合C中元素未遍歷完,也就是k<m則跳轉第四部,否則執行第八步

(8)記錄本次最佳路線

(9)根據公式更新每條路徑上的資訊量

(10)若滿足結束條件,也就是迴圈係數Nc>=G,則迴圈結束並輸出程式化結果,否則清空禁忌表並跳轉到第(2)步

程式的運算流程圖:


5.精英螞蟻系統

6.引數說明:

(1)資訊素啟發因子α

資訊素啟發因子α代表了資訊量對是否選擇當前路徑的影響程度,也就是反映螞蟻隨機性因素的作用的強度,α越大,螞蟻選擇以前走過的老路的可能性越大,而過小就容易陷入區域性最優

一般的是選擇【1,4】

(2)期望啟發因子β

拜師在搜尋路徑上的資訊素在知道馬阿姨選擇路徑的嚮導性,它的大小反應了蟻群在搜尋最優路徑的過程中先驗性和確定性因素的作用強度。期望啟發因子越大,螞蟻在某個區域性點上選擇區域性最短路徑的可能性就越大。

在TSP中β是先驗知識兩城市矩離的倒數的指數

一般的選在【3,5】

(3)資訊素蒸發係數ρ

1-ρ表示資訊素持久係數,ρ的範圍【0,1】

(4)螞蟻數目m

蟻群演算法是一種隨機的不確定初始的方向的智慧演算法,它是通過多隻螞蟻,多個路徑隨機的去探索的過程,然後組成群體進化過程得到最優解。

螞蟻數目的多少直接的關係到隨機的效果的好壞,一般的m的取值10-50