版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
.z......資料....華東交通大學MATLAB程序設計報告書課題名稱 :基于MATLAB的粒子群優(yōu)化算法的實現(xiàn)姓名:學號:014專業(yè):控制科學與工程2016年11月20日基于MATLAB的粒子群優(yōu)化算法的實現(xiàn)一、課程選題目的本次課程設計的課題為《基于MATLAB的粒子群優(yōu)化算法的實現(xiàn)》,主要為學會運用MATLAB對實際算法編程,加深對粒子群優(yōu)化算法的理解,并為今后熟練使用MATLAB進行系統(tǒng)的分析仿真和設計奠定基礎。數(shù)值計算分析可以幫助更深入地理解理論知識,并為將來使用MATLAB進行各領域數(shù)值分析分析和實際應用打下基礎。此次課程主要是為了進一步熟悉對MATLAB軟件的使用,以及學會利用MATLAB對數(shù)值運算這種實際問題進行處理,將理論應用于實際,加深對它的理解。二、粒子群優(yōu)化算法原理優(yōu)化是科學研究、工程技術和經(jīng)濟管理等領域的重要研究工具。它所研究的問題是討論在眾多的方案中尋找最優(yōu)方案。例如,工程設計中怎樣選擇設計參數(shù),使設計方案既滿足設計要求又能降低成本;資源分配中,怎樣分配有限資源,使分配方案既能滿足各方面的基本要求,又能獲得好的經(jīng)濟效益。在人類活動的各個領域中,諸如此類,不勝枚舉。優(yōu)化這一技術,正是為這些問題的解決,提供理論基礎和求解方法,它是一門應用廣泛、實用性很強的科學。近十余年來,粒子群優(yōu)化算法作為群體智能算法的一個重要分支得到了廣泛深入的研究,在路徑規(guī)劃等許多領域都有應用。2.1粒子群優(yōu)化算法的起源粒子群優(yōu)化(PSO)算法是由Kennedy和Eberhart于1995年用計算機模擬鳥群覓食這一簡單的社會行為時,受到啟發(fā),簡化之后而提出的。設想這樣一個場景:一群鳥隨機的分布在一個區(qū)域中,在這個區(qū)域里只有一塊食物。所有的鳥都不知道食物在哪里。但是他們知道當前的位置離食物還有多遠。則找到食物的最優(yōu)策略是什么呢。最簡單有效的方法就是追尋自己視野中目前離食物最近的鳥。如果把食物當作最優(yōu)點,而把鳥離食物的距離當作函數(shù)的適應度,則鳥尋覓食物的過程就可以當作一個函數(shù)尋優(yōu)的過程。魚群和鳥群的社會行為一直引起科學家的興趣。他們以特殊的方式移動、同步,不會相互碰撞,整體行為看上去非常優(yōu)美。生物學家CargiReynolds提出了一個非常有影響的鳥群聚集模型。在他的模擬模型boids中,每一個個體遵循:避免與鄰域個體相沖撞、匹配鄰域個體的速度、試圖飛向感知到的鳥群中心這三條規(guī)則形成簡單的非集中控制算法驅動鳥群的聚集,在一系列模擬實驗中突現(xiàn)出了非常接近現(xiàn)實鳥群聚集行為的現(xiàn)象。該結果顯示了在空中回旋的鳥組成輪廓清晰的群體,以及遇到障礙物時鳥群的分裂和再度匯合過程。由此受到啟發(fā),經(jīng)過簡化提出了粒子群優(yōu)化算法。2.2粒子群優(yōu)化算法的原理在粒子群優(yōu)化算法中,每個優(yōu)化問題的潛在解都是搜索空間中的一只鳥,稱之為“粒子”。所有的粒子都有一個由被優(yōu)化的函數(shù)決定的適應值,每個粒子還有一個速度決定他們飛翔的方向和距離。然后粒子們就追隨當前的最優(yōu)粒子在解空間中搜索。優(yōu)化開始時先初始化為一群隨機粒子(隨機解)。然后通過迭代找到最優(yōu)解。在每一次迭代中,粒子通過跟蹤兩個極值來更新自己。第一個極值就是整個種群目前找到的最優(yōu)解。這個極值是全局極值。另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,則在所有鄰居中的極值就是局部極值。第二個極值是粒子本身所找到的最優(yōu)解,稱為個體極值。這是因為粒子僅僅通過跟蹤全局極值或者局部極值來更新位置,不可能總是獲得較好的解。這樣在優(yōu)化過程中,粒子在追隨全局極值或局部極值的同時追隨個體極值則圓滿的解決了這個問題。這就是粒子群優(yōu)化算法的原理。在算法開始時,隨機初始化粒子的位置和速度構成初始種群,初始種群在解空間中為均勻分布。其中第i個粒子在n維解空間的位置和速度可分別表示為*i=(*i1,*i2,…,*id)和Vi=(vi1,vi2,…,vid),然后通過迭代找到最優(yōu)解。在每一次迭代中,粒子通過跟蹤兩個極值來更新自己的速度和位置。一個極值是粒子本身到目前為止所找到的最優(yōu)解,這個極值稱為個體極值Pbi=(Pbi1,Pbi2,…,Pbid)。另一個極值是該粒子的鄰域到目前為止找到的最優(yōu)解,這個極值稱為整個鄰域的最優(yōu)粒子Nbesti=(Nbesti1,Nbesti2,…,Nbestid)。粒子根據(jù)如下的式(2-1)和式(2-2)來更新自己的速度和位置:Vi=Vi+c1·rand()·(Pbesti-*i)+c2·rand()·(Nbesti-*i)(2-1)*i=*i+Vi(2-2)式中c1和c2是加速常量,分別調節(jié)向全局最好粒子和個體最好粒子方向飛行的最大步長,若太小,則粒子可能遠離目標區(qū)域,若太大則會導致突然向目標區(qū)域飛去,或飛過目標區(qū)域。合適的c1,c2可以加快收斂且不易陷入局部最優(yōu)。rand()是0到1之間的隨機數(shù)。粒子在每一維飛行的速度不能超過算法設定的最大速度Vma*。設置較大的Vma*可以保證粒子種群的全局搜索能力,Vma*較小則粒子種群優(yōu)化算法的局部搜索能力加強。粒子群優(yōu)化算法是在模擬鳥群覓食時受到啟發(fā)提出的。提出之后卻發(fā)現(xiàn)用動物或人的認知來解釋算法的原理更加完美。在速度更新公式(2-1)中由3個部分構成。第1個部分是Vi,表示粒子在解空間有按照原有方向和速度進行搜索的趨勢,這可以用人在認知事物時總是用固有的習慣來解釋。第2個部分是c1·rand()·(Pbesti-*i),表示粒子在解空間有朝著過去曾碰到的最優(yōu)解進行搜索的趨勢,這可以用人在認知事物時總是用過去的經(jīng)驗來解釋。第3部分是c2·rand()·(Nbesti-*i),表示粒子在解空間有朝著整個鄰域過去曾碰到的最優(yōu)解進行搜索的趨勢,這可以用人在認知事物時總可以通過學習其他人的知識,也就是分享別人的經(jīng)驗來解釋。因此,粒子群優(yōu)化算法實際上是借用了人或動物認知事物時的習慣,經(jīng)驗,及學習過程來進行尋優(yōu)的。粒子在優(yōu)化過程中的運動軌跡見圖1。圖1粒子群算法優(yōu)化搜索示意圖3.3粒子群優(yōu)化算法的優(yōu)點粒子群優(yōu)化算法具有以下主要優(yōu)點:(1)易于描述;(2)便于實現(xiàn);(3)要調整的參數(shù)很少;(4)使用規(guī)模相對較少的群體;(5)收斂需要評估函數(shù)的次數(shù)少;(6)收斂速度快粒子群優(yōu)化算法很容易實現(xiàn),計算代價低,由于其存和CPU速度要求都很低。而且,它不需要目標函數(shù)的梯度信息,只依靠函數(shù)值。粒子群優(yōu)化算法已被證明是解決許多全局優(yōu)化問題的有效方法。三、粒子群優(yōu)化算法的實現(xiàn)粒子群優(yōu)化算法具有編程簡單,易實現(xiàn)的特點,粒子群優(yōu)化算法的流程如圖2所示。下面給出其實現(xiàn)的具體步驟:步驟1:初始化。初始搜索點的位置*0i及其速度V0i通常是在允許的圍隨機產(chǎn)生的,每個粒子的Pbest坐標設置為其當前位置,且計算出其相應的個體極值(即個體極值點的適應度值),而整個鄰域的最優(yōu)粒子就是該粒子鄰域中個體極值中最好的,記錄該最好值的粒子序號,并將Nbesti設置為該最好粒子的當前位置。步驟2:評價每一個粒子。計算粒子的適應度值,如果好于該粒子當前的個體極值,則將Pbest設置為該粒子的位置,且更新個體極值。如果在該粒子的鄰域所有粒子的個體極值中最好的好于當前的Nbesti,則將Nbesti設置為該粒子的位置,記錄該粒子的序號,且更新Nbesti的函數(shù)值。步驟3:粒子的更新。用式(2-1)和式(2-2)對每一個粒子的速度和位置進行更新。步驟4:檢驗是否符合結束條件。如果當前的迭代次數(shù)達到了預先設定的最大次數(shù)(或達到最小錯誤要求),則停止迭代,輸出最優(yōu)解,否則轉到步驟2。圖2粒子群算法優(yōu)化算法流程圖三、程序和結果3.1基本粒子群優(yōu)化函數(shù):PSO.mfunction[*m,fv]=PSO(fitness,N,c1,c2,w,M,D)formatlong;%初始化種群的個體fori=1:Nforj=1:D*(i,j)=randn;%隨機初始化位置v(i,j)=randn;%隨機初始化速度endend%先計算各個粒子的適應度,并初始化Pi和Pgfori=1:Np(i)=fitness(*(i,:));y(i,:)=*(i,:);endpg=*(N,:);%Pg為全局最優(yōu)fori=1:(N-1)iffitness(*(i,:))<fitness(pg)pg=*(i,:);endend%進入主要循環(huán),按照公式依次迭代fort=1:Mfori=1:Nv(i,:)=w*v(i,:)+c1*rand*(y(i,:)-*(i,:))+c2*rand*(pg-*(i,:));*(i,:)=*(i,:)+v(i,:);iffitness(*(i,:))<p(i)p(i)=fitness(*(i,:));y(i,:)=*(i,:);endifp(i)<fitness(pg)pg=y(i,:);endendPbest(t)=fitness(pg);end*m=pg';fv=fitness(pg);3.2目標函數(shù):fitness.mfunctionF=fitness(*)F=0;fori=1:30;F=F+*(i)^2;end3.3程序結果在MATLAB命令窗口中輸入:[*m,fv]=PSO(fitness,40,2,2,0.5,1000,30)可以得到結果:*m=0.6451-0.76920.68840.7582-0.58360.4210-0.3794-0.88100.4950-0.8029-0.83210.9520-0.9250-0.1687-0.2353-0.4026-0.3363-0.22990.01390.9775-0.0530-0.93460.3750-0.8693-0.5638-0.4873-0.53650.9676-0.51960.2513fv=0.1029四、心得體會正所謂“紙上得來終覺淺,覺知此事要躬行。”學習任何知識,僅從理論上去求知,而不去實踐、探索是不夠的。因此在學期末來臨之際,我們迎來了MATLAB課程設計。通過為期一周的MATLAB課程設計,我對MATLAB這個仿真軟件有了更進一步的認識和了解。在這一周半時間里,我通過自己摸索,查閱資料,并且在指導老師賴老師的指導下完成了,并最終將課程設計報告總結完畢。在整個設計過程中我懂得了許多東西,也培養(yǎng)了獨立思考和設計的能力,樹立了對知識應用的信心,相信會對今后的學習工作和生活有非常大的幫助,并且提高了自己的動手實踐操作能力,使自己充分體會到了在設計過程中的成功喜悅。雖然這個設計做的不怎么好,但是在設計過程中所學到的東西是這次課程設計的最大收獲和財富,使我終身受益。在沒有做課程設計以前,覺得課程設計只是對知識的單純總結,但是通過這次課程設計發(fā)現(xiàn)自己的看法有點太片面,課程設計不僅是對前面所學知識的一種檢驗,也是對自己能力的一種提高,通過這次
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《癌癥疼痛診療規(guī)范》課件
- 《孔子的簡介》課件
- 人物訪談報告培訓課件
- 單位管理制度集合大合集員工管理十篇
- 單位管理制度集粹匯編人事管理篇十篇
- 單位管理制度匯編大合集人力資源管理篇十篇
- 《神經(jīng)收集電子教案》課件
- 單位管理制度分享匯編【人力資源管理】
- 單位管理制度范例選集職員管理篇
- 單位管理制度呈現(xiàn)合集職員管理篇
- 微創(chuàng)手術機器人醫(yī)療器械行業(yè)營銷策略方案
- 軟件系統(tǒng)日常運維服務方案
- GB/T 11017.2-2024額定電壓66 kV(Um=72.5 kV)和110 kV(Um=126 kV)交聯(lián)聚乙烯絕緣電力電纜及其附件第2部分:電纜
- 飛灰二惡英類低溫催化分解污染控制技術規(guī)范-編制說明(征求意見稿)
- 24年追覓在線測評28題及答案
- 會計憑證附件管理制度范文
- GB/T 44462.1-2024工業(yè)互聯(lián)網(wǎng)企業(yè)網(wǎng)絡安全第1部分:應用工業(yè)互聯(lián)網(wǎng)的工業(yè)企業(yè)防護要求
- DB34T 3703.3-2021 長大橋梁養(yǎng)護指南 第3部分:定期檢查工作驗收
- 保潔突發(fā)事件應急預案
- 膽囊術后并發(fā)癥護理
- 醫(yī)療廢物暫存間消毒制度
評論
0/150
提交評論