✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
本文涉及一种基于自适应粒子群的最小二乘支持向量机预测方法,该方法根据群体的收敛程度和个体的适应值来调整惯性权重,加快训练速度,利用该算法迭代求解LSSVM中出现的矩阵方程,避免矩阵求逆,节省内存,并求得最优解.该方法可以有效简化训练样本,提高训练速度,且分类精度良好,收敛速度快,有很好的泛化能力.解决了预测时特征维数较高,特征之间存在冗余且样本有限的问题.
⛄ 部分代码
%% 粒子群算法
function [Best_pos,Best_score,curve]=PSO(pop,Max_iter,lb,ub,dim,fobj,Vmax,Vmin)
%% 参数设置
w = 0.9; % 惯性因子
c1 = 2; % 加速常数
c2 = 2; % 加速常数
Dim = dim; % 维数
sizepop = pop; % 粒子群规模
maxiter = Max_iter; % 最大迭代次数
if(max(size(ub)) == 1)
ub = ub.*ones(1,dim);
lb = lb.*ones(1,dim);
end
fun = fobj; %适应度函数
%% 粒子群初始化
Range = ones(sizepop,1)*(ub-lb);
pop = rand(sizepop,Dim).*Range + ones(sizepop,1)*lb; % 初始化粒子群
V = rand(sizepop,Dim)*(Vmax-Vmin) + Vmin; % 初始化速度
fitness = zeros(sizepop,1);
for i=1:sizepop
fitness(i,:) = fun(pop(i,:)); % 粒子群的适应值
end
%% 个体极值和群体极值
[bestf, bestindex]=min(fitness);
zbest=pop(bestindex,:); % 全局最佳
gbest=pop; % 个体最佳
fitnessgbest=fitness; % 个体最佳适应值
fitnesszbest=bestf; % 全局最佳适应值
%% 迭代寻优
iter = 0;
while( (iter < maxiter ))
for j=1:sizepop
% 速度更新
V(j,:) = w*V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
if V(j,:)>Vmax
V(j,:)=Vmax;
end
if V(j,:)<Vmin
V(j,:)=Vmin;
end
% 位置更新
pop(j,:)=pop(j,:)+V(j,:);
for k=1:Dim
if pop(j,k)>ub(k)
pop(j,k)=ub(k);
end
if pop(j,k)<lb(k)
pop(j,k)=lb(k);
end
end
% 适应值
fitness(j,:) =fun(pop(j,:));
% 个体最优更新
if fitness(j) < fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitness(j);
end
% 群体最优更新
if fitness(j) < fitnesszbest
zbest = pop(j,:);
fitnesszbest = fitness(j);
end
end
iter = iter+1; % 迭代次数更新
curve(iter) = fitnesszbest;
end
%% 绘图
Best_pos = zbest;
Best_score = fitnesszbest;
end
⛄ 运行结果
⛄ 参考文献
[1] 熊南, 刘百芬. 基于自适应粒子群优化LSSVM的网络流量在线预测[J]. 计算机应用与软件, 2013, 30(9):5.
[2] 杨柳, 孙金华, 冯仲科,等. 基于PSO-LSSVM的森林地上生物量估测模型[J]. 农业机械学报, 2016, 47(8):273-279.
[3] LI Hai-gang, 李海港, ZHANG Qian,等. 基于自适应粒子群-最小二乘支持向量机的煤自燃预测[C]// 第27届中国过程控制会议(CPCC2016). 2016.
[4] 李海港, 张倩, 王德明,等. 基于自适应粒子群的最小二乘支持向量机预测方法:.