MATLAB課程設(shè)計(jì)報(bào)告_第1頁
MATLAB課程設(shè)計(jì)報(bào)告_第2頁
MATLAB課程設(shè)計(jì)報(bào)告_第3頁
MATLAB課程設(shè)計(jì)報(bào)告_第4頁
MATLAB課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、華 東 交 通 大 學(xué)MATLAB程序設(shè)計(jì)報(bào)告書課題名稱:基于MATLAB的粒子群優(yōu)化算法的實(shí)現(xiàn)姓 名:學(xué) 號(hào): 專 業(yè):控制科學(xué)與工程2016年 11月 20日基于MATLAB的粒子群優(yōu)化算法的實(shí)現(xiàn)一、課程選題目的本次課程設(shè)計(jì)的課題為基于MATLAB的粒子群優(yōu)化算法的實(shí)現(xiàn),主要為學(xué)會(huì)運(yùn)用MATLAB對(duì)實(shí)際算法編程,加深對(duì)粒子群優(yōu)化算法的理解,并為今后熟練使用MATLAB進(jìn)行系統(tǒng)的分析仿真和設(shè)計(jì)奠定基礎(chǔ)。數(shù)值計(jì)算分析可以幫助更深入地理解理論知識(shí),并為將來使用MATLAB進(jìn)行各領(lǐng)域數(shù)值分析分析和實(shí)際應(yīng)用打下基礎(chǔ)。 此次課程主要是為了進(jìn)一步熟悉對(duì)MATLAB軟件的使用,以及學(xué)會(huì)利用MATLAB對(duì)數(shù)

2、值運(yùn)算這種實(shí)際問題進(jìn)行處理,將理論應(yīng)用于實(shí)際,加深對(duì)它的理解。二、粒子群優(yōu)化算法原理優(yōu)化是科學(xué)研究、工程技術(shù)和經(jīng)濟(jì)管理等領(lǐng)域的重要研究工具。它所研究的問題是討論在眾多的方案中尋找最優(yōu)方案。例如,工程設(shè)計(jì)中怎樣選擇設(shè)計(jì)參數(shù),使設(shè)計(jì)方案既滿足設(shè)計(jì)要求又能降低成本;資源分配中,怎樣分配有限資源,使分配方案既能滿足各方面的基本要求,又能獲得好的經(jīng)濟(jì)效益。在人類活動(dòng)的各個(gè)領(lǐng)域中,諸如此類,不勝枚舉。優(yōu)化這一技術(shù),正是為這些問題的解決,提供理論基礎(chǔ)和求解方法,它是一門應(yīng)用廣泛、實(shí)用性很強(qiáng)的科學(xué)。近十余年來,粒子群優(yōu)化算法作為群體智能算法的一個(gè)重要分支得到了廣泛深入的研究,在路徑規(guī)劃等許多領(lǐng)域都有應(yīng)用。2.

3、1 粒子群優(yōu)化算法的起源粒子群優(yōu)化(PSO)算法是由Kennedy和Eberhart于1995年用計(jì)算機(jī)模擬鳥群覓食這一簡(jiǎn)單的社會(huì)行為時(shí),受到啟發(fā),簡(jiǎn)化之后而提出的。設(shè)想這樣一個(gè)場(chǎng)景:一群鳥隨機(jī)的分布在一個(gè)區(qū)域中,在這個(gè)區(qū)域里只有一塊食物。所有的鳥都不知道食物在哪里。但是他們知道當(dāng)前的位置離食物還有多遠(yuǎn)。那么找到食物的最優(yōu)策略是什么呢。最簡(jiǎn)單有效的方法就是追尋自己視野中目前離食物最近的鳥。如果把食物當(dāng)作最優(yōu)點(diǎn),而把鳥離食物的距離當(dāng)作函數(shù)的適應(yīng)度,那么鳥尋覓食物的過程就可以當(dāng)作一個(gè)函數(shù)尋優(yōu)的過程。魚群和鳥群的社會(huì)行為一直引起科學(xué)家的興趣。他們以特殊的方式移動(dòng)、同步,不會(huì)相互碰撞,整體行為看上去非

