動物集群運動行為模型系列之五_第1頁
動物集群運動行為模型系列之五_第2頁
動物集群運動行為模型系列之五_第3頁
動物集群運動行為模型系列之五_第4頁
動物集群運動行為模型系列之五_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、動物集群運動模型摘要本文主要模擬了魚群的集群運動、魚群躲避捕食者追捕的運動情況以及鳥群覓食運動的模擬,以此研究動物個體問的信息傳遞機制,同時也是對群體智能的初步探索。針對問題一,需要我們給出對魚群集群運動的模型,并編寫程序將運動模擬出來,對此我們建立了Boid模型,根據(jù)模型給出的準則以及算法,我們通過matlab編程,在忽略阻力等因素下分別模擬出在平面以及空間魚群的運動,并得出密度必須大于一定值時,魚群才能最終達到同步。魚群的整個集群運動從剛開始的隨機產(chǎn)生的各個個體的不均勻無規(guī)則分布到逐漸的聚攏成群再到最后的一致方向的前進。針對問題二,我們在問題一的模型的基礎上給出了魚群躲避捕食者的模型,制定

2、了魚個體的適度逃離區(qū)域和加速逃離區(qū)域,分析捕食者與魚個體的關系,給出進一步的模型,通過編寫程序得到模擬的結果,得到了對魚群躲避捕食者的運動的合理的動態(tài)模擬,并且給出了模型的改進方向。針對問題三,我們更加傾向于研究鳥群的覓食行為,因此我們將問題改成鳥群的覓食模擬,將鳥群的覓食行為轉化為求最優(yōu)解的問題,這正好與問題中提到了有一部分個體掌握食物源位置信息相對應。針對問題,我們建立了粒子群優(yōu)化模型,通過PSCM法,通過鳥群尋找食物的最短路徑的最優(yōu)解的問題的分析,我們利用優(yōu)化算法來模擬了鳥群在山問的覓食行為,得到了鳥群可以繞過我們設定的障礙物(山峰)到達食物點。關鍵字:動物集群運動Boid模型PSO算法

3、鳥群覓食一、問題重述在動物界,大量集結成群進行移動或者覓食的例子并不少見,這種現(xiàn)象在食草動物、鳥、魚和昆蟲中都存在。這些動物群在運動過程中具有很明顯的特征:群中的個體聚集性很強,運動方向、速度具有一致性。通過數(shù)學模型來模擬動物群的集群運動行為以及探索動物群中的信息傳遞機制一直是仿生學領域的一項重要內(nèi)容。通過觀察附件中給出的圖片和視頻資料,或者在網(wǎng)上搜索相關資料觀察,思考動物集群運動的機理,建立數(shù)學模型刻畫動物集群運動、躲避威脅等行為,例如,可以考慮以下問題的分析建模:建立數(shù)學模型模擬動物的集群運動。建立數(shù)學模型刻畫魚群躲避黑鰭礁鯊魚的運動行為。假定動物群中有一部分個體是信息豐富者(如掌握食物源

4、位置信息,掌握遷徙路線信息),請建模分析它們對丁群運動行為的影響,解釋群運動方向決策如何達成。建議與說明:在上述問題的討論中,如果能適時分析動物群中的信息傳遞機制無疑是更好I如果對問題2和問題3之外的其他集群運動行為更感興趣,也可將這兩個問題替換為你所感興趣的問題來討論。建模過程中的數(shù)據(jù)資料可以在網(wǎng)上查詢或者自行合理設定。若果感到在三維空間討論問題太復雜,可以先在二維空間討論,再推廣至三維空間。最好能對你所做的機理分析模型給出計算機仿真方法以便丁實際情況對比評價。二、模型假設忽略障礙、阻力以及其它無關次要因素對丁集群運動的影響問題一魚群中每個個體運動的速度都是包定一樣的魚群集群運動的模擬中不考

