SCI一區級 | Matlab實現GWO-CNN-BiLSTM-selfAttention多變量多步時間序列預測

SCI一區級 | Matlab實現GWO-CNN-BiLSTM-selfAttention多變量多步時間序列預測

目錄

    • SCI一區級 | Matlab實現GWO-CNN-BiLSTM-selfAttention多變量多步時間序列預測
      • 預測效果
      • 基本介紹
      • 程序設計
      • 參考資料

預測效果

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

基本介紹

1.Matlab實現GWO-CNN-BiLSTM-selfAttention灰狼算法優化卷積雙向長短期記憶神經網絡融合自注意力機制多變量多步時間序列預測,灰狼算法優化學習率,卷積核大小,神經元個數,以最小MAPE為目標函數;
在這里插入圖片描述

自注意力層 (Self-Attention):Self-Attention自注意力機制是一種用于模型關注輸入序列中不同位置相關性的機制。它通過計算每個位置與其他位置之間的注意力權重,進而對輸入序列進行加權求和。自注意力能夠幫助模型在處理序列數據時,對不同位置的信息進行適當的加權,從而更好地捕捉序列中的關鍵信息。在時序預測任務中,自注意力機制可以用于對序列中不同時間步之間的相關性進行建模。

在這里插入圖片描述
2.運行環境為Matlab2023a及以上,提供損失、RMSE迭代變化極坐標圖;網絡的特征可視化圖;測試對比圖;適應度曲線(若首輪精度最高,則適應度曲線為水平直線);

3.excel數據集(負荷數據集),輸入多個特征,輸出單個變量,考慮歷史特征的影響,多變量多步時間序列預測(多步預測即預測下一天96個時間點),main.m為主程序,運行即可,所有文件放在一個文件夾;

在這里插入圖片描述
4.命令窗口輸出SSE、RMSE、MSE、MAE、MAPE、R2、r多指標評價;
適用領域:負荷預測、風速預測、光伏功率預測、發電功率預測、碳價預測等多種應用。

程序設計

  • 完整程序和數據獲取方式:私信博主回復Matlab實現GWO-CNN-BiLSTM-selfAttention多變量多步時間序列預測獲取。

%---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% Grey Wolf Optimizer
% 灰狼優化算法function [Alpha_score, Alpha_pos, Convergence_curve, bestPred,bestNet,bestInfo ] = GWO(SearchAgents_no, Max_iter, lb, ub, dim, fobj)
% 輸入參數:
% SearchAgents_no:搜索個體的數量
% Max_iter:最大迭代次數
% lb:搜索空間的下界(一個1維向量)
% ub:搜索空間的上界(一個1維向量)
% dim:問題的維度
% fobj:要優化的目標函數,輸入為一個位置向量,輸出為一個標量% 初始化alpha、beta和delta的位置向量
Alpha_pos = zeros(1, dim);
Alpha_score = inf; % 對于最小化問題,請將其改為-infBeta_pos = zeros(1, dim);
Beta_score = inf; % 對于最小化問題,請將其改為-infDelta_pos = zeros(1, dim);
Delta_score = inf; % 對于最小化問題,請將其改為-inf% 初始化領導者的位置向量和得分Positions = ceil(rand(SearchAgents_no, dim) .* (ub - lb) + lb);Convergence_curve = zeros(1, Max_iter);l = 0; % 迭代計數器% 主循環
while l < Max_iterfor i = 1:size(Positions, 1)% 將超出搜索空間邊界的搜索代理放回搜索空間內Flag4ub = Positions(i, :) > ub;Flag4lb = Positions(i, :) < lb;Positions(i, :) = (Positions(i, :) .* (~(Flag4ub + Flag4lb))) + ub .* Flag4ub + lb .* Flag4lb;% 計算每個搜索個體的目標函數值[fitness,Value,Net,Info] = fobj(Positions(i, :));% 更新Alpha、Beta和Delta的位置向量if fitness < Alpha_scoreAlpha_score = fitness;       % 更新Alpha的得分Alpha_pos = Positions(i, :); % 更新Alpha的位置向量bestPred = Value;bestNet = Net;bestInfo = Info;endif fitness > Alpha_score && fitness < Beta_scoreBeta_score = fitness;       % 更新Beta的得分Beta_pos = Positions(i, :); % 更新Beta的位置向量endif fitness > Alpha_score && fitness > Beta_score && fitness < Delta_scoreDelta_score = fitness;       % 更新Delta的得分Delta_pos = Positions(i, :); % 更新Delta的位置向量endenda = 2 - l * ((2) / Max_iter); % a從2線性減少到0% 更新搜索個體的位置向量for i = 1:size(Positions, 1)for j = 1:size(Positions, 2)r1 = rand(); % r1是[0,1]區間的隨機數r2 = rand(); % r2是[0,1]區間的隨機數A1 = 2 * a * r1 - a; % 參考文獻中的公式(3.3)C1 = 2 * r2; % 參考文獻中的公式(3.4)D_alpha = abs(C1 * Alpha_pos(j) - Positions(i, j)); % 參考文獻中的公式(3.5)-part 1X1 = Alpha_pos(j) - A1 * D_alpha; % 參考文獻中的公式(3.6)-part 1r1 = rand();r2 = rand();

