資源簡介
量子粒子群算法的matlab實現,有程序說明

代碼片段和文件信息
popsize=20;????%種群規模
MAXITER=2000;???%最大迭代次數
dimension=30;???%維數
irange_l=-5.12;??
irange_r=5.12;
xmax=10;????????%x的變化范圍
sum1=0;
sum2=0;
mean=0;
st=0;
runno=10;
data1=zeros(runnoMAXITER);???%10*2000型矩陣
for?run=1:runno
T=cputime;?????????%程序開始時間
x=(irange_r-?irange_l)*rand(popsizedimension1)?+?irange_l;???%初始化種群,將x的范圍映射到[-5.125.12]空間內
pbest=x;?????%個體極值
gbest=zeros(1dimension);????%全局極值
for?i=1:popsize??????????????????????
????f_x(i)=f3(x(i:));???????????%更新個體極值,f3是什么函數
????f_pbest(i)=f_x(i);
end
???
???
????g=min(find(f_pbest==min(f_pbest(1:popsize))));???%更新全局極值
????gbest=pbest(g:);
???
????f_gbest=f_pbest(g);
MINIUM=f_pbest(g);???????????????????????
for?t=1:MAXITER
??
????beta=(1-0.5)*(MAXITER-t)/MAXITER+0.5;?????????????????%學習系數
????mbest=sum(pbest)/popsize;
???????
?for?i=1:popsize??
????????fi=rand(1dimension);
????????p=fi.*pbest(i:)+(1-fi).*gbest;
????????u=rand(1dimension);
????????b=beta*(mbest-x(i:));
????????v=-log(u);
????????y=p+((-1).^ceil(0.5+rand(1dimension))).*b.*v;
????????x(i:)=y;
????????x(i:)=sign(y).*min(abs(y)xmax);?
??????????
????????????f_x(i)=f3(x(i:));
????????????if?f_x(i) ????????????????pbest(i:)=x(i:);
????????????????f_pbest(i)=f_x(i);
????????????end
????????????if?f_pbest(i) ????????????????gbest=pbest(i:);
????????????????f_gbest=f_pbest(i);
????????????end????????????
????????????MINIUM=f_gbest;????????????????????
?end
????data1(runt)=MINIUM;
????if?MINIUM>1e-007
????????mean=t;
????end
??end
sum1=sum1+mean;??
sum2=sum2+MINIUM;
?%MINIUM
time=cputime-T;
st=st+time;
end
av1=sum1/10;??%輸出平均收驗代數
av2=sum2/10;??%輸出平均最優解
st/10??%就是最后anw輸出的解
????????
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1837??2009-10-17?16:51??qpso.m
-----------?---------??----------?-----??----
?????????????????1837????????????????????1
- 上一篇:圖像清晰度評價函數
- 下一篇:Matlab遺傳算法工具箱gaot及安裝
評論
共有 條評論