MATLAB实现基于WHO-DESN 短期风力发电回归预测(matlab完整源码+数据)

目录
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.具有良好的编程习惯,程序均包含简要注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值