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

📄 ycc.m

📁 一个微分元模型PSO的MATLAB源码,供参考.
💻 M
字号:
xmin=input('请输入变量的下限:');
xmax=input('请输入变量的上限:');
popsize=input('请输入变量的数目:');
dimsize=input('请输入粒子的维数:');
pop=unifrnd(xmin,xmax,popsize,2*dimsize);
for i=1:popsize
        obfunct1=sin(sqrt(pop(i,1)^2+pop(i,2)^2))^2-0.5;
        obfunct2=(1.0+0.001*(pop(i,1)^2+pop(i,2)^2))^2;
        objvalue(i,1)=obfunct1/obfunct2-0.5;
end
Pbest=pop(:,1:dimsize);
[gbest,xindex]=max(objvalue);
xtemp=pop(xindex,1:dimsize);
Gbest=xtemp;
c1min=input('请输入c1的最小值:');
alpha=input('请输入alpha的值:');
c2max=input('请输入c2的最大值:');
beta=input('请输入beta的值:');
generation=input('请输入进化代数:');
speedmax=input('请输入速度的最大值:');
for t=1:popsize
     for dimIndex = 1:dimsize
         c1=c1min+alpha*generation;
         c2=c2max-alpha*generation;
         a0=c1+c2-beta*generation;
         phy12=c1*unifrnd(0,1)+c2*unifrnd(0,1);
         phyp=c1*unifrnd(0,1)*Pbest(t,dimIndex)+c2*unifrnd(0,1)*Gbest(1,dimIndex);
         tempV = a0*pop(t,dimIndex)-phy12*pop(t,dimIndex)+phyp;
         if tempV > speedmax
             pop(t,dimsize + dimIndex)= speedmax;
         elseif tempV <(- speedmax)
             pop(t,dimsize + dimIndex)=-speedmax;
         else
             pop(t,dimsize + dimIndex)= tempV;
         end
         tempposition = pop(t,dimIndex)+ pop(t,dimsize + dimIndex);
         if tempposition > xmax
             pop(t,dimIndex)= xmax;
         elseif tempposition < xmin
             pop(t,dimIndex)= xmin;
         else
             pop(t,dimIndex)= tempposition;
         end
     end
 end
 for i = 1:popsize
    obfunct1=sin(sqrt(pop(i,1)^2+pop(i,2)^2))^2-0.5;
    obfunct2=(1.0+0.001*(pop(i,1)^2+pop(i,2)^2))^2;
    objvalue(i,1)=obfunct1/obfunct2-0.5;
    obfunct3=sin(sqrt(Pbest(i,1)^2+Pbest(i,2)^2))^2-0.5;
    obfunct4=(1.0+0.001*(Pbest(i,1)^2+Pbest(i,2)^2))^2;
    pvalue(i,1)=obfunct3/obfunct4-0.5;
end
obfunct1=sin(sqrt(Gbest(1)^2+Gbest(2)^2))^2-0.5;
obfunct2=(1.0+0.001*(Gbest(1)^2+Gbest(2)^2))^2;
objvaluetemp=obfunct1/obfunct2-0.5;
for i = 1:popsize
    if objvalue(i,1)< pvalue(i,1)
        PBest(i,1:dimsize)= pop(i,1:dimsize);
    end
    if objvalue(i,1)< objvaluetemp
        GBest = pop(i,1:dimsize)
        xtemp = pop(i,1:dimsize)
    end
end

⌨️ 快捷键说明

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