多维时序 | MATLAB实现GTO-CNN-BiLSTM人工大猩猩部队优化卷积双向长短期记忆神经网络多变量多步时间序列预测
Posted 机器学习之心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多维时序 | MATLAB实现GTO-CNN-BiLSTM人工大猩猩部队优化卷积双向长短期记忆神经网络多变量多步时间序列预测相关的知识,希望对你有一定的参考价值。
多维时序 | MATLAB实现GTO-CNN-BiLSTM人工大猩猩部队优化卷积双向长短期记忆神经网络多变量多步时间序列预测
目录
预测效果
基本介绍
MATLAB实现GTO-CNN-BiLSTM人工大猩猩部队优化卷积双向长短期记忆神经网络多变量多步时间序列预测。提出了一种基于GTO-CNN-BiLSTM神经网络的电力系统短期负荷预测方法。 结果表明:与单独的CNN-BiLSTM 网络相比,GTO-CNN-BiLSTM 网络对电力系统短期负荷的预测误差更小,预测精度更高。
模型描述
GTO优化CNN-BiLSTM,分为GTO部分、CNN-BiLSTM部分和数据部分。首先根据 GTO传入的参数进行解码,获得所需超参数,然后利用数据部分传入的训练集进行网络训练,获得实际输出值与期望输出值的误差均方差,并将均方差作为适应度值返回给GTO部分。GTO部分根据适应度值进行优化,实现种群与全局最优解的更新。 通过该方法,最终可获得优化的网络超参数。进而使用卷积神经网络(CNN)对负荷及气象数据进行卷积处理,以更好地提取数据新特征,增强输入数据与输出数据间的相关性。然后使用门双向长短期记忆神经网络(BiLSTM)实现短期负荷预测。使用某地区的负荷数据结合当地的气象数据,对CNN-BiLSTM方法进行了测试。
双向长短期记忆可以同时获得正向和反向信息,输出结果由这两个方向的信息综合
处理得到。每个单向LSTM的传播与前面介绍的前向LSTM传播算法完全相同。
程序设计
- 完整源码和数据私信博主获取或同等价值程序兑换获取。
%Initialize the first random population of Gorilla
for i=1:pop_size%随机初始化速度,随机初始化位置
for j=1:variables_no
X( i, j ) = (ub(j)-lb(j))*rand+lb(j);
end
end
convergence_curve=zeros(max_iter,1);
for i=1:pop_size
X(i,:) = Bounds( X(i,:), lb, ub );
Pop_Fit(i)=fitness(X(i,:),P_train,P_valid,T_train,T_valid);
if Pop_Fit(i)<Silverback_Score
Silverback_Score=Pop_Fit(i);
Silverback=X(i,:);
end
end
GX=X(:,:);
%% Controlling parameter
p=0.03;
Beta=3;
w=0.8;
%%Main loop
for It=1:max_iter
a=(cos(2*rand)+1)*(1-It/max_iter);
C=a*(2*rand-1);
%% Exploration:
for i=1:pop_size
if rand<p
GX(i,:) =(ub-lb).*rand(1,variables_no)+ub;
else
if rand>=0.5
Z = unifrnd(-a,a,1,variables_no);
H=Z.*X(i,:);
GX(i,:)=(rand-a)*X(randi([1,pop_size]),:)+C.*H;
else
GX(i,:)=X(i,:)-C.*(C*(X(i,:)- GX(randi([1,pop_size]),:))+rand*(X(i,:)-GX(randi([1,pop_size]),:))); %ok ok
end
end
end
% Group formation operation
for i=1:pop_size
GX(i,:) = Bounds( GX(i,:), lb, ub );
New_Fit= fitness(GX(i,:),P_train,P_valid,T_train,T_valid);
if New_Fit<Pop_Fit(i)
Pop_Fit(i)=New_Fit;
X(i,:)=GX(i,:);
end
if New_Fit<Silverback_Score
Silverback_Score=New_Fit;
Silverback=GX(i,:);
end
end
%% Exploitation:
for i=1:pop_size
if a>=w
g=2^C;
delta= (abs(mean(GX)).^g).^(1/g);
GX(i,:)=C*delta.*(X(i,:)-Silverback)+X(i,:);
else
if rand>=0.5
h=randn(1,variables_no);
else
h=randn(1,1);
end
r1=rand;
GX(i,:)= Silverback-(Silverback*(2*r1-1)-X(i,:)*(2*r1-1)).*(Beta*h);
end
end
% Group formation operation
for i=1:pop_size
GX(i,:) = Bounds( GX(i,:), lb, ub );
New_Fit= fitness(GX(i,:),P_train,P_valid,T_train,T_valid);
if New_Fit<Pop_Fit(i)
Pop_Fit(i)=New_Fit;
X(i,:)=GX(i,:);
end
if New_Fit<Silverback_Score
Silverback_Score=New_Fit;
Silverback=GX(i,:);
end
end
It,Silverback_Score,Silverback
convergence_curve(It)=Silverback_Score;
process(It,:)= Silverback;
学习总结
元启发式在解决优化问题中起着至关重要的作用,其中大部分都受到自然界中自然生物的集体智慧的启发。受大猩猩部队在自然界中的社会智能启发,提出了一种新的元启发式算法,称为人工大猩猩部队优化器(GTO)。在这个算法中,大猩猩的集体生活被数学公式化,并设计了新的机制来进行探索和开发。GTO优化问题是对适应度函数求极大值或极小值的问题,本文以最小化CNN-BiLSTM网络期望输出与实际输出之间的均方差为适应度函数,即找到一组网络超参数,使得CNN-BiLSTM的误差最小。GTO找到一组网络超参数,使得 CNN-BiLSTM的误差最小,主要优化的超参数是:学习率,训练次数,batchsize,卷积层1的核数量、大小,池化层1的核大小,卷积层2的核数量、大小,池化层2的核大小,bilstm层与全连接隐含层的节点数,共11个参数.
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501
以上是关于多维时序 | MATLAB实现GTO-CNN-BiLSTM人工大猩猩部队优化卷积双向长短期记忆神经网络多变量多步时间序列预测的主要内容,如果未能解决你的问题,请参考以下文章
时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测
多维尺度分析(Multidimensional scaling)与MATLAB实现