1.算法運行效果圖預(yù)覽
(完整程序運行后無水印)






2.算法運行軟件版本
matlab2022a
3.部分核心程序
(完整版代碼包含詳細中文注釋和操作步驟視頻)
g1???????????? = woa_idx;
LR???????????? = g1(1);
NN1??????????? = floor(g1(2))+1;
if g1(3)<1/3
??x1=4;
end
if g1(3)>=1/3 & g1(3)<2/3
??x1=5;
end
if g1(3)>=2/3
??x1=6;
end
if g1(4)<1/3
??x2=3;
end
if g1(4)>=1/3 & g1(4)<2/3
??x2=5;
end
if g1(4)>=2/3
??x2=7;
end
CNN_GRN_SAM =func_model2(Nfactor,NN1,x1,x2);
%設(shè)置
%迭代次數(shù)
%學(xué)習(xí)率為0.001
opt = trainingOptions('adam', ...??????
???'MaxEpochs', 20, ...????????????????
???'InitialLearnRate', LR, ...?????????
???'LearnRateSchedule', 'piecewise', ...?
???'LearnRateDropFactor', 0.075, ...
???'LearnRateDropPeriod', 200, ...???
???'Shuffle', 'every-epoch', ...?????????
???'Plots', 'training-progress', ...????
???'Verbose', false);
%訓(xùn)練
[net,INFO] = trainNetwork(Ptrain_reshape,t_train, CNN_GRN_SAM, opt);
Rerr = INFO.TrainingRMSE;
Rlos = INFO.TrainingLoss;
figure
subplot(211)
plot(Rerr)
xlabel('迭代次數(shù)')
ylabel('RMSE')
grid on
subplot(212)
plot(Rlos)
xlabel('迭代次數(shù)')
ylabel('LOSS')
grid on
%數(shù)據(jù)預(yù)測
tmps??= predict(net, Ptest_reshape );
T_pred = mapminmax('reverse', tmps',vmax2);
figure
plot(T_test, 'r')
hold on
plot(T_pred, 'b-x')
legend('真實值', '預(yù)測值')
grid on
%%試集結(jié)果
figure
plotregression(T_test,T_pred,['回歸']);
ERR=mean(abs(T_test-T_pred));
ERR
save R2.mat Rerr Rlos T_test T_pred ERR
4.算法理論概述
??????時間序列預(yù)測在眾多領(lǐng)域中都具有重要的應(yīng)用價值。傳統(tǒng)的時間序列預(yù)測方法在處理復(fù)雜的非線性時間序列數(shù)據(jù)時往往表現(xiàn)出一定的局限性。近年來,深度學(xué)習(xí)技術(shù)的發(fā)展為時間序列預(yù)測提供了新的思路和方法。
網(wǎng)絡(luò)結(jié)構(gòu)
CNN-LSTM-SAM 網(wǎng)絡(luò)由卷積層、LSTM 層、自注意力機制層和全連接層組成。
?????卷積層用于提取時間序列數(shù)據(jù)的局部特征;LSTM層用于處理時間序列數(shù)據(jù)中的長期依賴關(guān)系;自注意力機制層用于捕捉時間序列數(shù)據(jù)中的全局特征;全連接層將提取到的特征進行整合,輸出預(yù)測結(jié)果。
算法流程
???????WOA即Whale Optimization Algorithm(鯨魚優(yōu)化算法),是一種受自然界鯨魚捕食行為啟發(fā)的生物啟發(fā)式優(yōu)化算法,由Eslam Mohamed于2016年提出,常用于解決各種連續(xù)優(yōu)化問題,包括函數(shù)優(yōu)化、機器學(xué)習(xí)參數(shù)調(diào)整、工程設(shè)計等領(lǐng)域中的復(fù)雜優(yōu)化任務(wù)。
1.數(shù)據(jù)預(yù)處理:對時間序列數(shù)據(jù)進行歸一化處理,使其取值范圍在([0,1])之間。
2.初始化種群:隨機生成一組種群,每個個體代表一組網(wǎng)絡(luò)參數(shù)。
3.計算適應(yīng)度值:對于每個個體,將其對應(yīng)的網(wǎng)絡(luò)參數(shù)代入 CNN-LSTM-SAM 網(wǎng)絡(luò)中,對訓(xùn)練數(shù)據(jù)進行預(yù)測,并計算預(yù)測結(jié)果與真實值之間的誤差,作為該個體的適應(yīng)度值。
4.更新個體信息。
5.重復(fù)步驟 3 和 4,直到滿足停止條件(如達到最大迭代次數(shù)或適應(yīng)度值小于某個閾值)。
6.輸出最優(yōu)網(wǎng)絡(luò)參數(shù):將全局最優(yōu)位置對應(yīng)的網(wǎng)絡(luò)參數(shù)作為最優(yōu)網(wǎng)絡(luò)參數(shù),代入 CNN-LSTM-SAM 網(wǎng)絡(luò)中,對測試數(shù)據(jù)進行預(yù)測,得到最終的預(yù)測結(jié)果。