• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签: 小生境  PSO  程序  

资源简介

小生境PSO算法matlab程序 程序在原有PSo常用测试函数的基础上进行改进,实现了多模寻优

资源截图

代码片段和文件信息

clc;clear;
close all;
%-----确定实际问题参数集------
wmin=0;wmax=0.9;        %惯性权重
itmax=50;               %最大循环次数
c1=2;c2=2;              %自身因子和全局因子
for iter=1:itmax
    W(iter)=wmax-((wmax-wmin)/itmax)*iter;%自适应权重
end
a=0;b=1;               %变量取值范围
N=30;                  %粒子个数
D=1;                   %维数
step=0.01;             %步长
f=‘exp(-2*log(2)*(((x-0.1)./0.8).^2)).*((sin(5*pi*x)).^6)‘;
x=[a:step:b];
xf=x;
y=eval(f);
x=[];
vmfit=[];
x=a+(b-a)*rand(N1);                 %位置初始化
V=wmin+(wmin-wmax)*rand(N1);        %向量初始化
for i=1:N
    F(i1)=exp(-2*log(2)*(((x(i1)-0.1)/0.8).^2))*((sin(5*pi*x(i1))).^6);%第一代个体适应度计算
end
media=mean(F(:1));
vmfit=[vmfit media];
[CI]=max(abs(F(:1)));              
B(11)=C;
gbest(11)=x(I1);                  %群体最优位置
for p=1:N
    G(p1)=gbest(11);              %更新群体最优位置记录
end
Fbest(11)=exp(-2*log(2)*(((G(11)-0.1)/0.8).^2))*((sin(5*pi*G(11))).^6);%群体最优位置适应度
for i=1:N
    pbest(i1)=x(i1);              %个体最优位置,第一代群体设为当前位置
end
Fb(11)=exp(-2*log(2)*(((pbest(11)-0.1)/0.8).^2))*((sin(5*pi*pbest(11))).^6);%个体最优位置适应度

%------程序主循环----------
for j=2:itmax
    V(:j)=W(j-1)*V(:j-1)+c1*rand*(pbest(:j-1)-x(:j-1));%+c2*rand*(G(:j-1)-x(:j-1));%向量更新
    x(:j)=x(:j-1)+V(:j);         %位置更新
    for xx=1:N
        if x(xxj)            x(x

评论

共有 条评论