【预测模型-ELM预测】基于松鼠算法优化极限学习机预测附matlab代码

简介: 【预测模型-ELM预测】基于松鼠算法优化极限学习机预测附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

⛄ 内容介绍

极限学习机(Extreme Learning Machine,ELM)是一种新型的前馈神经网络,该网络由广义逆直接求出输出层权重,使得其具有误差小,速度快的优点.但针对具体问题,ELM不能自动寻找到最佳的网络结构,从而造成该算法模型针对复杂,无规律性的数据精度及稳定性较差.为了提高极限学习机的泛化能力和预测精度,提出利用松鼠优化极限学习机算法对不同数据进行预测.使用松鼠算法选择最优的隐含层偏差和输入权值矩阵,计算出输出权值矩阵,从而提高ELM的精度及稳定性

⛄ 部分代码

% Differential Squirrel Search Algorithm (DSSA) source Code Version 1.0

%

% Developed in MATLAB R2018b

%

% Programmers:

% Bibekananda Jena and Dr Manoj Kumar Naik

% _____________________________________________________________________________________________________

% Please cite to the main paper:

% ******************************

% B. Jena, M. K. Naik, A. Wunnava, and R. Panda,

% 揂 Differential Squirrel Search Algorithm,?

% S. Das and M. N. Mohanty, Eds. Singapore: Springer Singapore, 2021, pp. 143?52.

% https://doi.org/10.1007/978-981-16-0695-3_15

%_____________________________________________________________________________________________________


%%

function [Destination_fitness,bestPositions,Convergence_curve]=SSA(NP,Max_iter,lb,ub,npar,fobj)


% Constant initialization and memory initialization

Gc=1.9; % Gliding constant

Cr=0.5; % crossover rate

dg=0.8; %Random gliding distance

Pdp=0.1; %predator presence probability

Convergence_curve=zeros(1,Max_iter);

Fitness=ones(1,NP)*inf;


% Initialization of the Squirrel初始化

Pos=initialization(NP,npar,ub,lb);


% Fitness evalaution of each Squirrel

%每只松鼠的适合度评估

for i=1:NP

   Fitness(i)=fobj(Pos(i,:));

end


% Segregating the Squirrel into hickory, acorn and normal tree

%将松鼠分为山核桃树、橡子树和普通树

[Sorted_fitness,Sort_index]=sort(Fitness);

Pos_hickory=Pos(Sort_index(1),:); % best solution (hickory tree)

Pos_acorn=Pos(Sort_index(2:4),:); % acorn tree

Pos_normal=Pos(Sort_index(5:end),:); % normal tree


L=size(Pos_normal,1);

L1=randperm(L);


% Squirrels in normal tree splitted into two sets randomly

%正常树上的松鼠随机分成两组

Pnormal_1=Pos_normal(L1(1:end-10),:);

Pnormal_2=Pos_normal(L1(end-10+1:end),:);

G=Sorted_fitness(1); % best fitness

Convergence_curve(1)=Sorted_fitness(1);


for itr=2:Max_iter

   Pos_avg=mean(Pos,1); % average of all squirrels position in the current population所有松鼠在当前种群中的平均位置

   %Temporary new location of squirrels in acorn and normal trees松鼠在橡树和正常的树临时的新位置

   Pacorn_tree=[];

   Pnormal_1_tree=[];

   Pnormal_2_tree=[];

   

   %New locations of squirrels present in the acorn trees松鼠出现在橡子树上的新位置

   for i=1:3

       if rand>Pdp

           Pacorn_tree(i,:)=Pos_acorn(i,:)+dg*Gc*(Pos_hickory-Pos_acorn(i,:)-Pos_avg);  %Eq(1)

       else

           Xrand=initialization(1,npar,ub,lb);

           Pacorn_tree(i,:)=Xrand-rand(1,npar).*abs(Xrand-2*rand*Pos_acorn(i,:));

       end

       

   end

   

   %New locations of some of the squirrels present in the normal trees一些松鼠的新位置出现在正常的树上

   for i=1:size(Pnormal_1,1)

       if rand>Pdp

           k=randi(3,1);

           Pnormal_1_tree(i,:)=Pnormal_1(i,:)+dg*Gc*(Pos_acorn(k,:)-Pnormal_1(i,:));   %Eq(3)

       else

           Xrand=initialization(1,npar,ub,lb);

           Pnormal_1_tree(i,:)=Xrand-rand(1,npar).*abs(Xrand-2*rand*Pnormal_1(i,:));

       end

       

   end

   

   

   %New locations of remaining squirrels present in the normal trees现存松鼠的新位置出现在正常的树上

   for i=1:size(Pnormal_2,1)

       if rand>Pdp

           Pnormal_2_tree(i,:)=Pnormal_2(i,:)+dg*Gc*(Pos_hickory-Pnormal_2(i,:));   %Eq(4)

       else

           Xrand=initialization(1,npar,ub,lb);

           Pnormal_2_tree(i,:)=Xrand-rand*abs(Xrand-2*rand*Pnormal_2(i,:));

       end

       

   end

   Pnt=[Pnormal_1_tree; Pnormal_2_tree];

   Ph1=Pos_hickory+dg*Gc*(Pos_hickory-mean(Pos_acorn,1));   %Eq(6)

   if fobj(Ph1)<fobj(Pos_hickory)

       Pos_hickory=Ph1;

   end

   Pnew=[Pos_hickory; Pacorn_tree; Pnt];

   

   FTnew=[];

   

   % Updating the population

   for i=1:NP

       FTnew(i)=fobj(Pnew(i,:));

       if FTnew(i)<Fitness(i)

           Fitness(i)=FTnew(i);

           Pos(i,:)=Pnew(i);

       else

           Pos(i,:)=Pos(i,:);

           Fitness(i)=Fitness(i);

       end

   end

   [Sorted_fitness,Sort_index]=sort(Fitness);

   

   % Update Best squirrel positions in hickory tree更新山核桃树上最好的松鼠位置

   if Sorted_fitness(1)<G(itr-1)

       Pos_hickory=sort(Pos(Sort_index(1),:),2);

       G(itr)=Sorted_fitness(1);

   else

       G(itr)=G(itr-1);

   end

   

   %Updated locations of squirrels in acorn trees更新了橡子树上松鼠的位置

   Pos_acorn=Pos(Sort_index(2:4),:);

   

   %Updated locations of squirrels in normal trees更新松鼠在正常树上的位置

   Pos_normal=Pos(Sort_index(5:end),:);

   L=size(Pos_normal,1);

   L1=randperm(L);

   Pnormal_1=Pos_normal(L1(1:end-10),:);

   Pnormal_2=Pos_normal(L1(end-10+1:end),:);

   

   % Keeping all iteration best fitness value保持所有迭代的最佳适应度值

   Convergence_curve(itr)=G(itr);

end

Destination_fitness=Convergence_curve(end);

bestPositions=Pos_hickory;

end

⛄ 运行结果

⛄ 参考文献

[1]单宝明, 薛永杰. 基于改进PSO优化ELM的高炉喷煤量预测研究[J]. 电子测量技术, 2021, 44(3):6.

[2]甘跃鹏, 伍友利, 王康健, 陈鞭, & 管军. 基于遗传算法优化极限学习机的炸弹气动参数辨识.

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
2天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
2天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
11 1
|
2天前
|
算法 关系型数据库 C语言
卡尔曼滤波简介+ 算法实现代码(转)
卡尔曼滤波简介+ 算法实现代码(转)
13 4
|
3天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
3天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
3天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
3天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
3天前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)