找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4465|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于免疫粒子群算法尋優(yōu)-智能控制技術(shù)課程設(shè)計(jì)說(shuō)明書(shū)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:276996 發(fā)表于 2018-1-17 15:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
基于免疫的粒子群算法是在免疫算法的基礎(chǔ)上采用粒子群優(yōu)化對(duì)抗體群體進(jìn)行更新,可以解決免疫算法收斂速度慢的缺點(diǎn)。
智能控制技術(shù)課程設(shè)計(jì)說(shuō)明書(shū)
基于免疫粒子群算法尋優(yōu)

學(xué)生姓名:學(xué)號(hào):
學(xué)    院:電氣與控制工程學(xué)院
專(zhuān)    業(yè):電氣工程與智能控制                       
指導(dǎo)教師:杜老師  孫老師
2018年 1 月

本文通過(guò)對(duì)生物免疫系統(tǒng)對(duì)外來(lái)抗原入侵響應(yīng)過(guò)程的研究,提出了對(duì)免疫遺傳算法的改進(jìn)方案。

并對(duì)改進(jìn)的免疫遺傳算法的步驟和有效性進(jìn)行了分析,證明了算法的收斂性。具體完成了以下研究工作:首先利用生物免疫原理中的濃度調(diào)節(jié)機(jī)制和個(gè)體多樣性保持策略以及免疫記憶功能,提出了基于相似性矢量距為選擇概率的免疫遺傳算法。該算法可以有效地克服基本遺傳算法的未成熟收斂現(xiàn)象,既可以提高抗體的相似性又可以兼顧到抗體的多樣性,為避免算法陷入局部最優(yōu)解,縮短搜索時(shí)間提供了保證。同時(shí)給出了此類(lèi)算法的一般表示形式。

最后,將改進(jìn)的免疫粒子群算法應(yīng)用于函數(shù)優(yōu)化問(wèn)題。通過(guò)實(shí)驗(yàn),確定了算法中參數(shù)的取值范圍。


第一章 緒  論
第二章 免疫算法
2.1一般的免疫遺傳算法
2.2改進(jìn)的免疫遺傳算法
2.2.1免疫記憶
2.2.2基于小生境技術(shù)和抗體濃度及適應(yīng)度的自適應(yīng)式免疫遺傳選擇策略
第三章 基于免疫的粒子群算法尋優(yōu)
3.1對(duì)已知函數(shù)的優(yōu)化
結(jié)  論
附  錄
一在MATLAB中編寫(xiě)程序代碼:
二建立目標(biāo)函數(shù)代碼:
三在MATLAB命令行窗口輸入代碼:
參考文獻(xiàn)

第一章 緒  論

生命現(xiàn)象和生物的智能行為一直為人工智能研究者所關(guān)注。而自然免疫系統(tǒng)正是人工智能方法靈感的重要源泉之一。免疫系統(tǒng)在顯示學(xué)習(xí)、適應(yīng)性、記憶機(jī)制等應(yīng)用于不同計(jì)算任務(wù)的方法方面可以給人們提供豐富的靈感和啟示。從人體免疫系統(tǒng)發(fā)展出的計(jì)算方法已經(jīng)引起許多不同領(lǐng)域廣泛的研究興趣。受人類(lèi)自然免疫系統(tǒng)的啟發(fā),現(xiàn)在已經(jīng)提出了各種人工免疫算法。人工免疫算法是模擬自然免疫系統(tǒng)功能的一種智能方法,它實(shí)現(xiàn)一種受生物免疫系統(tǒng)啟發(fā),通過(guò)學(xué)習(xí)外界物質(zhì)的自然防御機(jī)理的學(xué)習(xí)技術(shù),提供噪聲忍耐、無(wú)師學(xué)習(xí)、自組織、記憶等進(jìn)化學(xué)習(xí)機(jī)理,結(jié)合了分類(lèi)器、神經(jīng)網(wǎng)絡(luò)和機(jī)器推理等系統(tǒng)的一些優(yōu)點(diǎn),因此具有提供新穎的解決問(wèn)題的方法的潛力。它已經(jīng)成為繼神經(jīng)網(wǎng)絡(luò)、模糊邏輯推理和進(jìn)化計(jì)算后人工智能的又一研究熱點(diǎn)。

