吳菲釩 吳湘華

摘要:文章通過研究傳統免疫算法和混沌優化理論,通過對幾種常用的混沌映射和隨機函數性能進行大量的比對分析,選取Logistics映射作為混沌優Matlab進行仿真模擬,研究結果表明,改進后的基于混沌的免疫算法具有更高的搜索精度和更快的收斂速度。
關鍵詞:免疫算法;混沌映射;種群更新;搜索效率;收斂速度
中圖分類號:TP391? ? 文獻標識碼:A
文章編號:1009-3044(2023)31-0064-03
開放科學(資源服務)標識碼(OSID)
0 引言
傳統免疫算法在搜索空間的探索和利用方面存在一些局限性,隨著問題規模的不斷擴大,算法的效率和精度也越來越難以滿足實際需求。將混沌理論引入免疫算法,以期提高算法的全局搜索能力和收斂速度[1]。混沌理論是一種新的數學分支,可以描述非線性系統的復雜性和不確定性,其重要特征是豐富的非周期性運動和靈敏度依賴于初值。將混沌理論融入免疫算法中,可以有效地增強算法的隨機性和多樣性,以適應更加復雜的優化問題和任務。
1 傳統免疫算法和混沌優化簡介
傳統免疫算法的基本思想是利用一種免疫系統中具有自我適應機制的防御能力,對一定范圍內的個體進行分類、篩選、優化和選取。該算法的計算框架主要包含外周識別、克隆擴增、抗體選擇、抗體變異和免疫刺激這五個環節。該算法擁有自適應性、多樣性和并行性等獨特特性,具有全局搜索能力強、收斂速度較快的優點,并且適用于解決復雜多模態優化問題,例如函數優化、圖像識別、分類問題和數據挖掘等。然而,傳統免疫算法對參數調整非常敏感[2]等。另外,該算法并不是所有問題的最佳解決方案,針對某些特定問題可能存在更優的解決方案[3]。
混沌優化算法是一種基于混沌理論的新型優化方法。該算法源于混沌理論中的“蝴蝶效應”,使用隨機化的方式在搜索解空間中尋求最優解。混沌優化算法的核心思想是基于混沌現象的隨機性和確定性。它最初是由美國數學家James Yorke所提出,在此基礎上,又有很多學者對其進行了改進和發展。混沌優化算法的運行過程比較簡單,首先需要定義一個優化函數,然后確定混沌映射、參數及優化方案等,接著就可以對目標函數進行優化。混沌優化算法能夠更快地找到全局最優解,進而提升了算法的搜索精度和收斂速度[4]。
2 傳統免疫算法的實現
2.1 傳統免疫算法實現過程中幾個因素說明
1) 編碼選擇:采用二進制編碼能夠很好地控制求解精度,其主要缺點有:一是在求解過程中要反復進行二進制與十進制之間的相互轉換,當十進制轉換為二進制,數據會存在一定失真;二是當函數自變量多個值時,要采用多個二進制矩陣表示。采用實數編碼不需要進行數制的轉換,能夠用實數矩陣方便地表示有多個自變量的情形。Matlab中,double類型的實數為64位,具有較高的精度,通過系統函數roundn控制求解精度,為避免初始種群精度達不到要求,可以先用二進制編碼初始化,再將二進制種群轉化為十進制實數初始種群。
2) 函數句柄:Matlab中,采用函數句柄可以方便地求取不同的測試函數的函數值,不需要為每一個測試函數編寫相應的代碼。
2.2 傳統免疫算法主要算子描述與實現
1) 算子2-1:種群隨機初始化initrand
種群初始化是免疫算法中最基本的算子之一,它負責初始化一定規模的種群。初始種群中的個體盡可能地保留搜索空間的多樣性和充分覆蓋特征空間,以便后續的算子能夠對種群進行有效的優化。
2) 算子2-2:抗體濃度算子density
抗體濃度是表示種群多樣性的重要性能指標,其值過高不利于全局尋優,本文基于歐幾里得距離求解抗體濃度。
3) 算子2-3:選擇算子selection
主要用于免疫選擇,克隆抑制求最優個體等操作,在免疫選擇中主要負責選取具有高激勵度的抗體,以保留優秀基因并放棄劣質基因。
4) 算子2-4:隨機變異算子randmutation
隨機變異算子通過rand函數隨機產生實數,進行mapping映射后,替換進行變異的個體,引入變異算子有利于更好的搜索解空間。
5) 算子2-5:樣本特征算子
樣本特征值算子用于保存樣本空間最小值、最大值、中位數、平均數、眾數、極差、方差、標準差等。
6) 算子2-6:映射算子mapping
映射算子可將某一區間范圍的矩陣映射成另一取值范圍的矩陣,有利于不同取值范圍的矩陣互相計算與轉化。
7) 算子2-7:計算收斂代數算子judgeiter
免疫算法中的最優抗體會隨著迭代次數的增加而不斷變化,將最優抗體親和度作為判定收斂代數的一個標準,將抗體種群的方差作為判定收斂代數的另外一個標準。當最優抗體親和度不再變化,同時抗體種群方差小于某一值時,研究者認為算法收斂。
2.3 傳統免疫算法仿真分析與結論
在Matlab中,選用如下測試函數行仿真實驗,并做出分析:
f(x)=x+10×sin(5×x)+7×cos(4×x),其中x取值范圍為[-10,10]
通過對傳統免疫算法多次運行,發現初始種群大小對收斂代數有明顯影響。種群大小分別取50、100、200時,各運行50次,每次實驗使用initrand函數隨機產生初始種群。當種群大小為50時,平均收斂代數是8.08,當種群大小為100時,平均收斂代數是6.00,當種群大小為200時,平均收斂代數是5.46。
通過對傳統免疫算法多次運行,發現初始種群大小對收斂代數有明顯影響。種群大小越大,表示搜索越大,收斂越快。如果初始種群中出現靠最優值較近的個體,收斂也會加快。
3 基于混沌的免疫算法改進
3.1 基于混沌的免疫算法簡介
基于混沌與免疫算法的優化方法將混沌理論與免疫系統的選擇性優化能力相結合,平衡多樣性和收斂性,以提高算法的全局搜索能力和搜索精度[5]。該算法不僅結合混沌優化算法的優勢,還融合了免疫算法的自適應性和解決高維優化問題的能力,因此在實際應用中表現出色。基于混沌免疫算法的基本思想是設計一個混沌運動跟隨免疫算法的運動過程,使算法產生更多的多樣性[6]。在迭代尋優階段,算法通過免疫學的選擇、進化和變異等機制,逐步優化抗體,直到收斂為止。最終得到全局較優解。
3.2 混沌算子的優選
混沌優化算法(Chaos Optimization,CO) 是一種基于混沌理論的全局優化算法,它也被稱為混沌搜索算法(Chaos Search,CS) 。該算法的思想源自混沌現象中表現出的隨機性和確定性。混沌優化算法的優點有全局尋優能力強、搜索精度高、收斂速度快等。但在解決非線性問題和高維優化問題時,可能會陷入局部最小值點。混沌映射通常用于生成混沌序列,具有非線性、對初值敏感依賴性、遍歷性、隨機性、長期不可預測性、軌道不穩定性和分叉等主要特征,并且其生成的混沌序列是一種隨機序列。
常見的混沌映射有很多,本文主要考慮了Logistic映射、PWLCM映射、Tent映射[7]等。取x0=rand(1),u=4,生成樣本空間為10 000的Logstic混沌序列,進行10 000次運算,Logistic映射樣本空間的平均方差為0.122 498。取x0=rand(1),p=0.4,生成樣本空間為10 000的PWLCM混沌序列,進行10 000次運算,PWLCM映射樣本空間平均方差為0.083 332。取x0=rand(1),alfa=0.4,生成樣本空間為10 000的Tent混沌序列,進行10 000次運算,Tent映射樣本空間平均方差為0.083 266。生成樣本空間為10 000的Tent混沌序列,進行10 000次運算,隨機函數rand平均方差0.081 666。本文選擇選擇Logstic映射,其方差較大,具有更好的搜索空間分布。Logistic映射是一種常見的非線性映射。其數學表達式見公式(1) 。
x(n+1)=u×x(n)×(1-x(n))? ? ? ?(1)
其中u為混沌參數,u的取值范圍為(0,4]。x(n)為映射變量,取值范圍為(0,1),x(n)不能為0、0.25、0.5、0.75、1.0。
3.3 混沌迭代方式的選擇
選擇Logistic映射優化初始種群可以采用如下三種方式:
1) 首先產生一個隨機矩陣,對隨機矩陣中的各元素進行若干次混沌迭代,取混沌序列最后一個數代替該元素。
2) 先產生一個隨機數,然后進行混沌迭代,得到一個混沌矩陣;截取該混沌序列前popsize個數得到一個全新矩陣。
3) 從2) 中混沌矩陣中隨機取popsize個數得到全新矩陣。
將上述三種方式生成的矩陣進行比較:矩陣A為隨機矩陣,矩陣B通過方式1)求得,矩陣B1通過方式2)求得,矩陣B2通過方式3)求得。在HPC高性能集群平臺,樣本容量為50,不同混沌迭代次數(1~10 000次)下各運行10 000次,獲得矩陣A、B、B1、B2的最小值、最大值、中位數、平均數、方差、標準差、熵等特征的平均值。對矩陣A、矩陣B、矩陣B1、矩陣B2的主要特征進行兩兩比較得到結果如表1所示。
其中X_Y表示X矩陣對應樣的本特征值小于Y矩陣對應樣的本特征值均值的數量,由上表可知矩陣B、矩陣B1、矩陣B2優于矩陣A;矩陣B優于矩陣B1,矩陣B略優于矩陣B2;矩陣B2優于矩陣B1。總的說來,矩陣B>矩陣B2>>矩陣B1>>矩陣A,對初始樣本空間采用第1) 種混沌優化效果更好。
3.4 混沌優化初始種群算子描述與實現
函數名:Logistic。功能:通過混沌隨機產生初始種群。輸入:矩陣A,混沌參數u,混沌迭代次數MaxIter。輸出:混沌矩陣A。具體執行過程:1) 建立循環由1至MaxIter;2) 通過Logistic映射混沌迭代MaxIter代,返回矩陣A。
2.5 種群隨機初始化和種群混沌初始化對比主程序描述與實現
具體實現過程:步驟1:設定算法的參數;步驟2:調用initrand函數得到隨機初始種群poprand,并確保poprand中不出現Logistic混沌優化中不能出現的值(0,0.25,0.5,0.75,1) ;步驟3:對步驟2生成的隨機初始種群poprand,調用Logstic函數進行Logstic混沌迭代,得到混沌初始種群popchaos;步驟4:判斷是否達到最大迭代代數。如果是,則結束循環,并執行步驟7;否則繼續執行步驟5;步驟5:對隨機初始種群poprand和混沌初始種群popchaos分別進行激勵度計算、免疫選擇、免疫抑制,得到抑制種群inhipoprand和抑制種群inhipopchaos,并計算這兩個種群的特征;步驟6:分別刷新種群poprand和種群popchaos,返回步驟4;步驟7:當種群迭代次數到達設定的值時停止迭代;步驟8:根據步驟5的數據,調用judgeiter函數分別計算隨機初始種群poprand和混沌初始種群popchaos的收斂代數。
4 傳統免疫算法與混沌優化免疫算對比仿真與分析
本文采用對比混沌改進后的免疫算法與傳統免疫算法的收斂速度來評估免疫算法的優化效果。當最優個體和最優親和度趨于某一極小值時,即可判定免疫算法已經收斂。分別對傳統免疫算法和根據混沌種群初始化改進后的免疫算法進行運算分析。
1)選擇測試函數f1(X1,X2) =(3/(0.05+(X12+X22)2))+X12+X22,手工運行5次,每次用initrand函數產生一個poprand隨機初始化種群,對poprand種群使用Logistic函數混沌迭代100次(u=4.0) 生成popchaos混沌優化初始種群,進行免疫操作,使用隨機初始種群時,免疫算法平均收斂代數為22.6。使用混沌優化初始種群時,免疫算法平均收斂代數為17.8。
2)選擇測試函數f(x)=x+10×sin(5×x)+7×cos(4×x),在HPC高性能集群中對主函數進行10 000次運算,主要參數設置同表2.1,每次用initrand函數產生一個poprand隨機初始化種群,對poprand種群使用Logistic函數混沌迭代10 000次(u=4.0) 生成popchaos混沌優化初始種群,進行免疫操作。對運行情況進行統計分析,運行過程中,采用混沌優化種群的迭代次數小于隨機種群的情形為6 147次。
實驗結果表明,經過混沌優化后的種群比隨機函數產生的種群具有更好的搜索空間,能更快收斂。
5 結束語
本文首先對目前國內外有關傳統免疫算法和混沌優化的研究狀況進行了簡單介紹,分析比較常見的幾種混沌映射與隨機函數產生初始種群的優越性,并選擇合適的混沌優化算子對初始化種群,在免疫算法的基礎上,基于混沌的相關原理對其進行優化,提高了免疫算法效率。同時為驗證改進后免疫算法的改進效果,選擇了合適的測試函數進行仿真實驗,并對結果歸納與分析。但論文還存在著些許不足及有待進一步探索與研究的內容,如對于該算法的研究與優化仍有許多工作要做,在實際應用中需要根據具體問題進行優化參數的選擇、算法的改進和優化策略的設計,以期在更多的實際問題中發揮該算法的優勢和應用價值。如何在變異操作等其他免疫操作中合理運用混沌相關的理論,使得已改進的算法擁有更高的效率等。
參考文獻
[1] 王瓊,呂微,任偉建.免疫遺傳算法及在優化問題中的應用綜述[J].計算機應用研究,2009,26(12):4428-4431.
[2] 武曉朦, 袁榕澤, 李英量,等.基于新冠病毒群體免疫算法的有源配電網優化調度[J].系統仿真學報,2023(5):1-10.
[3] 王小霞,王丹,張再軍.求解約束多目標區間優化問題的人工免疫算法[J].貴州大學學報(自然科學版),2022,39(5):94-99.
[4] 張春慨,徐立云,邵惠鶴.改進混沌優化及其在非線性約束優化問題中的應用[J].上海交通大學學報,2000,34(5):593-595,599.
[5] 包曉曉,葉春明,計磊,等.改進混沌煙花算法的多目標調度優化研究[J].計算機應用研究,2016,33(9):2601-2605.
[6] 王瑞琪,張承慧,李珂.基于改進混沌優化的多目標遺傳算法[J].控制與決策,2011,26(9):1391-1397.
[7] 陳志剛,梁滌青,鄧小鴻,等.Logistic混沌映射性能分析與改進[J].電子與信息學報,2016,38(6):1547-1551.
【通聯編輯:朱寶貴】