Matlab實現RIME-CNN-LSTM-Multihead-Attention多變量多步時序預測

SCI一區級 | Matlab實現RIME-CNN-LSTM-Multihead-Attention多變量多步時序預測

目錄

    • SCI一區級 | Matlab實現RIME-CNN-LSTM-Multihead-Attention多變量多步時序預測
      • 預測效果
      • 基本介紹
      • 程序設計
      • 參考資料

預測效果

在這里插入圖片描述

在這里插入圖片描述

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

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

基本介紹

1.Matlab實現RIME-CNN-LSTM-Multihead-Attention霜冰算法優化卷積長短期記憶神經網絡融合多頭注意力機制多變量多步時間序列預測,算法優化學習率,卷積核大小,神經元個數,以最小MAPE為目標函數;
CNN卷積核大小:卷積核大小決定了CNN網絡的感受野,即每個卷積層可以捕獲的特征的空間范圍。選擇不同大小的卷積核可以影響模型的特征提取能力。較小的卷積核可以捕獲更細粒度的特征,而較大的卷積核可以捕獲更宏觀的特征。
LSTM神經元個數:LSTM是一種適用于序列數據的循環神經網絡,其神經元個數決定了模型的復雜性和記憶能力。較多的LSTM神經元可以提高模型的學習能力,但可能導致過擬合。
學習率:學習率是訓練深度學習模型時的一個關鍵超參數,它控制每次參數更新的步長。學習率過大可能導致模型不穩定和發散,學習率過小可能導致訓練過慢或陷入局部最小值。
多頭自注意力層 (Multihead-Self-Attention):Multihead-Self-Attention多頭注意力機制是一種用于模型關注輸入序列中不同位置相關性的機制。它通過計算每個位置與其他位置之間的注意力權重,進而對輸入序列進行加權求和。注意力能夠幫助模型在處理序列數據時,對不同位置的信息進行適當的加權,從而更好地捕捉序列中的關鍵信息。在時序預測任務中,注意力機制可以用于對序列中不同時間步之間的相關性進行建模。
霜冰優化算法是2023年發表于SCI、中科院二區Top期刊《Neurocomputing》上的新優化算法,現如今還未有相關的優化算法應用文獻。RIME主要對霜冰的形成過程進行模擬,將其巧妙地應用于算法搜索領域。

在這里插入圖片描述

2.運行環境為Matlab2023a及以上,提供損失、RMSE迭代變化極坐標圖;網絡的特征可視化圖;測試對比圖;適應度曲線(若首輪精度最高,則適應度曲線為水平直線);
3.excel數據集(負荷數據集),輸入多個特征,輸出單個變量,考慮歷史特征的影響,多變量多步時間序列預測(多步預測即預測下一天96個時間點),main.m為主程序,運行即可,所有文件放在一個文件夾;

在這里插入圖片描述

4.命令窗口輸出SSE、RMSE、MSE、MAE、MAPE、R2、r多指標評價,適用領域:負荷預測、風速預測、光伏功率預測、發電功率預測、碳價預測等多種應用。

在這里插入圖片描述

程序設計

  • 完整源碼和數據獲取方式:私信博主回復Matlab實現RIME-CNN-LSTM-Multihead-Attention多變量多步時序預測
%% 清除內存、清除屏幕
clc
clear
%% 導入數據
data = xlsread('負荷數據.xlsx');
rng(0)
%%  數據分析
daynum=30;                                             %% 數據量較大,選取daynum天的數據
step=96;                                               %% 多步預測
data =data(end-step*daynum+1:end,:);                 
W_data  = data(:,end)';                                %% 實際值輸出:每天24小時,每小時4個采樣點
%%  數據歸一化
[features, ~] = mapminmax(Features, 0, 1);
[w_data, ps_output]  = mapminmax(W_data, 0, 1);
%%  數據平鋪為4-D
LP_Features =  double(reshape(features,fnum,step,1,daynum));    %% 特征數據格式
LP_WindData  = double(reshape(w_data,step,1,1,daynum));      %% 實際數據格式%% 格式轉換為cell
NumDays  = daynum;                                         %% 數據總天數為daynum天
for i=1:NumDaysFeaturesData{1,i} = LP_Features(:,:,1,i);
endfor i=1:NumDaysRealData{1,i} = LP_WindData(:,:,1,i);
end%% 劃分數據
XTrain = FeaturesData(:,1:daynum-2);                         %% 訓練集輸入為 1-(daynum-2)天的特征
YTrain = RealData(:,2:daynum-1);                             %% 訓練集輸出為 2-(daynum-1)天的實際值        Best_rime = zeros(1, dim);Best_rime_rate = inf; % 用于最大化問題,請將此值改為 -inffor i = 1:dimRimepop(:, i) = lb(i) + rand(SearchAgents_no, 1) .* (ub(i) - lb(i));   % 初始種群endLb = lb .* ones(1, dim); % 下邊界Ub = ub .* ones(1, dim); % 上邊界it = 1; % 迭代次數Convergence_curve = zeros(1, Max_iter);Rime_rates = zeros(1, SearchAgents_no); % 初始化適應度值newRime_rates = zeros(1, SearchAgents_no);W = 5; % 軟霜冰參數,在論文第4.3.1節中有詳細討論% 計算初始位置的適應度值for i = 1:SearchAgents_no[Rime_rates(1, i),Value{i},Net{i},Info{i}] = fobj(Rimepop(i, :)); % 計算每個搜索體的適應度值% 進行貪婪選擇if Rime_rates(1, i) < Best_rime_rateBest_rime_rate = Rime_rates(1, i);Best_rime = Rimepop(i, :);bestPred = Value{i};bestNet = Net{i};bestInfo = Info{i};endend% 主循環while it <= Max_iterRimeFactor = (rand - 0.5) * 2 * cos((pi * it / (Max_iter / 10))) * (1 - round(it * W / Max_iter) / W); % 公式(3),(4),(5)的參數E = (it / Max_iter)^0.5; % 公式(6)newRimepop = Rimepop; % 記錄新的種群normalized_rime_rates = normr(Rime_rates); % 公式(7)的參數for i = 1:SearchAgents_nofor j = 1:dim% 軟霜冰搜索策略r1 = rand();if r1 < EnewRimepop(i, j) = Best_rime(1, j) + RimeFactor * ((Ub(j) - Lb(j)) * rand + Lb(j)); % 公式(3)end% 硬霜冰穿刺機制r2 = rand();if r2 < normalized_rime_rates(i)newRimepop(i, j) = Best_rime(1, j); % 公式(7)endendend