思維進(jìn)化算法是模擬人類(lèi)思維進(jìn)化過(guò)程的一種新型進(jìn)化算法,其中的趨同與異化的概念對(duì)于目前正在大量廣泛研究的人工免疫算法有著重要的啟示。

根據(jù)人工免疫和思維進(jìn)化的特點(diǎn),本文提出了人工免疫思維進(jìn)化算法。該算法借鑒了思維進(jìn)化中的上述特點(diǎn),引入了趨同半徑和異化半徑的概念,這樣抗體根據(jù)克隆擴(kuò)增和受體編輯的原理分別進(jìn)行局部競(jìng)爭(zhēng)和全局競(jìng)爭(zhēng),實(shí)現(xiàn)了兩層搜索機(jī)制。另外,算法中強(qiáng)調(diào)了免疫記憶的優(yōu)良抗體保持作用。



第二章 免疫算法2.1一般的免疫遺傳算法

免疫遺傳算法可以看作一種新型融合算法,也是一種改進(jìn)的遺傳算法,一種新型計(jì)算智能方法,是具有免疫功能的遺傳算法。與免疫算法一樣,把待求解的問(wèn)題對(duì)應(yīng)為抗原,問(wèn)題的解對(duì)應(yīng)為抗體,在許多方面表現(xiàn)出超越遺傳算法和免疫算法的優(yōu)點(diǎn),目前應(yīng)用相對(duì)較為廣泛,比如神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)、問(wèn)題、信號(hào)分析、色譜分析、設(shè)計(jì)等等。這些算法既保留了遺傳算法的搜索特性,克服遺傳算法由于交叉搜索而在局部搜索特性,克服遺傳算法由于交叉搜索而在局部搜索解空間上效率較差的缺點(diǎn),又在很大程度上避免未成熟收斂。該算法一般形式如圖一所示。

圖一

免疫遺傳算法與免疫算法在形式上看,就是在免疫算法中加入了遺傳算子,與遺傳算法相比,增加了抗原識(shí)別、記憶功能和調(diào)節(jié)功能,沒(méi)有附加復(fù)雜的操作,沒(méi)有降低遺傳算法的魯棒性,算法兼顧了搜索速度、全局搜索能力和局部搜索能力。免疫遺傳算法一般形式只是要表明免疫機(jī)制對(duì)進(jìn)化算法的作用。

免疫遺傳算法的主要特點(diǎn)有:

1.多樣性抗體

通過(guò)細(xì)胞分化,免疫系統(tǒng)可產(chǎn)生大量不同的抗體來(lái)抵御各種抗原。利用該特點(diǎn)可維持進(jìn)化過(guò)程中個(gè)體的多樣性,提高全局搜索能力,避免陷入局部最優(yōu)解。

2.個(gè)體濃度的抑制和促進(jìn)

免疫系統(tǒng)的平衡機(jī)制通過(guò)對(duì)抗體的促進(jìn)和抑制作用,經(jīng)自我調(diào)節(jié)產(chǎn)生適當(dāng)數(shù)量的必要抗體。利用這一特點(diǎn)可提高進(jìn)化算法的局部搜索能力,加快計(jì)算收斂速度,從而提高個(gè)體適應(yīng)環(huán)境的能力。

3.記憶能力

免疫系統(tǒng)的記憶功能是當(dāng)適量的抗原侵入時(shí),免疫系統(tǒng)會(huì)相當(dāng)準(zhǔn)確地與之響應(yīng)。以后再有不同抗原入侵時(shí),不論數(shù)量的多少,免疫系統(tǒng)都會(huì)迅速而且準(zhǔn)確地與之響應(yīng)。這樣能夠減少搜索時(shí)間,使之快速的收斂到最優(yōu)解。

4.遺傳算子

在編碼方案、適應(yīng)度函數(shù)及遺傳算子確定后,遺傳算法將利用進(jìn)化過(guò)程中獲得的信息自行組織搜由于基于自然的選擇策略為“適者生存,不適應(yīng)者被淘汰”,因而適應(yīng)度大的個(gè)體具有較高的生存索概率。通常,適應(yīng)度大的個(gè)體具有更適應(yīng)環(huán)境的基因結(jié)構(gòu),再通過(guò)基因重組交叉和基因突變變異等遺傳操作,就可能產(chǎn)生更適應(yīng)環(huán)境的后代。選擇操作消除了算法設(shè)計(jì)過(guò)程中的一個(gè)最大的障礙,即需要事先描述問(wèn)題的全部特點(diǎn),并要說(shuō)明針對(duì)問(wèn)題的不同特點(diǎn)算法應(yīng)采取的措施。因此,我們可以解決那些復(fù)雜的非結(jié)構(gòu)化問(wèn)題。

2.2改進(jìn)的免疫遺傳算法

本文基于人工免疫原理,提出了一種新型的免疫遺傳算法,采用二進(jìn)制編碼,通過(guò)引入小生境概念,將演化種群分為若干個(gè)小子群以實(shí)現(xiàn)種群隔離,采用了一種自適應(yīng)式的選擇機(jī)制,并與免疫系統(tǒng)的克隆選擇和克隆抑制機(jī)制相結(jié)合,能夠有效的促進(jìn)優(yōu)秀抗體的繁殖,抑制濃度過(guò)高的抗體,保證抗體的多樣性,提高個(gè)體的適應(yīng)度和防卜種群的退化,提高收斂速度。本算法的流程圖如圖二所示。

圖二
2.2.1免疫記憶

免疫系統(tǒng)中抗原消失很長(zhǎng)時(shí)間,抗體形成細(xì)胞仍然具有免疫記憶,從而以后抗原入侵時(shí),生物體根據(jù)自身免疫網(wǎng)絡(luò)可以很快生成對(duì)應(yīng)的抗體來(lái)中和抗原。這里我們引入該功能,計(jì)算小生境內(nèi)各個(gè)抗體的適應(yīng)度值,如果本次計(jì)算得到的最大適應(yīng)度值大于已有的最優(yōu)值,則將對(duì)應(yīng)的解保存到記憶表中,否則從記憶表中選擇歷次得到的最優(yōu)解并進(jìn)行選擇、交叉和變異操作,得出適應(yīng)度更高的解作為免疫抗體。

生物體由于機(jī)體本身的新陳代謝,每天有的低激勵(lì)值細(xì)胞死亡,而代之以從骨髓中生成全新的細(xì)胞,而且新產(chǎn)生的細(xì)胞只有具有較強(qiáng)適應(yīng)性的才能融合到免疫系統(tǒng)中。模擬免疫行為中細(xì)胞的這種現(xiàn)象,算法中將小生境內(nèi)的低適應(yīng)度值的抗體去除,并代之以隨機(jī)產(chǎn)生的新解。

2.2.2基于小生境技術(shù)和抗體濃度及適應(yīng)度的自適應(yīng)式免疫遺傳選擇策略

1.計(jì)算抗體的適應(yīng)度

即抗體i與抗原之間的親和度。對(duì)于求優(yōu)化問(wèn)題可將抗體的適應(yīng)度直接取對(duì)應(yīng)的目標(biāo)函數(shù)值,即。

2.計(jì)算抗體i,j之間的親和度

信息墑可作為狀態(tài)分散程度的度量,因此用信息嫡來(lái)描述抗體的多樣性及等位基因概率的變化進(jìn)程。如圖三所示個(gè)抗體。


圖三

設(shè)有N個(gè)抗體,抗體長(zhǎng)度為M,等位基因的種類(lèi)為S,則N個(gè)抗體第j位基因信息嫡為:

其中為第i個(gè)抗體的等位基因源于第j個(gè)基因的概率。如果在位置上所有抗體的等位基因都相同,那么等于零。

