資源簡介
該算法是混沌運動與粒子群算法相結合的混沌粒子群算法,可以提高算法的全局搜索能力。

代碼片段和文件信息
%%?清空環境
clc
clear
%%?參數初始化
%粒子群算法中的兩個參數
c1?=?1.49445;
c2?=?1.49445;
D=10;%粒子維數
maxgen=1000;???%?進化次數??
sizepop=20;???%種群規模
u=2;%混沌系數
Vmax=1;
Vmin=-1;
popmax=5;
popmin=-5;
randdata1=?xlsread(‘randdata1‘);
randdata2=?xlsread(‘randdata2‘);
%%?產生初始粒子和速度
for?i=1:sizepop
????%隨機產生一個種群
????pop(i:)=randdata1(i:);????%初始種群
????V(i:)=randdata2(i:);??%初始化速度
????%計算適應度
????fitness(i)=fun(pop(i:));???%粒子的適應值
end
%%?個體極值和群體極值
[bestfitness?bestindex]=min(fitness);
zbest=pop(bestindex:);???%全局最佳
gbest=pop;????%個體最佳
fitnessgbest=fitness;???%個體最佳適應度值
fitnesszbest=bestfitness;???%全局最佳適應度值
%%?迭代尋優
for?i=1:maxgen
????
????for?j=1:sizepop
????????
????????%速度更新
????????V(j:)?=?V(j:)?+?c1*rand*(gbest(j:)?-?pop(j:))?+?c2*rand*(zbest?-?pop(j:));
????????V(jfind(V(j:)>Vmax))=Vmax;
????????V(jfind(V(j:) ????????
????????%種群更新
????????pop(j:)=pop(j:)+V(j:);
????????pop(jfind(pop(j:)>popmax))=popmax;
????????pop(jfind(pop(j:) ????????
????????%適應度值
????????fitness(j)=fun(pop(j:));?
???
????end
????
????for?j=1:sizepop
????????
????????%個體最優更新
????????if?fitness(j)?????????????gbest(j:)?=?pop(j:);
????????????fitnessgbest(j)?=?fitness(j);
????????end
????????
????????%群體最優更新
????????if?fitness(j)?????????????zbest?=?pop(j:);
????????????fitnesszbest?=?fitness(j);
????????end
????end?
??
????%%對粒子群最優位置進行混沌優化
??????y(1:)=(zbest-popmin)/(popmax-popmin);%將最優位置映射到Logistic方程的定義域[01]
??????fitness(1)=fun(y(1:));?
????????for?t=1:sizepop-1?%通過Logistic方程進行M次迭代,得到混沌序列
????????????for?e=1:D
????????y(t+1e)=u*y(te)*(1-y(te));??
????????????end
????????y(t+1:)=popmin+(popmax-popmin)*y(t+1:);%將混沌序列逆射到原解空間
????????fitness(t+1)=fun(y(t+1:));?%計算混沌變量可行解序列的適應度值
????????end
[ybestfitness?ybestindex]=min(fitness);%尋找最優混沌可行解矢量
??ybest=y(ybestindex:);
????????ran=1+fix(rand()*sizepop);%產生一隨機數1~sizepop之間
????????pop(ran:)=ybest;
????yy(i)=fitnesszbest;????
????????
end
%%?結果分析
plot(yy‘m‘‘LineWidth‘5)
title(‘多峰函數-Generaliaed?Rastrigin最優個體適應度曲線‘‘fontsize‘20);
xlabel(‘迭代次數‘‘fontsize‘25);ylabel(‘適應度值‘‘fontsize‘25);
legend(‘混沌粒子群算法‘30);
grid?on
hold?on
display(‘混沌粒子群算法輸出結果‘);
zbest
fv1=yy(end);
fv1
fv=fitnesszbest;
fv
minbest=min(yy)
meanbest=mean(yy)
stdbest=std(yy)
plot(fv‘b‘‘LineWidth‘5)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2657??2018-01-25?10:27??混沌PSO\APSO.m
?????文件????????761??2018-01-25?00:32??混沌PSO\fun.m
?????文件??????10095??2018-01-24?21:37??混沌PSO\randdata1.xlsx
?????文件??????10124??2018-01-24?21:38??混沌PSO\randdata2.xlsx
?????目錄??????????0??2018-03-07?09:18??混沌PSO
-----------?---------??----------?-----??----
????????????????23637????????????????????5
- 上一篇:QT做 的簡單登錄界面
- 下一篇:緩沖區溢出攻擊
評論
共有 條評論