參考資料

[1] http://t.csdn.cn/pCWSp
[2] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208503.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208503.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208503.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IntelliJ idea卡頓解決,我遇到的比較管用的方案

Setttings> Build, Execution,Deployment>Debugger> Data Views> Java 取消 Enable "toString()" object view; Speed up debugging in IntelliJ Yesterday, I observed painfully slow debugging in IntelliJ. Every step over or step in took almost…

【力扣】234.回文鏈表2

234.回文鏈表2 感覺自己還是有點時間&#xff0c;然后又學了兩種解法。那就一起整理一下。 法一&#xff1a;反轉鏈表后比較 題解看我的這一篇就行&#xff08;click) 法二&#xff1a;數組雙指針 思路很簡單&#xff0c;就是用while循環遍歷一下整個鏈表將對應的值復制到…

2023年12月8日:UI登陸界面

作業 頭文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMovie> #include <QPushButton> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpub…

GO語言開始

GO語言開始 下載windows版本安裝后查看 是否安裝成功下載GO的集成開發工具第一個GO程序 Go官網地址&#xff1a;https://golang.org/ Go 官方鏡像站&#xff08;推薦&#xff09;:https://golang.google.cn/dl/ 下載windows版本 安裝后查看 是否安裝成功 下載GO的集成開發工具…

鴻蒙原生應用開發【分布式數據對象】

01、什么是分布式數據對象 在可信組網環境下&#xff0c;多個相互組網認證的設備將各自創建的對象加入同一個 sessionId&#xff0c;使得加入的多個數據對象之間可以同步數據&#xff0c;也就是說&#xff0c;當某一數據對象屬性發生變更時&#xff0c;其他數據對象會檢測到這…

前端知識筆記(三十七)———Django與Ajax

特點&#xff1a; 異步提交 局部刷新 例子&#xff1a;github注冊 動態獲取用戶名實時的跟后端確認并實時的展示到前端&#xff08;局部刷新&#xff09; 朝后端發送請求的方式 1.瀏覽器地址欄直接輸入url回車 -----》get請求 2.a標簽的href屬性 -----》get請求 3…

pcl-3 pcl結合opencv做svm分類(法向量特征數據)

后續使用了fpfh特征作為訓練數據&#xff0c;遇到了一些困難 首先是flann沖突&#xff0c;這個將opcv中的flann都改成了flann2就可以運行 后面在將得到的33特征值進行訓練的時候一直內存超限&#xff0c;傳輸的不太好&#xff0c;到現在還是不行&#xff0c;改了三天還是沒有改…

Flink 系列文章匯總索引

Flink 系列文章 一、Flink 專欄 本專欄系統介紹某一知識點&#xff0c;并輔以具體的示例進行說明。 本專欄的文章編號可能不是順序的&#xff0c;主要是因為寫的時候順序沒統一&#xff0c;但相關的文章又引入了&#xff0c;所以后面就沒有調整了&#xff0c;按照寫文章的順…

OpenCL學習筆記(三)手動編譯開發庫(win10+mingw64)

前言 有的小伙伴仍然在使用mingw編譯器&#xff0c;這時只能重新編譯opencl的sdk庫。本文檔簡單記錄下win10下&#xff0c;使用mingw11.20編譯的過程&#xff0c;有需要的小伙伴可以參考下 一、安裝所需軟件 1.安裝git&#xff0c;教程比較多&#xff0c;不再重復 2.安裝cm…

chrome安裝jsonview