平均信息嫡為:

抗體i,j之間的新口度,反應(yīng)兩抗體之間的相似度:

越大,表示抗體i,j越親和。

3.計(jì)算抗體的濃度

抗體i的濃度表示群體中相似抗體所占的比重。

其中

µ為一固定值。

4.基于抗體濃度和適應(yīng)度的自適應(yīng)式選擇策略

為保證群體的多樣性,通過(guò)選擇機(jī)制進(jìn)行抗體的促進(jìn)與抑制調(diào)節(jié)。本文中提出在每代抗體i適應(yīng)值上疊加一個(gè)服從態(tài)分布的最優(yōu)個(gè)體所對(duì)應(yīng)的適應(yīng)值,及其與該抗體的濃度相結(jié)合的方法來(lái)確定抗體i是否被選擇進(jìn)行以卜的步驟?贵wi的選擇概率公式如下:

其中

——抗體i的選擇概率

——疊加正態(tài)分布變量的適應(yīng)度值

——抗體i的濃度

——為自適應(yīng)式的可變因子,其隨著進(jìn)化代數(shù)的增加而減小。

基于抗體濃度和適應(yīng)度的白適應(yīng)式選擇策略能有效的抑制濃度過(guò)高的抗體繁殖,保證了抗體的多樣性,避免算法陷入局部最優(yōu)值。并且,采用正態(tài)分布式的選擇策略能夠?qū)?yōu)秀抗體附近的個(gè)體保留下來(lái),減少收斂時(shí)間,提高算法的搜索速度。

第三章 基于免疫的粒子群算法尋優(yōu)
對(duì)于單峰值函數(shù)優(yōu)化問(wèn)題,算法的收斂速度是非常重要的但是對(duì)于多峰值函數(shù)優(yōu)化問(wèn)題,不但要求算法的快速收斂性,更重要的是要能找到全局最優(yōu)解,避免陷入局部極值點(diǎn)。為了評(píng)價(jià)本文提出的免疫遺傳算法的求解性能,與傳統(tǒng)的簡(jiǎn)單遺傳算法和一般的人工免疫算法進(jìn)行了對(duì)比。由于算法的初始解群生成是隨機(jī)的,只憑兒次運(yùn)行結(jié)果不能說(shuō)明問(wèn)題,因此對(duì)所有的測(cè)試算法均獨(dú)立運(yùn)行次,考慮算法收斂到全局最優(yōu)點(diǎn)的平均迭代代數(shù),以及在這次運(yùn)行中,算法收斂到局部極值點(diǎn)的次數(shù)經(jīng)過(guò)足夠大的迭代次數(shù)后仍不能收斂到最優(yōu)點(diǎn),就認(rèn)為算法陷入了局部極值點(diǎn)。
3.1對(duì)已知函數(shù)的優(yōu)化

基于免疫的粒子群算法是在免疫算法的基礎(chǔ)上采用粒子群優(yōu)化對(duì)抗體群體進(jìn)行更新,可以解決免疫算法收斂速度慢的缺點(diǎn)。

對(duì)于這個(gè)函數(shù),用基于免疫的粒子群算法步驟:

1.確定學(xué)習(xí)因子c1和c2、粒子(抗體)群體個(gè)數(shù)M。

2.由logistic回歸分析映射產(chǎn)生M個(gè)粒子(抗體)及其速度,其中i=1,2,...,N,最后形成初始粒子(抗體)群體.

3.產(chǎn)生免疫記憶粒子(抗體)。計(jì)算當(dāng)前粒子(抗體)群體P中粒子(抗體)的適應(yīng)值并判斷算法是否滿(mǎn)足結(jié)束條件,如果滿(mǎn)足則結(jié)束并輸出結(jié)果,否則繼續(xù)運(yùn)行。

4.更高局部和全局最優(yōu)解,并根據(jù)下面公式更新粒子位置和速度;

      

5.由logistic映射產(chǎn)生N個(gè)新的粒子(抗體)。