5、慮障礙物的存在忽略其它種群對本文所研究種群的影響不考慮集群中個體的體積,都按粒子處理三、符號說明N魚群的總數(shù)&集群中每個個體的位置欠量瑚集群中每個個體的速度欠量V集群中每個個體運動的速度rr排斥區(qū)域的半徑r。Bm dVminVmaxTXi一Xpdi(t 1)G、C2若、&Xi (t)=(為 i(t),Xi2(t),., Xd (t)Vi(t) =(Vi(t), V2(t).,Vid(t)P(t) = Pi(t), Pi2(t),., Pid(t)%t)= P gl(t), Pg2(t),.Pgd(t)吸引區(qū)域的半徑慣性權重粒子數(shù)空間維數(shù)最小速度最大速度粒子i的位置欠M捕食者的位置欠M個體i在t

6、 +1時刻的預期方向學習因子(加速因子)均勻分布在(0,1)之間的隨機數(shù) 在第t次迭代時粒子i的位置表示 在第t次迭代時粒子i的速度表示 個體極值全局極值致區(qū)域的半徑四、問題分析本問題是一個動物集群運動的模型問題,動物的集群運動包括很多,其中有覓食、追尾、躲避捕食者等等運動,問題一需要我們考慮動物集群的運動模型,也就是魚群的游弋、鳥群的飛翔等行為,是不需要考慮覓食、追尾等行為活動的,我們通過建立Boid模型進行魚群集群運動的模擬。問題二需要我們給出魚群躲避捕食者的運動模擬,要解決問題,那就需要我們在問題一模型的基礎上給出魚的逃逸模式,然后對逃逸運動進行模擬。問題三是需要我們模擬集群運動中存在領

7、導者時的集群運動的模擬,可以運用和問題一一樣的思路,但是我們對丁鳥群的覓食行為更感興趣,所以我們轉而對鳥群覓食進行建模,我們選擇PSO算法,通過模型求最優(yōu)解的過程對鳥群覓食行為進行模擬,從而建立起了比較合適的模型。針對這些問題,我們主要的工作是首先建立合適的模型,通過我們建立的模型,根據(jù)模型的算法,我們可以編寫程序得到對集群運動的模擬。五、模型的建立與求解魚群集群運動的模擬模型的建立我們根據(jù)問題一的要求,通過查閱資料得出了Boid模型可以解決類似的問題,這里我們就選用Boid模型作為此文的模型。Boid群模型包括三個簡單的指導規(guī)則,它們描述了一個單一的“Boid”如何基丁位置和鄰近個體的速度進

8、行分離、內(nèi)聚和排序活動的。模型的三個規(guī)則(Reynolds聚結規(guī)則)如下:群中心定位:試圖與鄰近的群個體保持接近;避免障礙:避免與鄰近的群個體發(fā)生沖突;速度匹配:試圖與鄰近的群個體速度匹配;設系統(tǒng)有N個個體組成,它們的位置和速度欠量分別為C*、寸,每個個體在三維空間中按照包定的速度V運動,dj(t+1)為個體i在t+1時刻的預期方向。在每一步t,每個個體可以感知到三個不重疊的區(qū)域中其他個體的位置和角度,這些信息用丁計算di(t+1),這三個區(qū)域分別為:排斥區(qū)域,一致區(qū)域,吸引區(qū)域,也稱為Three-circle模型,其模型的三個區(qū)域如圖(圖1)所示:圖1Boid模型的三個區(qū)域示意圖,zor為排

9、斥區(qū)域,zoo為一致區(qū)域,zoa為吸引區(qū)域;3600-。為視野盲區(qū),?取值范圍為200-3600個體的運動規(guī)則為:首先,每個個體盡M與排斥區(qū)域(以該個體為中心,以r為半徑的球)中的其他個體保持最小距離,并記其中的個體數(shù)為nr,則個體i的預期方向按照下面的方式調整nrdi(t 1)=-、AAi = 1,., N ,t a 0j=irj (t)其中rj(t)=(Cj-G)。其次,如果n二0,貝U個體i的預期方向受“一致區(qū)域”(以個體i位中心,處丁rr和r。之間的球形區(qū)域,除去該個體后面的角度為360-ot的盲區(qū))及“吸引區(qū)域”(以個體i位中心,處丁r。和G之間的球形區(qū)域,除去該個體后面的角度為36

10、Oo-a的盲區(qū))中的個體的影響,記相應區(qū)域中的鄰居個數(shù)分別為n。、na,則可定義do(t+1)、da(t+1)如下:do(t 1)=Vj(t)rij (t)j 主-V j (tda(t + 1)=Ej# rij (t)如果na-fi1)a=0,則djt+1)=d(t+1);同樣,如果n0,則d(t+1)=d(t+1);如果兩者都不為0,貝U定義di(t+1)=5,d(t+1)+da(t+1);如果經(jīng)過上面的運算后所得到的di(t+1)=0,或者在三個區(qū)域中都沒有個體,貝Udi(t+1)=Vi(t)o設旋轉速率為9,即每一時步個體所能轉過的最大角度為9 ,如果Vi與di (t +1)之間的角度差

11、小丁6,則di(t+1)=Vi(t+1),否則,個體i向期望的方向旋轉角度6,這樣就得到了個體下一步的運動方向。模型的求解根據(jù)模型,我們利用matlab編程,得到二維空間(平面)和三維空間(立體)的魚群運動的模擬。平面魚群運動的模擬程序見附錄1。我們?nèi)×藗€體為100,個體的旋轉速率為0.5,得到了運動的模擬動畫。卜面我們截取了整個動態(tài)模擬過程中的3幅圖??臻g魚群運動的模擬程序見附錄2。我們?nèi)×藗€體為100,個體的旋轉速率為0.5,得到了運動的模擬動畫。下面我們截取了整個動態(tài)模擬過程中的3幅圖。圖7個體一致向一個方向運動截圖從上面的各個圖中,我們可以看出,魚群的整個集群運動從剛開始的隨機產(chǎn)生的各

