目录
1.内容介绍
2.部分代码
3.实验结果
4.内容获取
1.内容介绍
野马优化算法(Wild Horse Optimizer, WHO)是一种基于群智能的优化算法,灵感来源于野马群体的迁徙与捕食行为。该算法通过模拟野马在自然环境中的群体协作,利用个体间的相互作用来实现对复杂优化问题的有效求解。在WHO中,每个野马代表一个潜在的解决方案,通过探索、开发和竞争三个主要过程来逐步逼近全局最优解。探索阶段旨在广泛搜索解空间,开发阶段则专注于已有优质解附近的精细搜索,而竞争机制确保了种群多样性的维持。
将WHO应用于深度回声状态网络(Deep Echo State Network, DeepESN)的超参数优化,能够显著提升模型的学习效率与泛化能力。DeepESN作为一种先进的递归神经网络结构,擅长处理具有长时依赖性的序列数据。通过WHO优化DeepESN的关键超参数,例如储备池的规模、连接密度、输入权重的范围等,可以自动发现最优或接近最优的配置方案,进而增强模型对特定任务的适应性,改善其预测性能。这种方法不仅简化了人工调参的过程,还为深度学习模型的自动化优化提供了一条新的途径。
代码说明:
利用WHO 对DESN储层结构进行超参数寻优,得到最优超参数组合并建立WHO-DESN模型。并采用预测区间覆盖率 (PICP)和预测区间平均宽度(PINAW)作为区间预测误差评价指标,分别在置信度为90%和 85%的条件下使该模型与DESN模型、和WHO-DESN模型进行对比分析。
2.部分代码
%% 数据归一化
method=@mapminmax;% 最大最小化方法
% 训练集输入归一化
[train_xn,inputps]=method(train_x);
% 训练集输出归一化
[train_yn,outputps]=method(train_y);
% 测试集输入归一化
test_xn=method('apply',test_x,inputps);
% 测试集输出归一化
test_yn=method('apply',test_y,outputps);
%% 转置
% 训练集
% train_xn=train_xn';
% train_yn=train_yn';
% 测试集
% test_xn=test_xn';
% test_yn=test_yn';
%% desn参数设定
alpha = 1;
nLayers = 2;
nInputDim = size(train_xn,1);
nOutputDim = size(train_yn,1);
scalefactor=[1,0.80*ones(1,nLayers)];
delayorder = 5*ones(nLayers,1);
% desn主要参数
nReservoirDim = 10*ones(1,nLayers);
nSpectraRadius = [0.2,0.75*ones(1,nLayers)];
nSparseDegree = 0.2*ones(1,nLayers);
SD_p = 0.4;
%% 样本设置
nSamNum=Ls;
nNeglectSampleNum=100;
% 普通desn
t1=clock;
disp('building the network......');
tic
StackedESN= BuildStackedESN(nLayers,nInputDim,nOutputDim,...
nReservoirDim,nSpectraRadius,nSparseDegree,SD_p,nSamNum);
disp('done......');
toc
disp('training network......');
tic
StackedESN=TrainStackedESN(train_xn',train_yn',StackedESN,nLayers,...
nNeglectSampleNum,delayorder,scalefactor,alpha);
disp('done......');
toc
disp('testing network......');
tic
[StackedESN,PredictedOutput] = TestStackedESN(test_xn',StackedESN,...
nLayers,1,delayorder,scalefactor,alpha,nSamNum);
disp('done......');
toc
PredictedOutput=PredictedOutput(1:end);
test_yn1=method('reverse',PredictedOutput,outputps);
test_sim=test_yn1';
t2=clock;
tt=etime(t2,t1);
% figure
% plot(1:length(test_y),test_y,'b-o','linewidth',1)
% hold on
% plot(1:length(test_sim),test_sim,'r-s','linewidth',1)
% xlabel('时间(15min)')
% ylabel('实际功率(MW)')
% axis tight
% legend('实际值','DESN预测值')
3.实验结果
4.内容获取
主页简介欢迎自取,点点关注,非常感谢!
MATLAB完整源码和数据(excel数据可替换),
1.多种变量输入,单个变量输出;
2.MatlabR2018b及以上版本一键运行;
3.具有良好的编程习惯,程序均包含简要注释。