4、常優(yōu)美。生物學(xué)家CargiReynolds提出了一個(gè)非常有影響的鳥群聚集模型。在他的模擬模型boids中,每一個(gè)個(gè)體遵循:避免與鄰域個(gè)體相沖撞、匹配鄰域個(gè)體的速度、試圖飛向感知到的鳥群中心這三條規(guī)則形成簡(jiǎn)單的非集中控制算法驅(qū)動(dòng)鳥群的聚集,在一系列模擬實(shí)驗(yàn)中突現(xiàn)出了非常接近現(xiàn)實(shí)鳥群聚集行為的現(xiàn)象。該結(jié)果顯示了在空中回旋的鳥組成輪廓清晰的群體,以及遇到障礙物時(shí)鳥群的分裂和再度匯合過程。由此受到啟發(fā),經(jīng)過簡(jiǎn)化提出了粒子群優(yōu)化算法。2.2粒子群優(yōu)化算法的原理在粒子群優(yōu)化算法中,每個(gè)優(yōu)化問題的潛在解都是搜索空間中的一只鳥,稱之為“粒子”。所有的粒子都有一個(gè)由被優(yōu)化的函數(shù)決定的適應(yīng)值,每個(gè)粒子還有一個(gè)速度

5、決定他們飛翔的方向和距離。然后粒子們就追隨當(dāng)前的最優(yōu)粒子在解空間中搜索。優(yōu)化開始時(shí)先初始化為一群隨機(jī)粒子(隨機(jī)解)。然后通過迭代找到最優(yōu)解。在每一次迭代中,粒子通過跟蹤兩個(gè)極值來更新自己。第一個(gè)極值就是整個(gè)種群目前找到的最優(yōu)解。這個(gè)極值是全局極值。另外也可以不用整個(gè)種群而只是用其中一部分作為粒子的鄰居,那么在所有鄰居中的極值就是局部極值。第二個(gè)極值是粒子本身所找到的最優(yōu)解,稱為個(gè)體極值。這是因?yàn)榱W觾H僅通過跟蹤全局極值或者局部極值來更新位置,不可能總是獲得較好的解。這樣在優(yōu)化過程中,粒子在追隨全局極值或局部極值的同時(shí)追隨個(gè)體極值則圓滿的解決了這個(gè)問題。這就是粒子群優(yōu)化算法的原理。在算法開始時(shí),

6、隨機(jī)初始化粒子的位置和速度構(gòu)成初始種群,初始種群在解空間中為均勻分布。其中第i個(gè)粒子在n維解空間的位置和速度可分別表示為Xi=(xi1,xi2,xid)和Vi=(vi1,vi2,vid),然后通過迭代找到最優(yōu)解。在每一次迭代中,粒子通過跟蹤兩個(gè)極值來更新自己的速度和位置。一個(gè)極值是粒子本身到目前為止所找到的最優(yōu)解,這個(gè)極值稱為個(gè)體極值Pbi=(Pbi1,Pbi2,Pbid)。另一個(gè)極值是該粒子的鄰域到目前為止找到的最優(yōu)解,這個(gè)極值稱為整個(gè)鄰域的最優(yōu)粒子Nbesti=(Nbesti1,Nbesti2,Nbestid)。粒子根據(jù)如下的式(2-1)和式(2-2)來更新自己的速度和位置:Vi=Vi+c

7、1·rand()·(Pbesti-Xi)+c2·rand()·(Nbesti-Xi) (2-1)Xi= Xi+ Vi (2-2)式中c1和c2是加速常量,分別調(diào)節(jié)向全局最好粒子和個(gè)體最好粒子方向飛行的最大步長,若太小,則粒子可能遠(yuǎn)離目標(biāo)區(qū)域,若太大則會(huì)導(dǎo)致突然向目標(biāo)區(qū)域飛去,或飛過目標(biāo)區(qū)域。合適的c1,c2可以加快收斂且不易陷入局部最優(yōu)。rand()是0到1之間的隨機(jī)數(shù)。粒子在每一維飛行的速度不能超過算法設(shè)定的最大速度Vmax。設(shè)置較大的Vmax可以保證粒子種群的全局搜索能力,Vmax較小則粒子種群優(yōu)化算法的局部搜索能力加強(qiáng)。粒子群優(yōu)化算法是在模擬鳥群覓