12、個個體的不均勻無規(guī)則分布到逐漸的聚攏成群再到最后的一致方向的前進。整個模擬過程是比較合理的,比較符合實際,由丁論文上無法顯示動態(tài)的圖,所以我們采取了截圖的方式。從我們的模擬中,我們還發(fā)現(xiàn),取不同的密度,得到的模擬結果是不一樣的,在高密度的情景下,我們得出魚群在經(jīng)過有限的運動時間后,會最終達到同步,即運動方向達到一致。而且只有在密度大丁一定范圍時系統(tǒng)才能最終達到一致同步,隨著個體密度的減小,我們可以推測存在一個臨界密度,只有在大丁臨界密度的時候系統(tǒng)才能最終達到同步。密度越大,越容易達到同步。密度約小,魚群只能形成多個小規(guī)模的魚群,無法形成整個魚群運動一致。取不同的旋轉速率時,所得到的模擬動畫也不

13、一樣。通過輸入不同的旋轉速率,我們得出結論:旋轉速率越大,魚群總是在原位置附近徘徊,無法達到一致同步的趨勢;旋轉速率較小時,能夠達到最終的一致同步,即使不能達到一致同步,也能以小規(guī)模的集群同步運動。魚群躲避捕食者的運動的模擬模型的建立在問題一的模型的基礎上,為考慮有外來捕食者的情況下群集的應急機制,設計了如下的粒子個體應急措施。如下圖所示圖8捕食者模型示意圖粒子個體的應急區(qū)域分為兩個層次:適度逃離區(qū)和加速逃離區(qū)。圖陰影部分即為加速逃離區(qū),內(nèi)圓與外圓間的環(huán)形部分是適度逃離區(qū)。圖下半部分顯示了捕食者分別位丁兩個區(qū)域時,粒子個體的受力大小和方向。為簡化模型,規(guī)定加速逃離區(qū)同原模型的排斥區(qū)重合。當有捕

