资源简介
依据 IEEE TEC2006 Comprehensive Learning Particle Swarm Optimizer
for Global Optimization of Multimodal Functions 论文改写,其中有详细中文注释,可直接运行。
从网上之前找了很多有关CLPSO的但是感觉有些部分和这篇论文对不上,于是就自己综合了一下编写了这个
代码片段和文件信息
clc;clear;close;
tic
%% 初始化参数
rand(‘state‘sum(100*clock));%确定随机数流
ps = 10;%种群个数大小
dimension = 10;%粒子维数
iter_max = 3000;%最大迭代数
w0=0.9;w1=0.4;
c=1.49445; %加速常数
v_min = -4;v_max = 4;%粒子速度上下限
V = v_min + (v_max - v_min)*rand(ps dimension);%粒子速度
xmin=-5.12;xmax=5.12;%粒子位置的上下限值
mask_min = repmat(xmin 1 dimension);
mask_max = repmat(xmax 1 dimension);
X = rand(ps dimension);%粒子初始化位置
for i = 1 : dimension
X(: i) = repmat(xmin ps 1) + (xmax - xmin)*X(: i);
end
flag = zeros(ps1);%粒子停止改进代数标记
m=5;%刷新间隔
%% 计算适应度值,初始化pbest,gbest
fhd=str2func(‘@(x)sum(x.^2-10.*cos(2.*pi.*x)+102)‘);%定义函数句柄
for i=1:ps
e(i1)=feval(fhdX(i:));%计算每个粒子适应度值
end
%% 初始化pbest和gbest
pbest=X;%初始化位置作为pbest
pbestval=e; %初始化粒子pbest和pbest的适应度值
[gbestvalgbestid]=min(pbestval);%求出适应值最小的粒子索引,得到gbest适应度值
gbest=pbest(gbestid:);%初始化gebst,将具有最小适应值的粒子的pbest作为gbest
%% Pc学习率
t=0:1/(ps-1):1;
t=5.*t;
Pc=0.0+(0.5-0.0).*(exp(t)-exp(t(1)))./(exp(t(ps))-exp(t(1)));%每个粒子的学习可能性
ai=zeros(psdimension);
f_pbest=1:ps;%单独一个粒子
f_pbest=repmat(f_pbest‘1dimension);%每个粒子每个维数需要学习的粒子索引数,初始化为每个粒子每一维从自身学习,行数代表粒子数列数是维数
%% 计算准熵
pbestval_history=pbestval;%将第一次初始化的pbest适应度值保存
P(:1)=pbestval_history(:1)./sum(pbestval_history(:1));%计算第一次迭代的Pti
QE(:1)=-sum(P(:1).*log(P(:1)));%计算初始准熵
%% CLPSO开始
for iter=1:iter_max
w(iter)=w0-iter*(w0-w1)/iter_max;%更新惯性权重
for i=1:ps%每个粒子进行迭代
num=(iter-1)*10+i;%总循环次数
%% 粒子从其他粒子学习的锦标赛选择过程
if flag(i)>=m %当连续没有改进一定代数
flag(i)=0;
for d=1:dimension%粒子每一维迭代
r = rand;%生成随机数
if r < Pc(i)
a=randperm(ps);
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论