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

📄 p.m

📁 This M-file is about using Particle Swarm Algorithm (PSO) to train a Fuzzy Neural Network.
💻 M
字号:
clc;
clear;

n_p=5;
X0=kron(ones(n_p,1),[0 0]);
Vmax=kron(ones(n_p,1),[.01 .01]);
Xmax=kron(ones(n_p,1),[4 2]);
X=rand(n_p,2).*(Xmax-X0)+X0;
V=randn(n_p,2).*Vmax;
t=0:.1:4;
KL=kron(ones(n_p,1),(t+1).^2);
KL=KL';
Y=zeros(41,n_p);
for k=1:n_p
    Y(:,k)=(t.^2)+X(k,1)*(t)+X(k,2);
end;
f=inline('(1/41)*sum((Y-KL).^2)');

obj=f(Y,KL);
Pbest=obj;
PbestX=X;
[gbest gbest_I]=min(Pbest);
gbest_X=X(gbest_I,:);

for i=1:10000

    fact=.3;

    rp=rand(n_p,2);
    rg=rand(n_p,2);
    w=.95;

    V=w*V+fact*rp.*(PbestX-X)+.7*rg.*(kron(ones(n_p,1),gbest_X)-X);
    X=X+V;
    for j=1:n_p

        if X(j,1)>Xmax(j,1)
            X(j,1)=Xmax(j,1);
        elseif X(j,1)<X0(j,1)
            X(j,1)=X0(j,1);
        end

        if X(j,2)>Xmax(j,2)
            X(j,2)=Xmax(j,2);
        elseif X(j,2)<X0(j,2)
            X(j,2)=X0(j,2);
        end
    end
    for k=1:n_p
        Y(:,k)=(t.^2)+X(k,1)*(t)+X(k,2);
    end;
    obj=f(Y,KL);
    for j=1:n_p
        if obj(j)<=Pbest
            Pbest(j)=obj(j);
            PbestX(j,:)=X(j,:);
        end
        if obj(j)<gbest
            gbest=obj(j);
            gbest_I=j;
            gbest_X=X(j,:);
        end
    end

end




⌨️ 快捷键说明

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