6.基于濃度的粒子(抗體)選擇。用群體相似抗體百分比計(jì)算產(chǎn)生N+M個(gè)新粒子(抗體)的概率,依照概率大小選擇N個(gè)粒子(抗體)形成粒子(抗體)群P然后轉(zhuǎn)入第(3)步。

7.圖五為免疫粒子群算法流程圖

圖四

圖五為函數(shù)優(yōu)化結(jié)果:

圖五


圖六為基于免疫粒子群優(yōu)化算法收斂結(jié)果:

圖六


結(jié)  論

本文提出一種免疫粒子群優(yōu)化算法,該算法保留了一般免疫算法的基于抗體生存期望值的選擇策略,以保證抗體群體的多樣性,采用了交叉和變異產(chǎn)生新的抗體群體。在此基礎(chǔ)上,應(yīng)用了粒子群優(yōu)化對(duì)群體進(jìn)行更新,本文并沒(méi)有完全采用粒子群優(yōu)化表達(dá)式對(duì)群體進(jìn)行更新,而是根據(jù)免疫算法的特點(diǎn)對(duì)其進(jìn)行了簡(jiǎn)化,使每個(gè)個(gè)體只跟蹤全局極值,使群體進(jìn)化具有更明確的方向性,從而加快算法的收斂速度。通過(guò)求解六峰駝背函數(shù)的最大值驗(yàn)證了算法的有效性,并將其與一般的免疫算法進(jìn)行了比較。

由于本文提出的免疫粒子群算法是在一般免疫算法的基礎(chǔ)上加進(jìn)了粒子群更新而得到的,所以在運(yùn)行速度上可能要慢些,但是收斂速度確實(shí)能夠得到滿(mǎn)意的性能,下一步的工作是進(jìn)一步加快算法的運(yùn)行速度,對(duì)算法的有效性進(jìn)行更全面、更有效的驗(yàn)證。


附  錄一在MATLAB中編寫(xiě)程序代碼(見(jiàn)附件):
二建立目標(biāo)函數(shù)代碼:
function y = immuFunc( x )
y=(cos(x(1)^2+x(2)^2)-1)/((1+(x(1)^2-x(2).^2))^2)+0.5;
End
三在MATLAB命令行窗口輸入代碼:
[xm,fv]= POS_immu(@immuFunc,50,2,2,0.8,100,5,0.0000001,10,0.6,0.0000000000000000001,0)

參考文獻(xiàn)
[1] 曹先彬,劉克勝,王煦法.基于免疫進(jìn)化規(guī)劃的多層前饋網(wǎng)絡(luò)設(shè)計(jì).軟件學(xué)報(bào),1999,10(11):18于1184
[2] 王熙法,張顯俊,曹先彬等.一種基于免疫原理的遺傳算法.小型微型計(jì)算機(jī)系統(tǒng). 1999,20(2): 17-20
[3] 高鷹,謝勝利.免疫粒子群優(yōu)化算法.計(jì)算機(jī)工程與應(yīng)用. 2004,6:4-7

源程序如下:
  1. function[x,y,Result]=POS_immu(func,N,c1,c2,w,MaxDT,D,eps,DS,replaceP,minD,Psum)
  2. format long;
  3. %%%%%%%%%給定初始化條件%%%%%%%%%%
  4. %c1=2;        %學(xué)習(xí)因子1
  5. %c2=2;       %學(xué)習(xí)因子2
  6. %w=0.8;      %慣性權(quán)重
  7. %MaxDT=100;    %最大迭代次數(shù)
  8. %D=2;         %搜索空間維數(shù)(未知數(shù)個(gè)數(shù))
  9. %N=100;       %初始化群體個(gè)體數(shù)目
  10. %eps=10^(-10);%設(shè)置精度(在已知最小值時(shí)候用)
  11. %DS=8;        %每隔DS次循環(huán)就檢查最優(yōu)個(gè)體是否變化%
  12. %replaceP=0.5;%粒子的概率大于replaceP將被免疫替換
  13. %minD=1e-10;  %粒子間的最小距離
  14. %Psum=0;      %個(gè)體最佳的和
  15. range=100;
  16. count=0;
  17. %%%%%%%%%初始化種群的個(gè)體%%%%%%%%%%%%%%
  18. for i=1:N
  19.     for j=1:D
  20.         x(i,j)=-range+2*range*rand;            %隨機(jī)初始化位置
  21.         v(i,j)=randn;                          %隨機(jī)初始化速度
  22.     end
  23. end
  24. %%%%%%%先計(jì)算各個(gè)粒子的適應(yīng)度,并初始化Pi和Pg%%%%%%
  25. for i=1:N
  26.     p(i)=feval(func,x(i,:));
  27.     y(i,:)=x(i,:);
  28. end
  29. pg=x(1,:);                      %pg為全局最優(yōu)
  30. for i=2:N
  31.     if feval(func,x(i,:))<feval(func,pg)
  32.         pg=x(i,:);
  33.     end
  34. end
  35. %%%%%%%%%%%主循環(huán),按照公式依次迭代,直到滿(mǎn)足精度要求%%%%%%
  36. for t=1:MaxDT
  37.     for i=1:N
  38.         v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
  39.         x(i,:)=x(i,:)+v(i,:);
  40.         if feval(func,x(i,:))<p(i)
  41.             p(i)=feval(func,x(i,:));
  42.             y(i,:)=x(i,:);
  43.         end
  44.         if p(i)<feval(func,pg)
  45.             pg=y(i,:);
  46.             subplot(1,2,1);
  47.             bar(pg,0.25);
  48.             axis([0 3 -40 40]);
  49.             title(['Iteration',num2str(t)]);pause(0.1);
  50.             subplot(1,2,2);
  51.             plot(pg(1,1),pg(1,2),'rs','MarkerFaceColor','r','MarkerSize',8)
  52.             hold on;
  53.             plot(x(:,1),x(:,2),'k.');
  54.             set(gca,'Color','g')
  55.             hold off;
  56.             grid on;
  57.             axis([-100 100 -100 100]);
  58.             title(['Global Min= ',num2str(p(i))]);
  59.             xlabel(['Min_x= ',num2str(pg(1,1)),'Min_y= ',num2str(pg(1,2))]);
  60.         end
  61.     end
  62. Pbest(t)=feval(func,pg);
  63.    %if Foxhole(pg,D)<eps
  64.        %break;
  65.   %end
  66. %%%%%開(kāi)始進(jìn)行免疫%%%%%%%%
  67.     if t>DS
  68.         if mod(t,DS)==0&&(Pbest(t-DS+1)-Pbest(t))<1e-020
  69.             for i=1:N
  70.                 Psum=Psum+p(i);
  71.             end
  72.             for i=1:N     %%%%%%%%開(kāi)始免疫
  73.                 for j=1:N
  74.                     distance(j)=abs(p(j)-p(i));
  75.                 end
  76.                 num=0;
  77.                 for j=1:N
  78.                     if distance(j)<minD
  79.                         num=num+1;
  80.                     end
  81.                 end
  82.                 PF(i)=p(N-i+1)/Psum;
  83.                 PD(i)=num/N;
  84.                 a=rand;
  85.                 PR(i)=a*PF(i)+(1-a)*PD(i);
  86.             end
  87.             for i=1:N
  88.                 if PR(i)>replaceP
  89.                     x(i,:)=-range+2*range*rand(1,D);
  90.                 count=count+1;
  91.                 end
  92.             end
  93.         end
  94.     end
  95. end
  96. %%%%%%%%%最后給出結(jié)果%%%%%%
  97. x=pg(1,1);
  98. y=pg(1,2);
  99. Result=feval(func,pg);
  100. %%%%%%%%%算法結(jié)束%%%%%%%%%%%%%%
  101. ……………………

  102. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

完整的word格式文檔51黑下載地址:
基于免疫粒子群算法尋優(yōu).doc (321.44 KB, 下載次數(shù): 22)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表