1 简介
基于精确的铁路客运量预测对于国家和企业的规划管理非常重要,为提高预测的精度,提出粒子群算法(PSO)与长短时记忆神经网络相结合的预测模型(PSO-LSTM).LSTM与传统的全连接神经网络不同,其避免梯度消失,具有记忆过去信息的能力.由于LSTM的神经元数量,学习率和迭代次数难以确定,利用IPSO对这些参数进行优化.将相关性分析得到的铁路营业里程,国家铁路客车拥有量,国内生产总值和年末总人口作为铁路客运量的影响因素并对铁路客运量进行预测.预测结果表明,当LSTM具有2层隐含层时,PSO-LSTM具有更高的精确度.
1.1 粒子群算法
1.2 LSTM模型
1.3 基于鲸鱼算法优化LSTM流程
2 部分代码
%% clc clear all close all %加载数据,重构为行向量 num=100; x=1:num; db=0.1; data =abs(0.5.*sin(x)+0.5.*cos(x)+db*rand(1,num)); data1 =data;%把你的负荷数据赋值给data变量就可以了。 %data是行向量。要是还不明白,就留言吧。 %% %序列的前 90% 用于训练,后 10% 用于测试 numTimeStepsTrain = floor(0.9*numel(data)); dataTrain = data(1:numTimeStepsTrain+1); dataTest = data1(numTimeStepsTrain+1:end); %数据预处理,将训练数据标准化为具有零均值和单位方差。 mu = mean(dataTrain); sig = std(dataTrain); dataTrainStandardized = dataTrain; %输入LSTM的时间序列交替一个时间步 XTrain = dataTrainStandardized(1:end-1); YTrain = dataTrainStandardized(2:end); %% %创建LSTM回归网络,指定LSTM层的隐含单元个数96*3 %序列预测,因此,输入一维,输出一维 numFeatures = 1; numResponses = 1; numHiddenUnits = 20*3; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits) fullyConnectedLayer(numResponses) regressionLayer]; %% WOA lb=0.001;%学习率下限 ub=0.1;%学习率上限 % Main loop while t<Max_iter t end %将预测值与测试数据进行比较。 figure(1) subplot(2,1,1) plot(YTest,'gs-','LineWidth',2) hold on plot(YPred_best,'ro-','LineWidth',2) hold off legend('观测值','预测值') xlabel('时间') ylabel('数据值') title('Forecast with Updates') subplot(2,1,2) stem(YPred_best - YTest) xlabel('时间') ylabel('均方差值') title('均方差图 ' ) figure(2) plot(dataTrain(1:end-1)) hold on idx = numTimeStepsTrain:(numTimeStepsTrain+numTimeStepsTest); plot(idx,[data(numTimeStepsTrain) YPred_best],'.-') hold off xlabel('时间') ylabel('数据值') title('预测图') legend('观测值', '预测值') figure(3) plot(1:Max_iter,Convergence_curve,'bo-'); hold on; title('鲸鱼优化后Error-Cost曲线图'); xlabel('迭代次数') ylabel('误差适应度值')
3 仿真结果
4 参考文献
[1]曹开田, 高莘尧, 姜梦彦. 一种基于鲸鱼算法优化LSTM的频谱感知方法:.
[2]刘昊东, 邹必昌. 基于鲸鱼算法优化长短期记忆网络的短期负荷预测[J]. 电子世界(3):2.