14、食者進入到粒子個體的加速逃離區(qū)時,“逃跑”就是個體的最高策略,個體會沿捕食者與個體所在的直線告訴逃離捕食者,速度的大小同捕食者和個體間的距離存在一定的函數(shù)關系,此時個體將不考慮吸引、排斥異己方向同步等的作用。當有捕食者位丁粒子個體的適度逃離區(qū)時,個體會受到捕食者與個體所在直線遠離捕食者方向的作用,同時還將受到吸引、排斥以及方向同步等的作用。因此,個體受到的實際作用是兩者作用的疊加。還應指出,當捕食者位丁粒子個體的適度逃離區(qū)時,個體會加大方向同步區(qū)域的大小,期望盡快與其他粒子的方向保持同步。粒子的逃離速度公式如下:Vi(Xi-Xp),X=norm(Xi-Xp)其中a是加速逃離區(qū)半徑的大小,與排斥

15、區(qū)域半徑大小一樣,即a=r.b是適度逃離區(qū)的半徑大小,與吸引區(qū)域半徑一樣,即b=rac是正常情況下同步區(qū)域半徑大小,d是此半徑的上界(不超過b)。當捕食者位丁粒子的加速逃離區(qū)時,粒子的實際速度就是其逃離速度,當捕食者位丁粒子的適度逃離區(qū)時,粒子的實際速度是其逃離速度與在吸引、排斥以及方向同步等的作用下的速度的合成。模型的求解通過matlab編程,我們得出了對魚群逃逸的運動的模擬(程序見附錄3)截圖如下:matlab 編程得到12魚群躲避捕食者的運動模擬截圖(綠色圓圈為捕食者,紅色義為魚)結論:我們通過對魚群躲避捕食者的模型建立,然后通過了對魚群運動的模擬,總的可以看出魚群的逃逸運動。對鳥群的覓

16、食運動的模擬5.3.1模型的分析與建宜通過對問題的分析,我們建立了PSO莫型對鳥群的覓食行為進行模擬5.3.1.1PSO模型的簡介粒子群優(yōu)化算法是基丁群體的演化算法,其思想來源丁人工生命和演化計算理論。Reynolds對鳥群飛行的研究發(fā)現(xiàn),鳥僅僅是追蹤它有限數(shù)量的鄰居,但最終的整體結果是整個鳥群好像在一個中心的控制之下,即復雜的全局行為是由簡單規(guī)則的相互作用引起的。PSO即源丁對鳥群捕食行為的研究,一群鳥在隨機的搜尋食物,如果區(qū)域只有一塊食物,那么找到食物的最簡單有效的策略就是搜尋目前離食物最近的鳥的周圍區(qū)域。人們通常是以他們自己及他人的經(jīng)驗來作為決策的依據(jù),這就構成了PSO勺一個基本概念。算

17、法的原理PSO算法將群體中的每個個體視為多維搜索空間中的一個沒有質量和體積的粒子,這些粒子在搜索空間中以一定的速度飛行,并根據(jù)粒子本身的飛行經(jīng)驗以及同伴的飛行經(jīng)驗對自己的飛行速度進行動態(tài)調整,即每個粒子通過統(tǒng)計迭代過程中自身的最優(yōu)解和群體的最優(yōu)值來不斷修正自己的前進方向和速度大小,從而形成群體尋優(yōu)的正反饋機制。PS頃法就是這樣依據(jù)每個粒子對環(huán)境的適應度將個體逐步移到較優(yōu)的區(qū)域,并最終搜索、尋找到問題的最優(yōu)解。PSCB法具有鮮明的生物社會背景:認知過程和社會行為,即在尋求一致的認知過程中,個體往往記住它們的信念,同時考慮其它同伴的信念,當個體察覺同伴的信念較好時,將進行適應性調整。模型的建立在P

