資源描述:
《基于MATLAB的粒子群優(yōu)化算法的應(yīng)用示例》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、對于函數(shù)f=x*sin(x)*cos(2*x)?2*x*sin(3*x),求其在區(qū)間[0,20]上該函數(shù)的最大值。?初始化種群已知位置限制[0,20],由于一維問題較為簡單,因此可以取初始種群N為50,迭代次數(shù)為100,當然空間維數(shù)d也就是1。位置和速度的初始化即在位置和速度限制內(nèi)隨機生成一個Nxd的矩陣,對于此題,位置初始化也就是在0?20內(nèi)隨機生成一個50x1的數(shù)據(jù)矩陣,而對于速度則不用考慮約束,一般直接在0?1內(nèi)隨機生成一個50x1的數(shù)據(jù)矩陣。此處的位置約束也可以理解為位置限制,而速度限制是保
2、證粒了步長不超限制的,一般設(shè)置速度限制為卜1,1]。粒子群的另一個特點就是記錄每個個體的歷史最優(yōu)和種群的歷史最優(yōu),因此而二者對應(yīng)的最優(yōu)位置和最優(yōu)值也需要初始化。其中每個個體的歷史最優(yōu)位置可以先初始化為當前位置,而種群的歷史最優(yōu)位置則可初始化為原點。對于最優(yōu)值,如果求最大值則初始化為負無窮,相反地初始化為正無窮。每次搜尋都需要將當前的適應(yīng)度和最優(yōu)解同歷史的記錄值進行對比,如果超過歷史最優(yōu)值,則更新個體和種群的歷史最優(yōu)位置和最優(yōu)解。?速度與位置的更新速度和位置更新是粒子群算法的核心,其原理表達式和更新方
3、式如下:J怙=W?匕d+C]?Sd一XQ+C2-r2?5gd—X沏)[x沏=x汩+j每次更新完速度和位置都需要考慮速度和位置的限制,需要將其限制在規(guī)定范圍內(nèi),此處僅舉出一個常規(guī)方法,即將超約束的數(shù)據(jù)約束到邊界(當位置或者速度超出初始化限制時,將其拉回靠近的邊界處)。當然,你不用擔心他會停住不動,因為每個粒子還有慣性和其他兩個參數(shù)的影響。代碼如下:clc;clear;closeall;%%初始化種群f=@(x)x.*sin(x).*cos(2*x)?2*x?*sin(3*x);%函數(shù)表達式figure
4、(l);ezplot(f,[0,0.01,20]);N=50;%初始種群個數(shù)d=1;%空間維數(shù)ger=100;%最大迭代次數(shù)limit=
5、0,20];%設(shè)置位置參數(shù)限制vlimit=[-l,1];%設(shè)置速度限制w=0.8;%慣性權(quán)重cl=0.5;%自我學習因子c2=0.5;%群體學習因子fori=l:dx=1)+(limit(i,2)-limit(i,1))*rand(N,d);%初始不中群的位置endv=rand(N,d);%初始種群的速度xm=x;%每個個體的歷史最佳位置ym=zeros(l,d
6、);%種群的歷史最佳位置fxm=zeros(N,1);%每個個體的歷史最佳適應(yīng)度fym=-inf;%種群歷史最佳適應(yīng)度holdonplot(xm,f(xm),ToJ;titleC初始狀態(tài)圖');figure(2)%%群體更新iter=1:record=zeros(ger,1);%記錄器whileiterv二gerfx=f(x);%個體當前適應(yīng)度fori=1:Niffxm(i)7、iffymvlimit(2))=vlimit(2);v(vlimit(2))=limit(2);x(x8、rd(iter)=fym;%最大值記錄%x0=0:0.01:20;%plot(x0,f(x0),b;x,f(x),,ro,);title(,狀態(tài)位置變化J%pause(O.l)iter=iter+1;endfigure(3);plot(record);title(!收斂過程')xO=0:0.01:20;figure(4);plot(x0,f(xO),fb-',x,f(x),'ro');title('最終狀態(tài)位置')disp(『最大值:um2str(fym)]);disp([‘變量取值:um2
9、str(ym)]);