function [xm,fv] = CLSPSO(fitness,N,c1,c2,w,xmax,xmin,M,MaxC,D)
format long;
%------初始化种群的个体------------
for i=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:N
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
pg = x(N,:); %Pg为全局最优
for i=1:(N-1)
if fitness(x(i,:))<fitness(pg)
pg=x(i,:);
end
end
%------进入主要循环,按照公式依次迭代------------
for t=1:M
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
fv(i) = fitness(x(i,:));
end
[sort_fv,index] = sort(fv);
Nbest = floor(N*0.2);
for n=1:Nbest
tmpx = x(index(n),:);
for k=1:MaxC
for dim=1:D
cx(dim) = (tmpx(1,dim) - xmin(dim))/(tmpx(1,dim) - xmax(dim));
cx(dim) = 4*cx(dim)*(1 - cx(dim));
tmpx(1,dim) = tmpx(1,dim) + cx(dim)*(xmax(dim) - xmin(dim));
end
fcs = fitness(tmpx);
if fcs < sort_fv(n)
x(index(n),:) = tmpx;
break;
end
end
x(index(n),:) = tmpx;
end
r = rand();
for s=1:D
xmin(s) = max(xmin(s) , pg(s) - r*(xmax(s) - xmin(s)));
xmax(s) = min(xmax(s) , pg(s) + r*(xmax(s) - xmin(s)));
end
x(1:Nbest, :) = x(index(1:Nbest),:);
for i=(Nbest+1):N
for j=1:D
x(i,j)= xmin(j) + rand*(xmax(j) - xmin(j)); %随机初始化位置
v(i,j)= randn; %随机初始化速度
end
end
Pbest(t)=fitness(pg);
for i=1:N
if fitness(x(i,:))<p(i)
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
if p(i)<fitness(pg)
pg=y(i,:);
end
end
end
xm = pg';
fv = fitness(pg);
粒子群算法源代码,粒子群算法源代码免费开源代码开发,分享,matlab
版权申诉
5星 · 超过95%的资源 199 浏览量
2021-09-10
17:11:52
上传
评论
收藏 7KB RAR 举报
lithops7
- 粉丝: 326
- 资源: 4456
最新资源
- 实验报告-时间序列分析-姓名.doc
- Inversion about Mobius
- 长期施肥对设施土壤钙素有效态及生物有效性的影响_赵金月.caj
- 2024付费进群系统,源码及搭建变现视频课程(教程+源码)
- PS人像二次元AI智能修图 合成 人像修图/二次元 COS合成/AI 智能合成/100节
- (保姆式教学) Win10 + Ubuntu 20.04——双系统安装方法 + 配置显卡 + root权限 + flash调配_双系统安装保姆教程-CSDN博客.mhtml
- github 访问失败,怎么办??
- 第八章(2).docx
- [`19MK)RQRS}BRUCA85A9R9(1).png
- https服务nginx步骤参考
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