粒子群算法MATLAB代码

%先创建一个这个函数,是目标函数
function F=fitness(x)
F=0;
for i=1:30
      F=F+x(i)^2+x(i)-6; 
end


测试:

[xm,fv,pbest]=PSO(@fitness,100,1.5,2.5,0.5,100,30);
figure(1);
plot(pbest);

粒子群规模:100,自我认知因子:1.5,社会认知因子:2.5,惯性权重:0.5,数据维度:30

效果:

如果有需要代写一些简单的MATLAB代码文件的,可以私信我,我如果能做到将免费代写

今天发现,平台不允许完全免费下载,至少需要9个积分,所以我把完整代码,粘在这里,供大家参考

function [xm,fv,fvh]=PSO(fitness,N,c1,c2,w,M,D)

format long;% 16 significant digits
%-----------------------initialized variable-------------------------------
fvh=zeros(1,N);
x=randn(N,D);% current partical location
v=randn(N,D);
p_best=zeros(1,N); % The best function value of every partical.
x_local=x;
for i=1:N
      p_best(i)=fitness(x(i,:));% The first best value is current function value.
end

x_global=x(N,:); % the global best solution
for i=1:N-1
      if fitness(x(i,:)) < fitness(x_global)
            x_global=x(i,:);
      end
end
% iterator update
for t=1:M
      for i=1:N % update partical state
            v(i,:)=w*v(i,:)+c1*rand*(x_local(i,:)-x(i,:))+c2*rand*(x_global-x(i,:));
            x(i,:)=x(i,:)+v(i,:);
            % update local
            if fitness(x(i,:))<p_best(i) 
                  p_best(i)=fitness(x(i,:));  % save better current function value
                  x_local(i,:)=x(i,:); % save better solution
            end
            
            % update global
            if p_best(i)<fitness(x_global)
                  x_global=x_local(i,:);
            end
      end
      fvh(t)=fitness(x_global);
end
xm=x_global';
fv=fitness(x_global);

PSO函数文件,已经上传到CSDN了,是免费的,供大家自由取用 

这是下载链接,

粒子群算法代码,这是经典原版的代码-其它文档类资源-CSDN下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值