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

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

1 简介

针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于海鸥算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多,训练过程中容易产生过拟合现象.该方法运用海鸥算法对极限学习机的输入层与隐含层的权值与阈值进行优化,从而提高模型的稳定性和预测精度.将诊断结果与传统的基于极限学习机故障诊断进行对比,结果表明,基于海鸥算法改进极限学习机变压器故障诊断的精度更高.

基于 SOA 优化 ELM 的变压器故障诊断的具体步骤为:

1)确定 ELM 的拓扑结构。即输入层神经元个数,隐含层神经元个数以及输出层神经元个数;

2)对 ELM 中输入层到隐含层的权值以及阈值进行编码,得到初始种群;

3)解码得到权值和阈值,将权值和阈值带入到ELM 的训练网络中,使用训练样本进行训练;

4)训练完成后,使用测试样本进行测试,将测试样本的期望值和预测值的误差平方和作为适应度函数;

5)对种群进行选择,交叉,变异,得到新的种群,如果满足条件,则得出了误差平方和最小的网络权值和阈值,如果不满足条件,则返回步骤 2);

6)将优化后的权值和阈值带入到训练网络中,计算隐含层输出矩阵 H, 并求解矩阵 H 的 MoorePenrose 广义逆 H+;

7)计算输出层权值β赞=H+T;

8)将测试样本带入到模型中进行预测。

2 部分代码

%%% Designed and Developed by Dr. Gaurav Dhiman (http://dhimangaurav.com/) %%%

function[Score,Position,Convergence]=SOA(Search_Agents,Max_iterations,Lower_bound,Upper_bound,dimension,objective)

Position=zeros(1,dimension);

Score=inf;

Positions=init(Search_Agents,dimension,Upper_bound,Lower_bound);

Convergence=zeros(1,Max_iterations);

l=0;

while l<Max_iterations

for i=1:size(Positions,1)

Flag4Upper_bound=Positions(i,:)>Upper_bound;

Flag4Lower_bound=Positions(i,:)<Lower_bound;

Positions(i,:)=(Positions(i,:).*(~(Flag4Upper_bound+Flag4Lower_bound)))+Upper_bound.*Flag4Upper_bound+Lower_bound.*Flag4Lower_bound;

fitness=objective(Positions(i,:));

if fitness<Score

Score=fitness;

Position=Positions(i,:);

end

end

Fc=2-l*((2)/Max_iterations);

for i=1:size(Positions,1)

for j=1:size(Positions,2)

r1=rand();

r2=rand();

A1=2*Fc*r1-Fc;

C1=2*r2;

b=1;

ll=(Fc-1)*rand()+1;

D_alphs=Fc*Positions(i,j)+A1*((Position(j)-Positions(i,j)));

X1=D_alphs*exp(b.*ll).*cos(ll.*2*pi)+Position(j);

Positions(i,j)=X1;

end

end

l=l+1;

Convergence(l)=Score;

end

3 仿真结果

4 参考文献

[1]郑嘉利, & 王哲. (2019). 一种基于蝗虫算法和极限学习机的RFID室内定位方法. CN109598320A.