8、食時(shí)受到啟發(fā)提出的。提出之后卻發(fā)現(xiàn)用動(dòng)物或人的認(rèn)知來解釋算法的原理更加完美。在速度更新公式(2-1)中由3個(gè)部分構(gòu)成。第1個(gè)部分是Vi,表示粒子在解空間有按照原有方向和速度進(jìn)行搜索的趨勢(shì),這可以用人在認(rèn)知事物時(shí)總是用固有的習(xí)慣來解釋。第2個(gè)部分是c1·rand()·(Pbesti-Xi),表示粒子在解空間有朝著過去曾碰到的最優(yōu)解進(jìn)行搜索的趨勢(shì),這可以用人在認(rèn)知事物時(shí)總是用過去的經(jīng)驗(yàn)來解釋。第3部分是c2·rand()·(Nbesti-Xi),表示粒子在解空間有朝著整個(gè)鄰域過去曾碰到的最優(yōu)解進(jìn)行搜索的趨勢(shì),這可以用人在認(rèn)知事物時(shí)總可以通過學(xué)習(xí)其他人的知識(shí),

9、也就是分享別人的經(jīng)驗(yàn)來解釋。因此,粒子群優(yōu)化算法實(shí)際上是借用了人或動(dòng)物認(rèn)知事物時(shí)的習(xí)慣,經(jīng)驗(yàn),及學(xué)習(xí)過程來進(jìn)行尋優(yōu)的。粒子在優(yōu)化過程中的運(yùn)動(dòng)軌跡見圖1。圖1 粒子群算法優(yōu)化搜索示意圖3.3粒子群優(yōu)化算法的優(yōu)點(diǎn)粒子群優(yōu)化算法具有以下主要優(yōu)點(diǎn):(1)易于描述;(2)便于實(shí)現(xiàn);(3)要調(diào)整的參數(shù)很少;(4)使用規(guī)模相對(duì)較少的群體;(5)收斂需要評(píng)估函數(shù)的次數(shù)少;(6)收斂速度快粒子群優(yōu)化算法很容易實(shí)現(xiàn),計(jì)算代價(jià)低,由于其內(nèi)存和CPU速度要求都很低。而且,它不需要目標(biāo)函數(shù)的梯度信息,只依靠函數(shù)值。粒子群優(yōu)化算法已被證明是解決許多全局優(yōu)化問題的有效方法。三、粒子群優(yōu)化算法的實(shí)現(xiàn)粒子群優(yōu)化算法具有編程簡(jiǎn)單

10、,易實(shí)現(xiàn)的特點(diǎn),粒子群優(yōu)化算法的流程如圖2所示。下面給出其實(shí)現(xiàn)的具體步驟:步驟1:初始化。初始搜索點(diǎn)的位置X0i及其速度V0i通常是在允許的范圍內(nèi)隨機(jī)產(chǎn)生的,每個(gè)粒子的Pbest坐標(biāo)設(shè)置為其當(dāng)前位置,且計(jì)算出其相應(yīng)的個(gè)體極值(即個(gè)體極值點(diǎn)的適應(yīng)度值),而整個(gè)鄰域的最優(yōu)粒子就是該粒子鄰域中個(gè)體極值中最好的,記錄該最好值的粒子序號(hào),并將Nbesti設(shè)置為該最好粒子的當(dāng)前位置。步驟2:評(píng)價(jià)每一個(gè)粒子。計(jì)算粒子的適應(yīng)度值,如果好于該粒子當(dāng)前的個(gè)體極值,則將Pbest設(shè)置為該粒子的位置,且更新個(gè)體極值。如果在該粒子的鄰域內(nèi)所有粒子的個(gè)體極值中最好的好于當(dāng)前的Nbesti,則將Nbesti設(shè)置為該粒子的位

