粒子群算法
fucntin moan()
clc;ileac rlalclos;ea ll;t
i;c %程 序运计时行
0=0.0E01 ; 允%许差误M
axNmu=00; 1 粒%子大最迭次数代
narvs=1 ; 目标函%的自变数量数个p
raitclesiz=30e ; % 子群粒模规c1=2
; %每个 粒的子体个习因子学也称,加速为常数
c2=2; 每个粒%的子社会习学因子,称也为速常加
w数=.60 ; %惯性因 子
vamx0.=8; % 粒的子最飞翔速大度
=-5x1+0r*and(paritcesilezn,ras); v % 粒子在的所置
位v=2ra*dnpar(ictleszei,anvr);s %粒 的飞子速翔
%度i用niln定义e适度函应数以便子函数文将件与主序文程件在放一,起%目标
数函:y=是1(2.+1*1(x+-2*x.2^.)e*x(-x.p^22/))%
iniln命e定令适义应度数函下如:fit
enss=ilinn('1/e(+(121.*(1-+x*x2^2..)e*xp-x.(2^/2)))''x');
%,inlne定i义适应的函度数会使序程运行度速大降大低for
i =:1arpitclsizee
fo j=r1:nrvasf(
)i=itnfse(s(i,x));
enj
enddp
resnoabestlx=_;x
prsenaoblset_afvl=af;[
glbolbest_aafval i=]mniperso(anlbse_favtal;)
lgobablsetx_pe=rsnoabels_xti(:),;k=1
;
hiwel
orfi =:1arptclisizee
or fj1=na:rv
s(if)=fintsse(x(i,j));
ndei
f(f)
persnolbesta_avalf(i=f)i()
;prsenaolbste_x(,:i)=(ix,:;)
ed
nnde[
logalbesbt_avflai ]=mn(iprsenaolbse_tfval)a
;logalbebst_=xepsronalesbt_(i,:);xf
roi 1:pa=ritlcsezie %更粒新群里子每个体的最新个置位
v(i,)=:w*v(,i)+:c*r1an*(depsronlabstex_i(:,)x-i(,):)...
c2*r+ad*(gnolalbbes_txx(i-:,);)f
r j=o:n1avrs % 断判子粒的飞翔度是否速过超最了大翔飞速度
if (i,v)>jmvxa
;v(ij),=maxv;else
f vi(i,)
i(,j)=v-amx;
end
nd
e(xi:)=x,i(:,)+(v,i:;)end
ifabs( golblaesbtfaval_
=k+k1;en
d
Valu1=1/geoballbet_sfaval1-;Va ule=num1s2rtV(luae)1
% ;srcatt指可令实现字符以组合的出输
dsp(isrcat('the tmaxiumm vlae',u=',Value1));'
%出输最值大所在横的标坐位置
Vlaue=glo2babelstx_ V;auel=nu22mtrsVa(ul2e)
di;sps(rtcat('hteco resporndngi cordoinate''=,,V'luea)2)
;=x-:050.1:5
y=;2.*(1-x12+*x.2^.)ex*p-(x.2/2);^
plt(x,yo'm-',,l'ienwitdh,'3);h
ol ond;
lopt(gloalbbse_xt,/1logalbebs_tafal-v1,kp'','ilnwedtih'4,);
legend'(目标函'数'搜,到索的大值'最;)lxbal(e'')x;yabell('y');grid on;tco
;