⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pso.asv

📁 粒子群算法、遗传算法优化RBF径向基神经网络。
💻 ASV
字号:
%用粒子群算法优化RBF网络权值clear allclose allG =250;   %迭代次数n = 12;   %粒子维数m = 20;   %种群规模w = 0.1;  %算法参数c1 = 2;   %算法参数c2 = 2;   %算法参数%取粒子的取值范围for i = 1:3    MinX(i) = 0.1*ones(1);    MaxX(i) = 3*ones(1);endfor i = 4:1:9    MinX(i) = -3*ones(1);    MaxX(i) = 3*ones(1);endfor i = 10:1:12    MinX(i) = -ones(1);    MaxX(i) = ones(1);end%初始化种群poppop = rands(m,n);for i = 1:m    for j = 1:3        if pop(i,j) < MinX(j)            pop(i,j) = MinX(j);        end        if pop(i,j) > MaxX(j)            pop(i,j) = MaxX(j);        end    end    for j = 4:9        if pop(i,j) < MinX(j)            pop(i,j) = MinX(j);        end        if pop(i,j) > MaxX(j)            pop(i,j) = MaxX(j);        end    end    for j = 10:12        if pop(i,j) < MinX(j)            pop(i,j) = MinX(j);        end        if pop(i,j) > MaxX(j)            pop(i,j) = MaxX(j);        end    endend        %初始化粒子速度V = 0.1*rands(m,n);BsJ = 0;%根据初始化的种群计算个体好坏,找出群体最优和个体最优for s = 1:m    indivi = pop(s,:);    %抽出个体    [indivi,BsJ] = fitness(indivi,BsJ);   %求出每个粒子对应的误差    Error(s) = BsJ;end[OderEr,IndexEr] = sort(Error);    %对误差进行排序Error;Errorleast = OderEr(1);    %求出最小误差for i = 1:m    if Errorleast == Error(i)        gbest = pop(i,:);        break;    endendibest = pop;for kg = 1:G    kg    for s = 1:m;%个体有4%的变异概率                for j = 1:n            for i = 1:m                if rand(1)<0.04                    pop(i,j) = rands(1);                end            end        end%r1,r2为粒子群算法参数                r1 = rand(1);        r2 = rand(1);%个体和速度更新                V(s,:) = w*V(s,:) + c1*r1*(ibest(s,:)-pop(s,:)) + c2*r2*(gbest-pop(s,:));        pop(s,:) = pop(s,:) + 0.3*V(s,:);                for j = 1:3            if pop(s,j) < MinX(j)                pop(s,j) = MinX(j);            end            if pop(s,j) > MaxX(j)                pop(s,j) = MaxX(j);            end        end        for j = 4:9            if pop(s,j) < MinX(j)                pop(s,j) = MinX(j);            end            if pop(s,j) > MaxX(j)                pop(s,j) = MaxX(j);            end        end        for j = 10:12            if pop(s,j) < MinX(j)                pop(s,j) = MinX(j);            end            if pop(s,j) > MaxX(j)                pop(s,j) = MaxX(j);            end        end%求更新后的每个个体适应度值                [pop(s,:),BsJ] = chap10_3b(pop(s,:),BsJ);        error(s) = BsJ;%根据适应度值对个体最优和群体最优进行更新                if error(s)<Error(s)            ibest(s,:) = pop(s,:);            Error(s) = error(s);        end        if error(s)<Errorleast            gbest = pop(s,:);            Errorleast = error(s);        end    end        Best(kg) = Errorleast;endplot(Best);save pfile1 gbest;    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -