国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比

這篇具有很好參考價值的文章主要介紹了時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比

預測效果

時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比,時間序列,EEMD-SSA-LSTM,SSA-LSTM,EEMD-LSTM,LSTM,時間序列
時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比,時間序列,EEMD-SSA-LSTM,SSA-LSTM,EEMD-LSTM,LSTM,時間序列
時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比,時間序列,EEMD-SSA-LSTM,SSA-LSTM,EEMD-LSTM,LSTM,時間序列
時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比,時間序列,EEMD-SSA-LSTM,SSA-LSTM,EEMD-LSTM,LSTM,時間序列

基本介紹

時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比

模型描述

麻雀搜索算法(Sparrow Search Algorithm, SSA)是于2020年提出的。SSA 主要是受麻雀的覓食行為和反捕食行為的啟發(fā)而提出的。該算法比較新穎,具有尋優(yōu)能力強,收斂速度快的優(yōu)點。建立麻雀搜索算法的數學模型,主要規(guī)則如下所述:
(1)發(fā)現者通常擁有較高的能源儲備并且在整個種群中負責搜索到具有豐富食物的區(qū)域,為所有的加入者提供覓食的區(qū)域和方向。在模型建立中能量儲備的高低取決于麻雀個體所對應的適應度值(Fitness Value)的好壞。
(2)一旦麻雀發(fā)現了捕食者,個體開始發(fā)出鳴叫作為報警信號。當報警值大于安全值時,發(fā)現者會將加入者帶到其它安全區(qū)域進行覓食。
(3)發(fā)現者和加入者的身份是動態(tài)變化的。只要能夠尋找到更好的食物來源,每只麻雀都可以成為發(fā)現者,但是發(fā)現者和加入者所占整個種群數量的比重是不變的。也就是說,有一只麻雀變成發(fā)現者必然有另一只麻雀變成加入者。
(4)加入者的能量越低,它們在整個種群中所處的覓食位置就越差。一些饑腸轆轆的加入者更有可能飛往其它地方覓食,以獲得更多的能量。
(5)在覓食過程中,加入者總是能夠搜索到提供最好食物的發(fā)現者,然后從最好的食物中獲取食物或者在該發(fā)現者周圍覓食。與此同時,一些加入者為了增加自己的捕食率可能會不斷地監(jiān)控發(fā)現者進而去爭奪食物資源。
(6)當意識到危險時,群體邊緣的麻雀會迅速向安全區(qū)域移動,以獲得更好的位置,位于種群中間的麻雀則會隨機走動,以靠近其它麻雀。
長短期記憶網絡——通常被稱為 LSTM,是一種特殊的 RNN,能夠學習長期依賴性。由 Hochreiter 和 Schmidhuber(1997)提出的,并且在接下來的工作中被許多人改進和推廣。LSTM 在各種各樣的問題上表現非常出色,現在被廣泛使用。LSTM 被明確設計用來避免長期依賴性問題。長時間記住信息實際上是 LSTM 的默認行為,而不是需要努力學習的東西!
所有遞歸神經網絡都具有神經網絡的鏈式重復模塊。在標準的 RNN 中,這個重復模塊具有非常簡單的結構

程序設計

  • 完整程序和數據下載方式:私信博主回復MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比。
%% 采用ssa優(yōu)化
[x ,fit_gen,process]=ssaforlstm(XTrain,YTrain,XTest,YTest);%分別對隱含層節(jié)點 訓練次數與學習率尋優(yōu)
%% 參數設置
pop=5; % 種群數
M=20; % 最大迭代次數
%初始化種群
for i = 1 : pop
    for j=1:dim
        if j==1%除了學習率 其他的都是整數
            x( i, j ) = (ub(j)-lb(j))*rand+lb(j);
        else
            x( i, j ) = round((ub(j)-lb(j))*rand+lb(j));
        end
    end
    fit( i )=fitness(x(i,:),P_train,T_train,P_test,T_test);
end
pFit = fit;
pX = x;
fMin=fit(1);
bestX = x( i, : );

for t = 1 : M
    
    [ ~, sortIndex ] = sort( pFit );% Sort.從小到大
    [fmax,B]=max( pFit );
    worse= x(B,:);
    r2=rand(1);
    %%%%%%%%%%%%%5%%%%%%這一部位為發(fā)現者(探索者)的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%
    if(r2<0.8)%預警值較小,說明沒有捕食者出現
        for i = 1 : pNum  %r2小于0.8的發(fā)現者的改變(1-20% Equation (3)
            r1=rand(1);
            x( sortIndex( i ), : ) = pX( sortIndex( i ), : )*exp(-(i)/(r1*M));%對自變量做一個隨機變換
            x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );%對超過邊界的變量進行去除
            
            fit(  sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
        end
    else   %預警值較大,說明有捕食者出現威脅到了種群的安全,需要去其它地方覓食
        for i = 1 : pNum   %r2大于0.8的發(fā)現者的改變
            x( sortIndex( i ), : ) = pX( sortIndex( i ), : )+randn(1)*ones(1,dim);
            x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );
            
            fit(  sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
            
        end
        
    end
    [ ~, bestII ] = min( fit );
    bestXX = x( bestII, : );
    %%%%%%%%%%%%%5%%%%%%這一部位為加入者(追隨者)的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%
    for i = ( pNum + 1 ) : pop     %剩下20-100的個體的變換                % Equation (4)
        %         i
        %         sortIndex( i )
        A=floor(rand(1,dim)*2)*2-1;
        if( i>(pop/2))%這個代表這部分麻雀處于十分饑餓的狀態(tài)(因為它們的能量很低,也是是適應度值很差),需要到其它地方覓食
            x( sortIndex(i ), : )=randn(1,dim).*exp((worse-pX( sortIndex( i ), : ))/(i)^2);
        else%這一部分追隨者是圍繞最好的發(fā)現者周圍進行覓食,其間也有可能發(fā)生食物的爭奪,使其自己變成生產者
            x( sortIndex( i ), : )=bestXX+(abs(( pX( sortIndex( i ), : )-bestXX)))*(A'*(A*A')^(-1))*ones(1,dim);
        end
        x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );%判斷邊界是否超出
        fit(  sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
    end
    %%%%%%%%%%%%%5%%%%%%這一部位為意識到危險(注意這里只是意識到了危險,不代表出現了真正的捕食者)的麻雀的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%
    c=randperm(numel(sortIndex));%%%%%%%%%這個的作用是在種群中隨機產生其位置(也就是這部分的麻雀位置一開始是隨機的,意識到危險了要進行位置移動,
    %處于種群外圍的麻雀向安全區(qū)域靠攏,處在種群中心的麻雀則隨機行走以靠近別的麻雀)
    b=sortIndex(c(1:pop));
    for j =  1  : length(b)      % Equation (5)
        if( pFit( sortIndex( b(j) ) )>(fMin) ) %處于種群外圍的麻雀的位置改變
            x( sortIndex( b(j) ), : )=bestX+(randn(1,dim)).*(abs(( pX( sortIndex( b(j) ), : ) -bestX)));
        else
            %處于種群中心的麻雀的位置改變
            x( sortIndex( b(j) ), : ) =pX( sortIndex( b(j) ), : )+(2*rand(1)-1)*(abs(pX( sortIndex( b(j) ), : )-worse))/ ( pFit( sortIndex( b(j) ) )-fmax+1e-50);
        end
        x( sortIndex(b(j) ), : ) = Bounds( x( sortIndex(b(j) ), : ), lb, ub );
        fit(  sortIndex( b(j)  ) )=fitness(x(sortIndex( b(j) ),:),P_train,T_train,P_test,T_test);
        
    end

參考資料

[1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502
[3] https://blog.csdn.net/article/details/126043107?spm=1001.2014.3001.5502文章來源地址http://www.zghlxwxcb.cn/news/detail-700951.html

到了這里,關于時序預測 | MATLAB實現EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM時間序列預測對比的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包