11、置,記錄該粒子的序號(hào),且更新Nbesti的函數(shù)值。步驟3:粒子的更新。用式(2-1)和式(2-2)對(duì)每一個(gè)粒子的速度和位置進(jìn)行更新。步驟4:檢驗(yàn)是否符合結(jié)束條件。如果當(dāng)前的迭代次數(shù)達(dá)到了預(yù)先設(shè)定的最大次數(shù)(或達(dá)到最小錯(cuò)誤要求),則停止迭代,輸出最優(yōu)解,否則轉(zhuǎn)到步驟2。圖2 粒子群算法優(yōu)化算法流程圖 三、程序和結(jié)果3.1基本粒子群優(yōu)化函數(shù):PSO.mfunction xm,fv = PSO(fitness,N,c1,c2,w,M,D) format long; %-初始化種群的個(gè)體- for i=1:N for j=1:D x(i,j)=randn; %隨機(jī)初始化位置 v(i,j)=randn;

12、 %隨機(jī)初始化速度 endend %-先計(jì)算各個(gè)粒子的適應(yīng)度,并初始化Pi和Pg- for i=1:N p(i)=fitness(x(i,:); y(i,:)=x(i,:);end pg = x(N,:); %Pg為全局最優(yōu) for i=1:(N-1) if fitness(x(i,:)<fitness(pg) pg=x(i,:); endend %-進(jìn)入主要循環(huán),按照公式依次迭代- for t=1:M for i=1:N v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:)+c2*rand*(pg-x(i,:); x(i,:)=x(i,:)+v(i,:); if

13、 fitness(x(i,:)<p(i) p(i)=fitness(x(i,:); y(i,:)=x(i,:); end if p(i)<fitness(pg) pg=y(i,:); end end Pbest(t)=fitness(pg);endxm = pg'fv = fitness(pg);3.2目標(biāo)函數(shù):fitness.mfunction F = fitness(x)F = 0;for i=1:30; F=F+x(i)2;end3.3程序結(jié)果在MATLAB命令窗口中輸入:xm,fv = PSO(fitness,40,2,2,0.5,1000,30)可以得到結(jié)果:xm

14、 = 0.078730243506451 0.096783254226884 -0.043367078465836 -0.067852513508810 0.054996689064950 -0.037899962158029 -0.030907574829250 -0.037872080224026 -0.067869827703363 -0.044069280009346 -0.044344990345638 -0.023687143394873 -0.025355631685365 0.240306909129676fv =四、心得體會(huì)正所謂“紙上得來終覺淺,覺知此事要躬行?!睂W(xué)習(xí)任何知

15、識(shí),僅從理論上去求知,而不去實(shí)踐、探索是不夠的。因此在學(xué)期末來臨之際,我們迎來了MATLAB課程設(shè)計(jì)。 通過為期一周的MATLAB課程設(shè)計(jì),我對(duì)MATLAB這個(gè)仿真軟件有了更進(jìn)一步的認(rèn)識(shí)和了解。在這一周半時(shí)間里,我通過自己摸索,查閱資料,并且在指導(dǎo)老師賴?yán)蠋煹闹笇?dǎo)下完成了,并最終將課程設(shè)計(jì)報(bào)告總結(jié)完畢。在整個(gè)設(shè)計(jì)過程中我懂得了許多東西,也培養(yǎng)了獨(dú)立思考和設(shè)計(jì)的能力,樹立了對(duì)知識(shí)應(yīng)用的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作和生活有非常大的幫助,并且提高了自己的動(dòng)手實(shí)踐操作能力, 使自己充分體會(huì)到了在設(shè)計(jì)過程中的成功喜悅。雖然這個(gè)設(shè)計(jì)做的不怎么好,但是在設(shè)計(jì)過程中所學(xué)到的東西是這次課程設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。在沒有做課程設(shè)計(jì)以前,覺得課程設(shè)計(jì)只是對(duì)知識(shí)的單純總結(jié),但是通過這次課程設(shè)計(jì)發(fā)現(xiàn)自己的看法有點(diǎn)太片面,課程設(shè)計(jì)不僅是對(duì)前面所學(xué)知識(shí)的一種檢驗(yàn),也是對(duì)自己能力的一種提高,通過這次課程設(shè)計(jì)使自己明白了原來的那點(diǎn)知識(shí)是非常欠缺的,要學(xué)習(xí)的東西還很多,通過這次課程設(shè)計(jì)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論