TOC算法概述
文獻《Tornado optimizer with Coriolis force: a novel bio-inspired meta-heuristic algorithm》核心解讀:科里奧利力的龍卷風優化算法(Tornado optimizer with Coriolis force,TOC)對龍卷風循環過程的觀察以及雷暴和風暴如何利用科里奧利力演變成龍卷風的自然啟發。該算法于2025年發表在JCR 一區、計算機領域一區期刊 SCI期刊 Artificial Intelligence Review。
文獻內容
- 算法提出
? 提出新型元啟發式算法 TOC(Tornado Optimizer with Coriolis force),靈感源于龍卷風生命周期:
雷暴/風暴形成 → 科里奧利力作用 → 龍卷風生成 → 消散。
? 目標:解決連續搜索空間中的全局優化和約束工程問題。 - 核心機制
? 種群劃分:將搜索代理分為三類:
? 風暴(Windstorms):基礎搜索個體(式20, 27)
? 雷暴(Thunderstorms):較優解(式23)
? 龍卷風(Tornadoes):當前最優解(式24)
? 演化過程:
? 風暴通過科里奧利力作用演化成雷暴或龍卷風(式30, 46, 51)
? 雷暴進一步演化為龍卷風(式52)
? 隨機風暴生成增強探索能力(式54, 57)
本期算法簡介
1.TOC-Transformer-LSTM-ABKDE!Matlab一鍵實現TOC-Transformer-LSTM-ABKDE自適應帶寬核密度估計多變量回歸區間預測(完整源碼和數據)科里奧利力的龍卷風優化算法(Tornado optimizer with Coriolis force,TOC)對龍卷風循環過程的觀察以及雷暴和風暴如何利用科里奧利力演變成龍卷風的自然啟發。該算法于2025年發表在JCR 一區、計算機領域一區期刊 SCI期刊 Artificial Intelligence Review。
2.TOC-Transformer-LSTM-ABKDE基于龍卷風優化算法優化Transformer-LSTM結合自適應帶寬核密度估計多變量回歸區間預測(點預測+概率預測+核密度估計) Matlab語言
3.多變量單輸出,包括點預測+概率預測+核密度估計曲線,MatlabR2023b及以上版本運行,提供多種置信區間!評價指標包括R2、MAE、RMSE、MAPE、區間覆蓋率picp、區間平均寬度百分比pinaw等。
4.算法新穎,對固定帶寬核函數進行了改進。
5.直接替換Excel數據即可用,注釋清晰,適合新手小白,直接運行main文件一鍵出圖。
6.代碼特點:參數化編程、參數可方便更改、代碼編程思路清晰、注釋明細。
詳細介紹
代碼功能
該代碼實現了一個基于TOC優化算法的深度學習概率區間預測模型,核心流程包括:
- 數據預處理:導入數據、劃分訓練/測試集、歸一化處理
- 超參數優化:使用TOC算法優化LSTM-Transformer混合模型的3個關鍵參數
- 模型構建:構建融合位置編碼、自注意力機制和LSTM的深度學習網絡
- 預測評估:進行點預測和區間預測,輸出多維度評估指標
算法步驟與技術路線
關鍵技術路線:
-
TOC優化算法(核心創新)
- 種群大小:10個智能體
- 優化參數:學習率(0.001-0.1)、LSTM節點數(32-128)、正則化系數(0.001-0.1)
- 龍卷風機制:4個雷暴/龍卷風,3次雷暴演化
-
深度學習模型架構:
輸入層 → 位置編碼層 → 殘差連接 → 多頭自注意力層×2 → LSTM層 → ReLU → Dropout → 全連接層
-
區間預測技術:
- 基于KDE(核密度估計)的概率預測
- 自適應帶寬核密度估計(ABKDE)
- 7個分位點(0.525-0.975)的置信區間
關鍵參數設定
類別 | 參數 | 值 | 說明 |
---|---|---|---|
數據 | num_size | 0.7 | 訓練集占比 |
TOC | pop | 10 | 智能體數量 |
Max_iter | 5 | 最大迭代次數 | |
nto | 4 | 龍卷風數量 | |
模型 | MaxEpochs | 200 | 訓練輪次 |
MiniBatchSize | 64 | 批大小 | |
評估 | z | [0.975,…,0.525] | 7個分位點 |
eta | 0.5 | CWC參數 |
運行環境要求
-
軟件:
- MATLAB R2023b+
- Deep Learning Toolbox
- Statistics and Machine Learning Toolbox
-
硬件:
- 推薦GPU加速(非必需)
應用場景
該代碼適用于多領域預測任務:
- 能源領域:電力負荷預測、新能源發電量預測
- 金融領域:股票價格波動預測、匯率趨勢分析
- 工業領域:設備剩余壽命預測、生產質量監控
- 氣象領域:溫度/降水量預測、極端天氣預警
創新點亮點
- 新型優化算法:首次將TOC(龍卷風優化器)應用于深度學習超參數優化
- 混合架構:融合Transformer的位置編碼和LSTM的數據建模優勢
- 概率預測:基于ABKDE的區間預測提供不確定性量化
- 綜合評估:同時輸出點預測(R2/MAE)和區間預測(PICP/PINAW)指標
注意:完整運行需確保自定義函數文件(
TOC.m
,fical.m
,ABKDE.m
等)位于MATLAB路徑中,且data.xlsx
數據格式為:前N列為特征,最后一列為目標值。
數據集
部分源碼
%% 清空環境變量
warning off % 關閉報警信息
close all % 關閉開啟的圖窗
clear % 清空變量
clc % 清空命令行
%% 清空環境變量
warning off % 關閉報警信息
close all % 關閉開啟的圖窗
clear % 清空變量
clc % 清空命令行%% 導入數據
res = xlsread('data.xlsx');%% 數據分析
num_size = 0.7; % 訓練集占數據集比例
outdim = 1; % 最后一列為輸出
num_samples = size(res, 1); % 樣本個數
%res = res(randperm(num_samples), :); % 打亂數據集(不希望打亂時,注釋該行)
num_train_s = round(num_size * num_samples); % 訓練集樣本個數
f_ = size(res, 2) - outdim; % 輸入特征維度%% 劃分訓練集和測試集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);
%% 數據歸一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test = mapminmax('apply', P_test, ps_input);[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);%% 劃分訓練集和測試集
M = size(P_train, 2);
N = size(P_test, 2);
%% 數據平鋪
% 將數據平鋪成1維數據只是一種處理方式
% 也可以平鋪成2維數據,以及3維數據,需要修改對應模型結構
% 但是應該始終和輸入層數據結構保持一致
P_train = double(reshape(P_train,f_, 1, 1, M));
P_test = double(reshape(P_test ,f_, 1, 1, N));t_train = t_train';
t_test = t_test' ;%% 數據格式轉換
for i = 1 : Mp_train{i, 1} = P_train(:, :, 1, i);
endfor i = 1 : Np_test{i, 1} = P_test( :, :, 1, i);
end