參考資料

[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

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

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

相關文章

996引擎-自定義屬性-方法2:setitemcustomabil

996引擎-自定義屬性-方法2:setitemcustomabil 先看下效果測試NPC補全測試代碼輔助表公式setitemcustomabil 總結參考資料先看下效果 測試NPC 為了方便測試,先準備個NPC require("Envir/QuestDiary/ex/init.lua"); require("Envir/QuestDiary/utils/init.lu…

蘋果電腦殺毒軟件CleanMyMac

殺毒軟件在蘋果家族中是一個小眾軟件&#xff0c;百度搜索蘋果電腦殺毒軟件&#xff0c;可能各種殺軟良莠不齊&#xff0c;因為在這個市場非常小&#xff0c;絕大多數都是沖著“清理”去的&#xff0c;而不是殺毒。最近測試了一款Mac電腦殺毒軟件&#xff0c;殺毒效果也是一般般…

pandas表格內容比較

前陣子來了一個211大學實習生&#xff08;小男生&#xff09;&#xff0c;要比較2個版本字段的變化&#xff0c;輔助完成系統升級字段替換&#xff0c;要求找出哪些字段是新增的&#xff0c;哪些字段是刪除的&#xff0c;哪些字段是屬性信息修改的&#xff0c;要求半天時間搞定…

【SpringBoot】最佳實踐——JWT結合Redis實現雙Token無感刷新

JWT概覽 JWT概念 JWT是全稱是JSON WEB TOKEN&#xff0c;是一個開放標準&#xff0c;用于將各方數據信息作為JSON格式進行對象傳遞&#xff0c;可以對數據進行可選的數字加密&#xff0c;可使用RSA或ECDSA進行公鑰/私鑰簽名。JWT最常見的使用場景就是緩存當前用戶登錄信息&am…

面試系列|螞蟻金服技術面【1】

哈嘍&#xff0c;大家好&#xff01;今天分享一下螞蟻金服的 Java 后端開發崗位真實社招面經&#xff0c;復盤面試過程中踩過的坑&#xff0c;整理面試過程中提到的知識點&#xff0c;希望能給正在準備面試的你一些參考和啟發&#xff0c;希望對你有幫助&#xff0c;愿你能夠獲…

eBPF 實時捕獲鍵盤輸入

eBPF 實時捕獲鍵盤輸入 本文將帶你一步步實現一個基于eBPF kprobe的鍵盤記錄功能&#xff0c;通過Go語言配合libbpfgo&#xff0c;你將學會如何無損地監控系統鍵盤輸入&#xff0c;并從中獲取實時數據&#xff0c;進一步提高系統安全和監控能力。 1. 說明 本文屬于專欄 Go語言…

APB-清華聯合騰訊等機構推出的分布式長上下文推理框架

APB (Accelerating Distributed Long-Context Inference by Passing Compressed Context Blocks acrossGPUs)是清華大學等機構聯合提出的分布式長上下文推理框架。通過稀疏注意力機制和序列并行推理方式&#xff0c;有效解決了大模型處理長文本時的效率瓶頸。APB采用更小的Anch…

數據庫分庫分表介紹

分庫分表是解決數據庫性能瓶頸的常用技術手段&#xff0c;主要用于應對數據量過大、讀寫壓力過高的問題。通過將數據分散到多個數據庫或表中&#xff0c;可以提高系統的擴展性和性能。 1. 分庫分表的核心概念 &#xff08;1&#xff09;分庫 定義&#xff1a;將數據分散到多個…

#mapreduce打包#maven:could not resolve dependencies for project

打包報錯&#xff1a; #報錯信息&#xff1a; [ERROR] Failed to execute goal on project mapreduce_teacher1: Could not resolve dependencies for project org.example:mapreduce_teacher1:jar:1.0-SNAPSHOT: Failed to collect dependencies at org.apache.hive:hive-exe…

Rabit

之前發過rabit了&#xff0c;所以這里不再贅述&#xff0c;講講原理 在線Rabbit加密 | Rabbit解密- 在線工具 (sojson.com) rabbit加密原理 Rabbit加密算法是一種流密碼算法&#xff0c;由Daniel J. Bernstein設計&#xff0c;并被廣泛用于多種加密和安全通信應用中。它的設…

【A2DP】深入解讀A2DP中通用訪問配置文件(GAP)的互操作性要求

目錄 一、模式支持要求 1.1 發現模式 1.2 連接模式 1.3 綁定模式 1.4 模式間依賴關系總結 1.5 注意事項 1.6 協議設計深層邏輯 二、安全機制&#xff08;Security Aspects&#xff09; 三、空閑模式操作&#xff08;Idle Mode Procedures&#xff09; 3.1 支持要求 …

模型蒸餾系列——開源項目

推薦項目&#xff1a;MiniMind&#xff08;低成本全流程訓練框架&#xff09; GitHub&#xff1a;https://github.com/jingyaogong/minimind 核心特性&#xff1a;完整實現從數據清洗到模型部署的全流程&#xff0c;支持單卡低成本訓練&#xff0c;代碼全透明&#xff0c;適合…

【軟考-架構】13.1、軟件架構概述-構件技術

?資料&文章更新? GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目錄 ?【重點】系統架構設計軟件架構概述軟件架構設計與生命周期構件&#x1f31f;軟件架構風格數據流風格調用/返回風格獨立構件風格虛擬機風格倉庫風格閉環控制風格C2體系結…

《Android啟動偵探團:追蹤Launcher啟動的“最后一公里”》

1. 開機儀式的“黑屏懸案” 當Android設備完成開機動畫后&#xff0c;某些產品會陷入詭異的“黑屏時刻”——仿佛系統在玩捉迷藏。此時&#xff0c;**Launcher&#xff08;桌面&#xff09;**就是躲貓貓的主角。我們的任務&#xff1a;揪出Launcher何時完成啟動&#xff0c;終…

Redis事務與管道

Redis事務 可以一次執行多個命令&#xff0c;本質是一組命令的集合。一個事務中的所有命令都會序列化&#xff0c;按順序地串行執行而不會被其他命令插入&#xff0c;不許加塞。 一個隊列中&#xff0c;一次性、順序性、排他性的執行一系列命令。 Redis事務VS數據庫事務 常用…

掌握這些 UI 交互設計原則,提升產品易用性

在當今數字化時代&#xff0c;用戶對于產品的體驗要求越來越高&#xff0c;UI 交互設計成為決定產品成敗的關鍵因素之一。一個易用的產品能夠讓用戶輕松、高效地完成各種操作&#xff0c;而實現這一目標的核心在于遵循一系列科學合理的 UI 交互設計原則。本文將詳細闡述簡潔性、…

Alembic 實戰指南:快速入門到FastAPI 集成

一、快速開始 1.1 簡介 Alembic 是一個基于 SQLAlchemy 的數據庫遷移工具&#xff0c;主要用于管理數據庫模式&#xff08;Schema&#xff09;的變更&#xff0c;例如新增表、修改字段、刪除索引等&#xff0c;確保數據庫結構與應用程序的 ORM 模型保持一致。 Alembic 通過版…

LRU(最近最少使用)算法實現

核心思想與基本思路 LRU&#xff08;Least Recently Used&#xff09;算法是一種緩存淘汰策略&#xff0c;其核心思想是淘汰最近最少使用的數據。 最近使用原則&#xff1a;最近被訪問的數據在未來被訪問的概率更高&#xff0c;因此應保留在緩存中。淘汰機制&#xff1a;當緩…

現在有分段、句子數量可能不一致的中英文文本,如何用python實現中英文對照翻譯(即每行英文對應相應的中文)

以下是處理分段且中英文句子數量可能不一致的文本的Python實現方案&#xff0c;包含分句、翻譯和對齊功能&#xff1a; from googletrans import Translator import redef split_paragraphs(text):"""按空行分割段落并清洗"""return [p.strip()…

C語言每日一練——day_8

引言 針對初學者&#xff0c;每日練習幾個題&#xff0c;快速上手C語言。第八天。&#xff08;連續更新中&#xff09; 采用在線OJ的形式 什么是在線OJ&#xff1f; 在線判題系統&#xff08;英語&#xff1a;Online Judge&#xff0c;縮寫OJ&#xff09;是一種在編程競賽中用…