资源简介

在MATLAB里用粒子群算法求基准测试函数Griewank的极值

资源截图

代码片段和文件信息

%%  绘制目标函数曲线
figure
[xy]=meshgrid(-5:0.1:5-5:0.1:5);
z=0.00025*(x.^2+y.^2)-cos(x)*cos(y./sqrt(2))+1;
mesh(xyz);
hold on



%%  参数初始化

c1=1.49445;    
c2=1.49445;    
maxgen=1000;      % 最大迭代次数
sizepop=20;       %种群规模
Vmax=1;
Vmin=-1;
popmax=5;
popmin=-5;


%%  产生初始粒子和速度
for i=1:sizepop
    % 随机产生一个种群
    pop(i:)=5*rands(12);    %初始种群
    V(i:)=rands(12);        %初始化速度
    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:));
    

评论

共有 条评论