【负荷预测】布谷鸟(CS)算法优化BP神经网络的负荷及天气预测(Matlab代码实现)

 💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

目录

 1 概述

2 相空间重构和BP神经网络算法

2.1相空间重构

2.2 BP神经网络

2.3 布谷鸟搜索算法(CS )

 3 运行结果

4 参考文献

5 Matlab代码实现

 1 概述

布谷鸟搜索(Cuckoo Search, CS)算法是一种新型群体智能优化算法,不仅结合了许多鸟类及果蝇特殊的利维飞行模式进行搜索,而且增加了群体之间的信息交流,加快收敛速度,为BP神经网络机参数优化提供了一种新的研究工具。为了提高电力系统负荷和天气预测精度,提出一种CS算法优化BP神经网络参数的负荷和天气预测预测模型(CS-BP)。

2 相空间重构和BP神经网络算法

2.1相空间重构

1980年,Packard等人提出了相空间重构理论,相空间重构目的在于从实测的某一分量时间序列中了解非线性动力系统相空间几何特性,并在高维相空间中恢复混沌吸引子。对一维的混沌短时交通流量时间序列x(i), i= 1,2,…, n ,根据延迟坐标法进行相空间重构,重构后的m维状态向量可表示为:
 

\boldsymbol{X}(i)=\{x(i-(m-1) \tau, \cdots, x(i-\tau), x(i)\}

式中,\tau表示时间延迟,表示m嵌入维数。
根据式(1)可知,相空间重构结果的优劣由\tau和m决定,本文采用互信息法计算\tau和关联维长算法确定m。

2.2 BP神经网络

BP神经网络非线性拟合能力很强,在应用中被广泛的应用于预测、函数逼近、模式识别、数据压缩等。BP神经网络一般包括输入层、隐含层和输出层。
BP神经网络的学习过程分为正向传播和反向误差调整两个阶段,两个阶段交替进行,直到达到收敛条件。BP神经网络对初始值比较敏感,我们可以通过多次改变初始值,避免其陷入局部最优解。

2.3 布谷鸟搜索算法(CS )

布谷鸟搜索(Cuckoo ea抉户发式算法。布谷鸟和Suash Deb 于2009年开发的自然启发式算法。布谷鸟算法的思想是基于布谷鸟的育巢行为和Lévy 飞行,为了简化模型,提出以下三条理想化的规则:

①每只布谷鸟每次下一个蛋,并将其放入随机选择的巢中。

②具有优质蛋的最佳巢会被带到下一代。

③可用的寄主巢数量是固定的,且寄主以概率\mathrm{Pa} \in(0,1)发现布谷鸟放的蛋。在这种情况下,寄主可以消灭该蛋或放弃旧巢另建新巢。布谷鸟搜索算法的全局位置更新公式为:

   

部分代码: 

%% 构建网络
net=newff(inputn,outputn,hiddennum);

%% 寻优,调用布谷鸟优化算法
[bestnest,trace]=cuckoo_search_new(inputnum,hiddennum,outputnum,net,inputn,outputn);
figure
plot(trace)
title('适应度曲线')
xlabel('迭代数')
ylabel('适应度值')

%% 把最优初始阀值权值赋予网络预测
x=bestnest;
% 用CS优化的BP网络进行值预测
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);

net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(B1,hiddennum,1);
net.b{2}=B2';

%% BP网络训练
%网络进化参数
net.trainParam.epochs=500;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00001;

%网络训练
[net,per2]=train(net,inputn,outputn);

%% BP网络预测
%数据归一化
load cs_bp
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
test_simu=mapminmax('reverse',an,outputps);
error=test_simu-output_test;
%%
figure
a1=output_test;
a2=test_simu;
plot(a1,'*-');hold on
plot(a2,'O-')
title('各时刻发电量预测')
xlabel('')
legend('原始数据','bp预测数据')
set(gca,'XTick',1:7,...                                    
        'XTickLabel',{'9:00','10:00','11:00','12:00','13:00','14:00','15:00'},...
        'TickLength',[0 0]);
grid on
ylabel('发电量(KW)')

 3 运行结果

 

 

4 参考文献

部分理论引用网络文献,如有侵权请联系删除。

[1]薛鹏,任鹏飞,刘守兵.基于布谷鸟算法的BP神经网络短时交通流预测[J].河南工程学院学报(自然科学版),2020,32(04):68-71.DOI:10.16203/j.cnki.41-1397/n.2020.04.015.

[2]易姣红. 基于布谷鸟搜索算法优化神经网络的研究[D].长沙理工大学,2014.

[3]何鑫,耿东伟,巨健,俞文瑾.基于CS_BPNN的光伏发电功率预测模型研究[J].价值工程,2019,38(04):173-175.DOI:10.14018/j.cnki.cn13-1085/n.2019.04.052.

5 Matlab代码实现

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值