免疫算法是受生物免疫系統的啟發而推出的一種新型的智能搜索算法。它是一種確定性和隨機性相結合並具有“勘探”與“開采”能力的啟發式隨機搜索算法。
- 歷史發展
1958年,澳大利亞學者Burnet率先提出了與免疫算法(Immune Algorithm,IA)相關的理論--克隆選擇原理。
1973年,Jerne提出免疫系統的模型,他基於Burnet的克隆選擇學說,開創了獨特型網絡理論,給出了免疫系統的數學框架,並采用微分方程建模來仿真淋巴細胞的動態變化。
1986年,Farmal等人基於免疫網絡學說理論構造出的免疫系統的動態模型,展示了免疫系統與其他人工智能方法相結合的可能性,開創了免疫系統研究的先河。
幾十年來,免疫算法的研究與發展已涉及非線性最優化、組合優化、控制工程、機器人、故障診斷、圖形處理等諸多領域。
- 免疫算法與生物免疫系統概念的對應關系
生物免疫系統 | 免疫算法 |
抗原 | 優化問題 |
抗體(B細胞) | 優化問題的可行解 |
親和度 | 可行解的質量 |
細胞活化 | 免疫選擇 |
細胞分化 | 個體克隆 |
親和度成熟 | 變異 |
克隆抑制 | 克隆抑制 |
動態維持平衡 | 種群刷新 |
- 免疫算法流程
免疫算法的算法流程如下所示:
1、基本步驟:
(1)首先進行抗原識別,即理解代優化問題,構造合適的親和度函數及各種約束條件。
(2)生成初始種群
(3)對種群中的每一個個體進行親和度評價
(4)判斷算法是否滿足終止條件,如果滿足則算法終止,輸出計算結果;否則,繼續尋優計算
(5)計算抗體濃度和激勵度
(6)進行免疫處理,包括免疫選擇、克隆、變異和克隆抑制
(7)種群刷新,以隨機生成的新抗體替代種群中激勵度較低的抗體,形成新一代抗體,轉步驟(3)
2、關鍵參數
抗體種群大小:10~100,一般不超過200
免疫選擇比例:一般取抗體種群大小的10%~50%
抗體克隆擴增的倍數:一般取5~10倍
種群刷新比例:每代更新的抗體一般不超過抗體種群的50%
3、算子
(1)親和度評價算子
通常函數優化問題可以用函數值或對函數值的簡單處理(如取倒數、相反數等)作為親和度評價,而對於組合優化問題或其它問題,則需具體問題具體分析,通常是一個函數:aff(x)。
(2)抗體濃度評價算子
抗體濃度通常定義為:
其中,N為種群規模,S(pi,pj)為抗體間的相似度,可表示為:
其中,pi為種群中的第i個抗體,aff(pi,pj)為抗體i與抗體j的親和度,δs為相似度閾值。
抗體間親和度的計算方法主要包括基於抗體和抗原親和度的計算方法、基於歐式距離的計算方法、基於海明距離的計算方法、基於信息熵的計算方法等。
1、基於歐式距離的抗體間親和第計算方法
對於實數編碼的算法,抗體間親和第通常可以通過抗體向量之間的歐式距離來計算:
其中,pik為抗體i的第k維度,L是抗體編碼的總維數。
2、基於海明距離的抗體間親和度計算方法
對於基於離散編碼的算法,衡量抗體-抗體親和度最直接的方法就是利用抗體串的海明距離:
式中:
(3)激勵度計算算子
抗體激勵度是對抗體質量的最終評價結果,通常親和度大、濃度低的抗體會得到較大的激勵度。抗體激勵度的計算通常如下所示:
其中,sim(pi)為抗體pi的激勵度,a、b為計算參數,可以根據實際情況確定。
(4)免疫選擇算子
根據抗體的激勵度確定哪些抗體被選擇進入克隆選擇操作。一般,激勵度高的抗體更可能被選中
(5)克隆算子
克隆算子將免疫選擇算子選中的抗體進行復制。其可描述為:
其中,clone(pi)為mi個與pi相同的克隆構成的集合,mi為抗體克隆數目。
(6)變異算子
1、實數編碼算法變異算子
實數變異算子的變異策略是在變異源個體中加入一個小擾動。
其中,pi,j,m為抗體pi的第m個克隆體的第j維度,δ為定義的鄰域范圍,Pm為變異概率。
2、離散編碼算法變異算子
離散編碼算法以二進制編碼為主,其變異策略是從變異源抗體串中隨機選取幾位元,改變位元的取值(取反)。
(7)克隆抑制算子
克隆抑制算子用於對經過變異后的克隆體進行再選擇,抑制親和度低的抗體,保留親和度高的抗體進入新的抗體種群。
(8)種群刷新算子
對種群中激勵度較低的抗體進行刷新,從抗體種群中刪除這些抗體並以隨機生成的新抗體替代。