18、SCB法中,用粒子的位置表示待優(yōu)化問題的解,每個粒子性能的優(yōu)劣程度取決丁待優(yōu)化問題目標函數(shù)確定的適應值,每個粒子由一個速度欠量決定其飛行方向和速率大小。設在一個d維的目標搜索空間中,有m個粒子組成一個群體,其中,在第t次迭代時粒子組成一個群體,其中,在第t次迭代時粒子i的位置表示為Xi(t)=(X1(t),Xi2(t),.,Xd(t),相應的飛行速度表示為Vi(t)=(V1(t),V2(t),.,Md(t)。開始執(zhí)行PSO算法時,首先隨機初始化m個粒子的位置和速度,然后通過迭代尋找最優(yōu)解,在每一次迭代中,粒子通過跟蹤兩個極值來更新自己的速度和位置:一個極值是粒子本身迄今為止搜索到的最優(yōu)解,稱為

19、個體極值,表示為P(t)=(Pi(t),Pi2(t),.,Pid(t);另一個極值是整個粒子群到目前為止找到的最優(yōu)解,稱為全局極值,表示為Pg(t)=(Pg1(t),Pg2(t),.Pgd(t)。在第t+1次迭代計算時,粒子i根據(jù)下列規(guī)則來更新自己的速度和位置:Vik(t1)=Vik(t)1C1Pk(bXk(t)22CPk(-0Xk(tXk(t1)=Xik(t)Vik(t1);(i=1,2,.,m;k=1,2,.,d)s取大值可使算法具有較強的全局搜索能力,b取小值則算法傾向丁局部搜索。一般的做法是將w初始取0.9,并使其迭代次數(shù)的增加而線性遞減至0.4,部精細這樣下去可以先側重丁全局搜索,使

20、搜索空間快速收斂丁某一區(qū)域,然后采用局搜索以獲得高精度的解;G、%一般取2。另外粒子的每一維的速度Vi取值范圍為VminVmax。如果當前粒子的加速度導致它在某一維的速度超過該維上的最大速度Vmax,則該維的速度被限制值為最大速度。位置Xi的取值范圍為XminXmax。PSO算法流程隨機初始化粒子群體的位置和速度;通常是在允許的范圍內(nèi)隨機產(chǎn)生的,每個粒子的pbest坐標設置為其當前位置,且計算出其相應的個體極值(即個體的適應度值),而全局極值(即全局的適應度值)就是個體極值中最好的,記錄該最好值的粒子序號,并將gbest設置為該最好粒子的當前位置;計算每個粒子的適應值;對每個粒子,將其適應值與

21、個體極值進行比較,如果較優(yōu),則更新當前的個體極值;對每個粒子,將其適應值與全局極值進行比較,如果較優(yōu),則更新當前的全局極值;根據(jù)更新位置速度的公式,更新每個粒子的位置和飛行速度;如未達到預先設定的停止準則(通常設置為最大迭代次數(shù)),則返回步驟(2),達到則停止計算;5.3.2模型的求解種群大小取30,粒子大小2,Vmax=2,q、C2均取2。根據(jù)上述算法,我們通過matlab編程,得出了對鳥群覓食的模擬(程序見附錄4)。截圖如下:圖15鳥群找到食物結論:通過上述的截圖我們可以看出,我們作出的模擬十分合理,鳥群能夠繞過山峰找到食物,我們通過PSC模型,通過鳥群尋找食物的最短路徑的最優(yōu)解算法得到對

22、鳥群覓食過程的模擬。六、模型評價對丁問題一,我們采用的Boid模型是有缺陷的,它給出的規(guī)則都是局部規(guī)則,每個個體僅僅根據(jù)它周圍附近球域內(nèi)的個體的行為調整自己的行為,只能做到局部一致性,局限性較強,并且模型是在虛擬的沒有障礙物存在的空間內(nèi)進行模擬的,而實際中不可能沒有障礙物,基丁以上的缺點因素,我們提出了Vicsek模型,這個模型能克服上訴缺點。對丁問題二,我們在模型一的基礎上建立了模型,模型得出的結果也是很合適的,不過模型對丁魚群的加速逃離區(qū)和適度逃離區(qū)的選擇不是很合理,模型的改進方向可以是:劃定一個必須逃離區(qū),在必須逃離區(qū)外危險系數(shù)與捕食者和個體的距離成正比,在必須逃離區(qū)之內(nèi)就只能全力逃跑。

23、鑒丁時間關系,我們沒有再深入下去。對丁問題三,我們采用PSC莫型,通過對鳥群覓食的最短路徑最優(yōu)化問題的分析,利用PSO模型作出對鳥群覓食的模擬。參考文獻1姜啟源,數(shù)學模型M.北京:高等教育出版社.1987年4月第一版;2胡守信,李柏年.基丁MATLAB勺數(shù)學實驗M.北京:科學出版社.2004年6江銘炎,人工魚群算法及其應用.科學出版社.:2012年1月1日第一版;附錄附錄1functionboid1(n,eta)%generatesboidsinafieldn=input(inputn);eta=input(inputeta);range=0.2;speed=0.03;TIME=300;den

24、sity=10;RUNS=1;fieldsize=sqrt(n/density);pos=fieldsize*rand(n,2);heading=2*pi*rand(n,1);relposX=zeros(n);relposY=zeros(n);neighbours=zeros(n);RelHead=zeros(n,1);B=zeros(n,1);newHeading=zeros(n,1);newPos=zeros(n,2);meanHeading=zeros(TIME,1);deviationMean=zeros(n,TIME);forrun=1:RUNSfortime=1:TIMEfori=

25、1:nforj=1:nrelposX(i,j)=abs(pos(i,1)-pos(j,1);relposY(i,j)=abs(pos(i,2)-pos(j,2);if(sqrt(relposX(i,j)人2+relposY(i,j)人2)=range)neighbours(i,j)=1;endendendfori=1:nforj=1:nif(neighbours(i,j)=1)relheading(i,j)=heading(j,1)-heading(i,1);endendendRelHead=sum(relheading,2);fori=1:nwhileRelHead(i,1)piRelHea

26、d(i,1)=RelHead(i,1)-pi;endendnoise=(rand(n,1)*eta)-eta/2;newHeading(:,1)=heading(:,1)+RelHead(:,1)./sum(neighbours,2)+noise(:,1);newPos(:,1)=pos(:,1)+cos(newHeading(:,1)*speed;newPos(:,2)=pos(:,2)+sin(newHeading(:,1)*speed;fork=1:nwhilenewPos(k,1)=fieldsizenewPos(k,1)=newPos(k,1)-fieldsize;endnewPos

27、(k,2)=newPos(k,2)+fieldsize;endwhilenewPos(k,2)=fieldsizenewPos(k,2)=newPos(k,2)-fieldsize;endendheading=newHeading;pos=newPos;meanHeading(time,1)=mean(heading,1);deviationMean(time,1)=mean(abs(meanHeading(time,1)-heading(:,1);scatter(pos(:,1),pos(:,2),xr);axis(0fieldsize0fieldsize);xlabel(time);M(t

28、ime)=getframe;endrunDev(:,run)=deviationMean(:,1);end%plot(runDev)movie2avi(M,boidtest.avi,quality,100);附錄2functionboid1(n,eta)%generatesboidsinafieldn=input(inputn);eta=input(inputeta);range=0.2;speed=0.05;TIME=300;density=10;RUNS=1;fieldsize=sqrt(n/density);pos=fieldsize*rand(n,3);heading=2*pi*ran

29、d(n,1);relposX=zeros(n);relposY=zeros(n);relposZ=zeros(n);neighbours=zeros(n);RelHead=zeros(n,1);B=zeros(n,1);newHeading=zeros(n,1);newPos=zeros(n,3);meanHeading=zeros(TIME,1);fortime=1:TIMEfori=1:nforj=1:nrelposX(i,j)=abs(pos(i,1)-pos(j,1);relposY(i,j)=abs(pos(i,2)-pos(j,2);relposZ(i,j)=abs(pos(i,3

30、)-pos(j,3);if(sqrt(relposX(i,j)人2+relposY(i,j)人2+relposZ(i,j)人2)=range)neighbours(i,j)=1;endendendfori=1:nforj=1:nif(neighbours(i,j)=1)relheading(i,j)=heading(j,1)-heading(i,1);endendendRelHead=sum(relheading,2);fori=1:nwhileRelHead(i,1)piRelHead(i,1)=RelHead(i,1)-pi;endendnoise=(rand(n,1)*eta)-eta/

31、2;newHeading(:,1)=heading(:,1)+RelHead(:,1)./sum(neighbours,2)+noise(:,1);newPos(:,1)=pos(:,1)+cos(newHeading(:,1)*speed;newPos(:,2)=pos(:,2)+sin(newHeading(:,1)*speed;newPos(:,3)=pos(:,3)+tan(newHeading(:,1)*speed;fork=1:nwhilenewPos(k,1)=fieldsizenewPos(k,1)=newPos(k,1)-fieldsize;endwhilenewPos(k,

32、2)=fieldsizenewPos(k,2)=newPos(k,2)-fieldsize;endwhilenewPos(k,3)=fieldsizenewPos(k,3)=newPos(k,3)-fieldsize;endendheading=newHeading;pos=newPos;meanHeading(time,1)=mean(heading,1);deviationMean(time,1)=mean(abs(meanHeading(time,1)-heading(:,1);scatter3(pos(:,1),pos(:,2),pos(:,3),*r);axis(0fieldsize

33、0fieldsize0fieldsize);xlabel(time);ylabel(Y);zlabel(Z);M(time)=getframe;endrunDev(:,run)=deviationMean(:,1);end%plot(runDev)movie3avi(M,boidtest.avi,quality,100);附錄3functionboid1(n,eta)%generatesboidsinafieldn=input(inputn);eta=input(inputeta);range=0.2;speed=0.03;TIME=300;density=10;RUNS=1;m=3;fiel

34、dsize=sqrt(n/density);pos2=fieldsize*rand(m,2);heading2=2*pi*rand(m,2);elposX2=zeros(m);relposY2=zeros(m);neighbours2=zeros(m);RelHead2=zeros(m,1);B=zeros(m,1);newHeading2=zeros(m,1);newPos2=zeros(m,2);meanHeading2=zeros(TIME,1);deviationMean2=zeros(m,TIME);forrun=1:RUNSfortime=1:TIMEfori=1:mforj=1:

35、mrelposX2(i,j)=abs(pos2(i,1)-pos2(j,1);relposY2(i,j)=abs(pos2(i,2)-pos2(j,2);if(sqrt(relposX2(i,j)人2+relposY2(i,j)人2)piRelHead2(i,1)=RelHead2(i,1)-pi;endendnoise=(rand(m,1)*eta)-eta/2;newHeading2(:,1)=heading2(:,1)+RelHead2(:,1)./sum(neighbours2,2)+noise(:,1);newPos2(:,1)=pos2(:,1)+cos(newHeading2(:

36、,1)*speed;newPos2(:,2)=pos2(:,2)+sin(newHeading2(:,1)*speed;fork=1:mwhilenewPos2(k,1)=fieldsizenewPos2(k,1)=newPos2(k,1)-fieldsize;endwhilenewPos2(k,2)=fieldsizenewPos2(k,2)=newPos2(k,2)-fieldsize;endendheading2=newHeading2;pos2=newPos2;meanHeading2(time,1)=mean(heading2,1);deviationMean2(time,1)=me

37、an(abs(meanHeading2(time,1)-heading2(:,1);fieldsize=sqrt(n/density);pos1=fieldsize*rand(n,2);heading1=2*pi*rand(n,1);relposX1=zeros(n);relposY1=zeros(n);neighbours1=zeros(n);RelHead1=zeros(n,1);B=zeros(n,1);newHeading1=zeros(n,1);newPos1=zeros(n,2);meanHeading1=zeros(TIME,1);time=1:TIME?e?2?fori=1:n

38、forj=1:nfors=1:mrelposX1(i,j)=abs(pos1(i,1)-pos1(j,1);relposY1(i,j)=abs(pos1(i,2)-pos1(j,2);relposX3(j,s)=abs(pos2(s,1)-pos1(j,1);relposY3(j,s)=abs(pos2(s,2)-pos1(j,2);if(sqrt(relposX1(i,j)人2+relposY1(i,j)人2)=range|sqrt(relposX3(j,s)人2+relposY3(j,s)人2)=2*range)neighbours1(i,j)=1;endendendendfori=1:n

39、forj=1:nif(neighbours1(i,j)=1)relheading1(i,j)=heading1(j,1)-heading1(i,1);endendendRelHead1=sum(relheading1,2);fori=1:nwhileRelHead1(i,1)piRelHead1(i,1)=RelHead1(i,1)-pi;endendnoise=(rand(n,1)*eta)-eta/2;newHeading1(:,1)=heading1(:,1)+RelHead1(:,1)./sum(neighbours1,2)+noise(:,1);newPos1(:,1)=pos1(:

40、,1)+cos(newHeading1(:,1)*speed;newPos1(:,2)=pos1(:,2)+sin(newHeading1(:,1)*speed;fork=1:nwhilenewPos1(k,1)0newPos1(k,1)=newPos1(k,1)+fieldsize;newPos1(k,1)=newPos1(k,1)-fieldsize;endwhilenewPos1(k,2)=fieldsizenewPos1(k,2)=newPos1(k,2)-fieldsize;endendheading1=newHeading1;pos1=newPos1;meanHeading1(ti

41、me,1)=mean(heading1,1);deviationMean1(time,1)=mean(abs(meanHeading1(time,1)-heading1(:,1);scatter(pos2(:,1),pos2(:,2),scatter(pos1(:,1),pos1(:,2),og );holdxr );holdonoffaxis(0 fieldsize 0 fieldsize); xlabel(time );M(time) = getframe;endrunDev(:,run) = deviationMean1(:,1);runDev(:,run) = deviationMea

42、n2(:,1);end%plot(runDev)movie2avi(M, boidtest.aviquality ,100);附錄 4function pso F = pso_2D()pop_size = 30;part_size = 2;gbest = zeros(1,part_size+1);max_gen = 60;region=zeros(part_size,2);region=-3,3;-3,3;pop_size 種群大小part_size 粒子大小,% gbest 當前搜索到的最小的值% max_gen 最大迭代次數(shù)% 設定搜索空間范圍rand( state ,sum(100*cl

43、ock);% 重置隨機數(shù)發(fā)生器狀態(tài)arr_present = ini_pos(pop_size,part_size);% present 當前位置 , 隨機初始化 , rand() 的范圍為 01v=ini_v(pop_size,part_size);% 初始化當前速度pbest = zeros(pop_size,part_size+1);% pbest 粒子以前搜索到的最優(yōu)值,最后一列包括這些值的適應度% w_max 權系數(shù)最大值w_max=0.7298;w_min=0.4;v_max=2;%*最大速度,為粒子的范圍寬度 TOC o 1-5 h z cl=2;%學習因子1c2=2;%學習因子

44、2best_record=zeros(1,max_gen);%best_record記錄最好的粒子的適應度。arr_present(:,end)=ini_fit(arr_present,pop_size,part_size);。pbest=arr_present;值best_valuebest_index=min(arr_present(:,end);%初始化全局最優(yōu),即適應度為全局最小的值,根據(jù)需要也可以選取為最大值gbest=arr_present(best_index,:);x=-3:0.01:3;y=-3:0.01:3; TOC o 1-5 h z z=(x,y)3*(1-x).人2.*exp(-(x.人2)-(y+1).人2).-10*(x/5-x.A3-y.A5).*exp(-x.A2-y.A2).-1/3*exp(-(x+1).A2-y.A2);fori=1:max_gengridon;ezmesh(z),holdon,gridon,plot3(arr_present(:,1),arr_present(:,2),arr_present(:,3),*),text(-0.8,-1.2,6.5,食物);title(鳥群覓食);holdoff;drawnowF(i)=getframe;pause(0.01);w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論