💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
基于CNN-RVM(卷积神经网络-相关向量机)的风电功率预测研究,是将卷积神经网络(CNN)在特征提取方面的优势与相关向量机(RVM)在回归预测中的高效性相结合,以实现对风电功率的精准预测。以下是对该研究的详细分析:
一、研究背景与意义
风电作为一种清洁、可再生的能源形式,在全球能源结构中的地位日益重要。然而,风电功率的波动性和不可预测性给电力系统的调度和运行带来了挑战。因此,准确预测风电功率对于优化电网运行、提高风电利用率具有重要意义。CNN-RVM模型结合了CNN在图像处理和特征提取方面的强大能力以及RVM在回归预测中的高效性,为风电功率预测提供了一种新的思路和方法。
二、CNN-RVM模型概述
1. 卷积神经网络(CNN)
- 结构特点:CNN主要由卷积层、池化层和全连接层组成。卷积层通过卷积核与输入数据进行卷积运算,提取数据的局部特征;池化层通过下采样操作减少特征图的维度,降低计算量并提取主要特征;全连接层则将学到的特征表示映射到样本的标记空间。
- 在风电功率预测中的应用:CNN能够自动从风电功率相关的气象数据(如风速、风向、温度等)中提取空间和时间特征,为预测模型提供丰富的信息。
2. 相关向量机(RVM)
- 原理:RVM是一种基于贝叶斯框架的稀疏概率模型,它通过最大化边缘似然函数来自动确定相关向量的数量和位置,从而实现对目标函数的稀疏逼近。
- 在风电功率预测中的优势:相比于传统的支持向量机(SVM),RVM具有更高的预测精度和更快的训练速度。同时,RVM能够给出预测结果的不确定性估计,为决策者提供更多信息。
三、CNN-RVM在风电功率预测中的应用
1. 数据准备与预处理
- 数据收集:收集风电场的历史功率数据以及相关的气象数据(如风速、风向、温度等)。
- 数据预处理:包括数据清洗(去除异常值和缺失值)、数据归一化等步骤,以提高模型的训练效率和预测精度。
2. CNN特征提取
- 构建CNN模型:根据风电功率数据的特性设计合适的CNN结构,包括卷积层、池化层和全连接层的数量及参数设置。
- 特征提取:利用训练好的CNN模型对输入数据进行特征提取,得到高层次的特征表示。
3. RVM回归预测
- 构建RVM模型:将CNN提取的特征作为RVM模型的输入,构建RVM回归预测模型。
- 模型训练:使用训练数据对RVM模型进行训练,通过最大化边缘似然函数来确定相关向量的数量和位置。
- 预测输出:利用训练好的RVM模型对测试数据进行预测输出,得到风电功率的预测值。
四、研究优势与展望
1. 研究优势
- 高精度预测:CNN-RVM模型能够自动从数据中提取复杂的空间和时间特征,并通过稀疏概率模型进行高效回归预测,从而提高风电功率预测的精度。
- 鲁棒性强:模型能够处理非线性和非平稳的时间序列数据,对异常值和噪声具有一定的鲁棒性。
- 实时性好:通过优化模型结构和算法实现方式,可以在保证预测精度的同时提高模型的实时性。
2. 展望
- 进一步优化模型结构:通过引入更复杂的网络结构和优化算法来进一步提高模型的预测精度和泛化能力。
- 融合更多数据源:结合气象卫星数据、数值天气预报等多源数据,为风电功率预测提供更加全面的信息支持。
- 应用于实际系统:将研究成果应用于实际的风电功率预测系统中,为电力系统的优化调度和运行提供有力支持。
📚2 运行结果
部分代码:
%% 提取CNN特征
layer = 'pool2';
p_train = activations(net,trainD,layer,'OutputAs','rows');
p_test = activations(net,testD, layer,'OutputAs','rows');
%% 类型转换
p_train = double(p_train); p_test = double(p_test);
t_train = double(t_train); t_test = double(t_test);
% kernel function
% kernel = Kernel('type', 'gaussian', 'gamma', 0.05);
% kernel = Kernel('type', 'gaussian', 'gamma', 0.01);
% kernel = Kernel('type', 'polynomial', 'degree', 3);
kernel = Kernel('type', 'linear');
% kernel = Kernel('type', 'sigmoid', 'gamma', 0.01);
% kernel = Kernel('type', 'laplacian', 'gamma', 0.1);
% % parameter
parameter = struct( 'display', 'on',...
'type', 'RVR',...
'kernelFunc', kernel);
rvm = BaseRVM(parameter);
% RVM model training, testing, and visualization
rvm.train(p_train, t_train');
results1 = rvm.test(p_train, t_train');
t_sim1 = results1.predictedLabel;
results2 = rvm.test(p_test, t_test');
t_sim2 = results2.predictedLabel;
% 数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
T_train1 = T_train;
T_test2 = T_test;
% 数据格式转换
T_sim1 = double(T_sim1);% cell2mat将cell元胞数组转换为普通数组
T_sim2 = double(T_sim2);
CNN_RVM_TSIM1 = T_sim1';
CNN_RVM_TSIM2 = T_sim2';
save CNN_RVM CNN_RVM_TSIM1 CNN_RVM_TSIM2
% 指标计算
disp('…………CNN-RVM训练集误差指标…………')
[mae1,rmse1,mape1,error1]=calc_error(T_train1,T_sim1');
fprintf('\n')
figure('Position',[200,300,800,300])
plot(T_train1,'ro-','MarkerSize',3);
hold on
plot(T_sim1','b*-','MarkerSize',1.5);
legend('真实值','预测值')
title('CNN-RVM训练集预测效果对比')
xlabel('样本点')
ylabel('发电功率')
disp('…………CNN-RVM测试集误差指标…………')
[mae2,rmse2,mape2,error2]=calc_error(T_test2,T_sim2');
fprintf('\n')
figure('Position',[200,300,800,300])
plot(T_test2,'ro-','MarkerSize',3);
hold on
plot(T_sim2','b*-','MarkerSize',1.5);
legend('真实值','预测值')
title('CNN-RVM预测集预测效果对比')
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]张安安,邓芳明.基于CNN-RVM的输电杆塔外破振动识别方案[J].计算机仿真, 2020, 37(4):5.DOI:CNKI:SUN:JSJZ.0.2020-04-016.
[2]朱锡山,罗贞,易灿灿,等.基于POA-CNN-REGST的电梯钢丝绳滑移量预测方法[J].机电工程, 2023, 40(6):928-935.
🌈4 Matlab代码、数据
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取