寫在前面 通過jsonview可以實現&#xff0c;當http響應時application/json時直接在瀏覽器格式化顯示&#xff0c;增加可讀性。本文看下如何安裝該插件到chrome中。 1&#xff1a;安裝 首先在這里 下載插件包&#xff0c;然后解壓備用。接著在chrome按照如下步驟操作&#xf…

千鋒 Vue 詳細筆記整理

視頻筆記是根據B站 千鋒 濤哥 - SpringBootvue前后端分離項目《鋒迷商城》實戰課-完結版 進行整理的 筆記可上 gitee倉庫 自取 千鋒 Vue 筆記整理 一、vue 的簡介1.1 使用 JQuery 的復雜性問題1.2 VUE 簡介1.2.1 前端框架1.2.2 MVVM 二、 vue 入門使用2.1 vue 的引入2.2 入門案…

WPF(Windows Presentation Foundation)的 StatusBar控件

WPF&#xff08;Windows Presentation Foundation&#xff09;的 StatusBar 是一種用于顯示狀態欄的控件。狀態欄是用于向用戶提供應用程序的狀態信息或其他相關信息的區域。它通常位于應用程序窗口的底部&#xff0c;并提供一些常見的功能&#xff0c;如顯示進度、狀態文本、通…

[C#] 基于 yield 語句的迭代器邏輯懶執行

眾所周知, C# 可以通過 yield 語句來快速向 IEnumerator 或者 IEnumerable 類型的方法返回值返回一個元素. 但它還有另外一個特性, 就是其內部邏輯的懶執行. 每兩個 yield 語句之間的邏輯都是一個狀態, 只有在調用迭代器的 MoveNext 方法后, 才會執行下一個狀態的邏輯. 在文章中…

澤攸科技二維材料轉移臺的應用場景及優勢

隨著二維材料的廣泛研究和各種潛在應用的開發&#xff0c;對于二維材料樣品的精密操控與轉移的需求日益增加。特別是一些新型二維材料的制備和器件集成制備中&#xff0c;需要在顯微鏡下對樣品進行觀察與定位&#xff0c;并能夠在微米甚至納米量級上精確移動和轉移樣品。 傳統…

集簡云 x 零售企業丨快速集成有贊商城和微盛企微管家,實現私域運營自動化

客戶介紹 某公司是一家知名的飲料廠商&#xff0c;自1998年成立以來&#xff0c;一直致力于研發和生產各種熱門飲品&#xff0c;如果汁、碳酸飲料、礦泉水等。因其獨特的口感和健康的品質深受消費者的喜愛。企業擁有多個知名品牌&#xff0c;享有極高的品牌知名度和市場份額。該…

BGP綜合

1、使用PreVal策略&#xff0c;確保R4通過R2到達192.168.10.0/24。 2、使用AS_Path策略&#xff0c;確保R4迪過R3到達192.168.11.0/24。 3、配置MED策略&#xff0c;確保R4通過R3到達192.168.12.0/24。 4、使用Local Preference策略&#xff0c;確保R1通過R2到達192.168.1.0…

Mac電腦系統管理:iStat Menus中文 for Mac

iStat Menus是一款強大而靈活的系統監控工具&#xff0c;可以幫助Mac用戶實時監控和管理自己的電腦。它提供了豐富的系統狀態和性能指標&#xff0c;可自定義的菜單欄圖標以及歷史數據記錄功能&#xff0c;讓用戶能夠全面了解和掌握電腦的運行情況。 實時系統監控&#xff1a;i…

Django的Auth模塊

Auth模塊 我們在創建好一個Django項目后執行數據庫遷移命令會自動生成很多表 其中有auth_user等表 Django在啟動之后就可以直接訪問admin路由&#xff0c;需要輸入用戶名和密碼&#xff0c;數據參考的就是auth_user表&#xff0c;并且必須是管理員才能進入 依賴于a…

flink1.12.4消費kafka 報錯 The coordinator is not available

報錯 You should retry committing the latest consumed offsets. Caused by: org.apache.kafka.common.errors.CoordinatorNotAvailableException: The coordinator is not available. 但是任務還在正常跑. 開源bug [FLINK-28060] Kafka Commit on checkpointing fails rep…

12.8 作業 C++

使用手動連接&#xff0c;將登錄框中的取消按鈕使用qt4版本的連接到自定義的槽函數中&#xff0c;在自定義的槽函數中調用關閉函數 將登錄按鈕使用qt5版本的連接到自定義的槽函數中&#xff0c;在槽函數中判斷ui界面上輸入的賬號是否為"admin"&#xff0c;密碼是否為…