使用神经网络-遗传算法优化神经网络-风电预测故障(BP,GABP,matlab)

本项目是故障预测,不是时序预测,本质还是分类问题

1 数据集介绍

特征文件:
在这里插入图片描述

标签文件:共计4个标签,其中大多数都是正常的,其他是3个不正常的类别
在这里插入图片描述

2 使用BP网络

2.1 读取数据,然后选择几个使用的特征

feature_index = [1,3,13,14,17];
x=xlsread("data.xlsx");
y=xlsread("10号风机标签.csv");
error_index = find(y~=1);
train_index = [error_index(1),error_index(2),error_index(4),error_index(5),error_index(7),error_index(8)]';
test_index = [error_index(3),error_index(6),error_index(9)]';
y(error_index)

2.2 搭建网络,使用newff函数

net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');% 建立模型,传递函数使用purelin,采用梯度下降法训练

W1= net. iw{1, 1};%输入层到中间层的权值
B1 = net.b{1};%中间各层神经元阈值

W2 = net.lw{2,1};%中间层到输出层的权值
B2 = net. b{2};%输出层各神经元阈值

2.3 训练网络,输出结果图像

结果包含:真实值与预测值,迭代过程图像,混淆矩阵图像
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3 使用GA优化BP网络

我们将神经网络参数优化问题看做一个最优化问题,目标函数就是loss,待求解的参数就是w和b,在ga里面,适应度就是目标函数,染色体上每个位置片段就是w和b,在每次迭代时,ga通过染色体的选择、交叉、变异等操作随机的选出适应度最好的那个种群。

3.1 使用ga进行优化

for j=1:sizepop
 x=individuals.chrom(j,:); %个体
 individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);
 %找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
 bestfitness=newbestfitness;
 bestchrom=individuals.chrom(newbestindex,:);
end
   individuals.chrom(worestindex,:)=bestchrom;
   individuals.fitness(worestindex)=bestfitness;
   avgfitness=sum(individuals.fitness)/sizepop;
   trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
 end
end
trace= trace(1:end-1,:);
xl=1:sizepop:length(trace);
trace=trace(xl,:);


3.2 结果对比

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4 最后的结果对比

bp:
平均绝对误差MAE为:0.25
均方误差MSE为:       0.55
均方根误差RMSE为:  0.74162
分类正确率为:  85

Gabp:
隐含层节点数为30时的误差结果如下:
平均绝对误差MAE为:0.2
均方误差MSE为:       0.5
均方根误差RMSE为:  0.70711
分类正确率为:  90

详情联系Q  596520206

通过对比,我们发现gabp的结果要好于bp的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小葱鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值