资源描述:
《运行成功的超牛粒子群学习.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、functionPSOfirst()%%清空环境clear;clc;%%参数设置w=0.9;%权值将影响PSO的全局与局部搜优能力,值较大,全局搜优能力强,局部搜优能力弱;反之,则局部搜优能力增强,而全局搜优能力减弱。c1=0.1;%加速度,影响收敛速度c2=0.1;dim=6;%6维,表示企业数量swarmsize=100;%粒子群规模,表示有100个解的空间maxiter=200;%最大循环次数,影响时间minfit=0.001;%最小适应值vmax=0.01;vmin=-0.01;ub=[
2、0.2,0.2,0.2,0.2,0.2,0.2];%解向量的最大限制lb=[0.01,0.01,0.01,0.01,0.01,0.01];%解向量的最小限制%%种群初始化range=ones(swarmsize,1)*(ub-lb);swarm=rand(swarmsize,dim).*range+ones(swarmsize,1)*lb;%粒子群位置矩阵,每行表示一组解Y1=[33.08;21.85;6.19;11.77;9.96;17.15;];Y=Y1./100;%将百分数化为小数[ym,
3、yn]=size(Y);fori=1:swarmsize%%YX的约束s=swarm(i,:);ss=s';whilesum(Y.*ss)<0.1*sum(Y)ss=rand(dim,1).*((ub-lb)')+ones(dim,1).*((lb)');endswarm(i,:)=ss';endvstep=rand(swarmsize,dim)*(vmax-vmin)+vmin;%粒子群速度矩阵fswarm=zeros(swarmsize,1);%预设空矩阵,存放适应值%%计算初始种群适应度f
4、ori=1:swarmsizeX=swarm(i,:);[SUMG,G]=jn(X);fswarm(i,:)=SUMG;%fswarm(i,:)=feval(jn,swarm(i,:));%以粒子群位置的第i行为输入,求函数值,对应输出给适应值endfswarm%%个体极值和群体极值[bestf,bestindex]=min(fswarm);%求得适应值中的最小适应值,和,其所在的序列gbest=swarm;%暂时的个体最优解为自己fgbest=fswarm;%暂时的个体最优适应值zbest=s
5、warm(bestindex,:);%所在序列的对应的解矩阵序列,全局最佳解fzbest=bestf;%全局最优适应值%%迭代寻优iter=0;yfitness=zeros(1,maxiter);%1行100列矩阵,存放100个最优值的空间矩阵x1=zeros(1,maxiter);%存放x的空间x2=zeros(1,maxiter);x3=zeros(1,maxiter);x4=zeros(1,maxiter);x5=zeros(1,maxiter);x6=zeros(1,maxiter);w
6、hile((iterminfit))forj=1:swarmsize%速度更新vstep(j,:)=w*vstep(j,:)+c1*rand*(gbest(j,:)-swarm(j,:))+c2*rand*(zbest-swarm(j,:));ifvstep(j,:)>vmaxvstep(j,:)=vmax;%速度限制endifvstep(j,:)7、(j,:);fork=1:dimifswarm(j,k)>ub(k)swarm(j,k)=ub(k);%位置限制endifswarm(j,k)8、更新fgbest(j)=fswarm(j);%个体最优值更新end%群体最优更新iffswarm(j)