複製鏈接
請複製以下鏈接發送給好友

人工魚羣算法

鎖定
人工魚羣算法是指在一片水域中,魚往往能自行或尾隨其他魚找到營養物質多的地方,因而魚生存數目最多的地方一般就是本水域中營養物質最多的地方,人工魚羣算法就是根據這一特點,通過構造人工魚來模仿魚羣的覓食、聚羣及追尾行為,從而實現尋優。
中文名
人工魚羣算法
外文名
artificial fish swarms algorithm (AFSA)
典型行為
覓食行為
特    點
具有較快的收斂速度
停止條件
均方差小於允許的誤差

人工魚羣算法算法描述

以下是魚的幾種典型行為:
(1)覓食行為:一般情況下魚在水中隨機地自由遊動,當發現食物時,則會向食物逐漸增多的方向快速游去。
(2)聚羣行為:魚在遊動過程中為了保證自身的生存和躲避危害會自然地聚集成羣,魚聚羣時所遵守的規則有三條:分隔規則:儘量避免與臨近夥伴過於擁擠;對準規則:儘量與臨近夥伴的平均方向一致;內聚規則:儘量朝臨近夥伴的中心移動。
(3)追尾行為:當魚羣中的一條或幾條魚發現食物時,其臨近的夥伴會尾隨其快速到達食物點。
(4)隨機行為:單獨的魚在水中通常都是隨機遊動的,這是為了更大範圍地尋找食物點或身邊的夥伴。

人工魚羣算法算法特點

(1)具有較快的收斂速度,可以用於解決有實時性要求的問題;
(2)對於一些精度要求不高的場合,可以用它快速的得到一個可行解
(3)不需要問題的嚴格機理模型,甚至不需要問題的精確描述,這使得它的應用範圍得以延伸。

人工魚羣算法停止條件

(1) 判斷連續多次所得的均方差小於允許的誤差;
(2)判斷某個區域的人工魚羣的數目達到某個比率;
(3)連續多次所獲取的值均不能超過已找到的極值。
(4)迭代次數達到預設次數

人工魚羣算法Python代碼實現

定義目標函數並執行人工魚羣算法
def func(x):
    x1, x2 = x
    return 1 / x1 ** 2 + x1 ** 2 + 1 / x2 ** 2 + x2 ** 2


from sko.AFSA import AFSA

asfa = AFSA(func, n_dim=2, size_pop=50, max_iter=300,
            max_try_num=100, step=0.5, visual=0.3,
            q=0.98, delta=0.5)
best_x, best_y = asfa.fit()

人工魚羣算法應用領域

(1)電力系統規劃
電力系統規劃的重要組成部分是輸電網規劃,其目的是根據規劃期間的負荷增長及電源規劃方案構建相應的最佳電網結構,來滿足經濟可靠地輸送電能的要求。人工智能算法的快速發展為解決輸電網規劃問題提供了新的方法。人工智能算法適於求解組合優化問題或者目標函數與一些約束條件不可微的優化問題。人工魚羣算法通過引入禁忌搜索( Tabu)和對人工魚部分行為的改進,使人工魚在探尋過程中具有記憶能力,對探索過的位置設為禁區,從而避免重複搜索;同時記錄禁區中的一些優良狀態,保證搜索的高效性和多樣性,進而通過人工魚羣算解決輸電網規劃問題的速度和效率。
(2)多級梯階物流中轉運輸系統優化
在關於此問題的優化模型中,需要同時考慮變量的約束條件和求解精度,將所需要求解的空間離散化,把變量空間轉變為合適大小的網格,每一級中轉站的最優位置將在限定區域內的某些已知點上選取,該問題向量維數很高,用人工魚羣算法建立各級中轉站與網格點關係矩陣和相鄰兩級中轉站間的關係矩陣來消除約束條件和壓縮變量數,通過對算法的一些改進使其更適合於該問題的優化,應用結果表明該算法在處理多級梯階物流中轉運輸 [1]  系優化問題效果顯著。
參考資料
  • 1.    曾蒙迪.人工魚羣算法的簡介及應用.湖北武漢:《信息與電腦(理論版)》,2011