首页 > 化工知识 > 【预测模型-ELAMN预测】基于蚁群算法优化ELMAN神经网络实现数据回归预测matlab代码

【预测模型-ELAMN预测】基于蚁群算法优化ELMAN神经网络实现数据回归预测matlab代码

时间:2021-12-11 来源: 浏览:

【预测模型-ELAMN预测】基于蚁群算法优化ELMAN神经网络实现数据回归预测matlab代码

原创 天天Matlab 天天Matlab
天天Matlab

TT_Matlab

每天分享一点Matlab资料,一起成长进步。需要定制程序添加qq1575304183

收录于话题 #神经网络预测matlab源码 97个 内容

1 简介

风能,作为一种重要,有潜力,无污染,可再生、可持续的能源,已经成为全球发电最为迅速的能源之一,越来越受到世界各国的青睐。近年来,为缓解能源短缺问题,改善环境,实现经济乃至人类的可持续发展,世界各国纷纷大力发展风能资源。然而,在实际操作中,风能固有的波动性和间歇性通常会增加风能入网的难度,致使风电场输出功率不稳定,严重影响输出的电能质量,大大增加了电网安全性和稳定性运行风险,因此,风速预测在风电相关工作中至关重要,准确、可靠的预测结果不仅有利于调度人员事先掌握风电场的功率变化情况,及时制定调度运行计划,提高能量转换效率、降低风险,增加发电量等,同时也有利于风电并网稳定运行和有效消纳,对可能存在影响电网安全稳定运行的风险及时预警,从而避免风电功率随机波动造成电能损耗甚至电网崩溃。近年来,国内外学者进行了大量风速预测相关研究,风速预测水平得到一定程度的提升。单一预测模型虽简单容易实施,但其预测精度往往较低,难以满足风电场发电的需求。相比之下,基于优化算法和数据分解法的混合预测模型对风速预测性能有很大的提升。因此,这些模型往往会降低预测结果的稳定性,对风电场发电以及风电并网的安全性和稳定性带来巨大的挑战。针对如上问题,本文构建出一个基于蚁群算法和Elman神经网络的混合预测模型,本文所提出的混合预测模型不仅可以降低预测误差,提高风速预测精度,增强预测结果的稳定性,同时对风电场发电的完善,发展以及风电并网安全管理也大有裨益。

Elman 神经网络是一种局部反馈递归神经网络,包括输入层、隐藏层、承接层和输出层,由于其良好的动态记忆和时变能力,自1990年Elman首次提出以来,Elman神经网络在时间序列预测中得到了广泛的应用,但由于随机选择初始值和阈值,且采用梯度下降法寻优,其网络学习速度较慢且预测的精度比较低。本文利用 WOA 优化 Elman神经网络的初始权值及阈值,提高了 Elman 神经网络的预测精度。

第一步 初始化 Elman 网络所需参数,并新建 Elman 网 络,net=newelm(minmax(input),[11,1],{’tansig’,’purelin’},’traingdx’),其中 input 是训练集数据,tansig 是隐藏层的激活函数,purelin是输出层激活函数,traingdx是梯度下降函数;

第二步 初始化ACO各参数,包括蚂蚁的数量m 、最大迭代次数Maxiter,参数的上界ub及下界lb;

第三步 不断迭代蚁群优化网络,直到迭代结束形成最优个体,其中最优个体包括权值w1、w2及w3,阈值b1和b2;

第四步 Elman 神经网络解析最优个体,利用解析后的权值及阈值训练Elman神经网络并预测风速数据。

2 部分代码

while NC<=NC_max        %停止条件之一:达到最大迭代次数,停止

    %%第二步:将m只蚂蚁放到n个城市上

    Randpos=[];   %随即存取

    for i=1:(ceil(m/n))

        Randpos=[Randpos,randperm(n)];

    end

    Tabu(:,1)=(Randpos(1,1:m))’;   

    %%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游

    for j=2:n     %所在城市不计算

        for i=1:m

            visited=Tabu(i,1:(j-1)); %记录已访问的城市,避免重复访问

            J=zeros(1,(n-j+1));       %待访问的城市

            P=J;                      %待访问城市的选择概率分布

            Jc=1;

            for k=1:n

                if length(find(visited==k))==0   %开始时置0

                    J(Jc)=k;

                    Jc=Jc+1;                         %访问的城市个数自加1

                end

            end

            %下面计算待选城市的概率分布

            for k=1:length(J)

                P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);

            end

            P=P/(sum(P));

            %按概率原则选取下一个城市

            Pcum=cumsum(P);     %cumsum,元素累加即求和

            Select=find(Pcum>=rand); %若计算的概率大于原来的就选择这条路线

            to_visit=J(Select(1));

            Tabu(i,j)=to_visit;

        end

    end

    if NC>=2

        Tabu(1,:)=R_best(NC-1,:);

    end

    %%第四步:记录本次迭代最佳路线

    L=zeros(m,1);     %开始距离为0,m*1的列向量

    for i=1:m

        R=Tabu(i,:);

        for j=1:(n-1)

            L(i)=L(i)+D(R(j),R(j+1));    %原距离加上第j个城市到第j+1个城市的距离

        end

        L(i)=L(i)+D(R(1),R(n));      %一轮下来后走过的距离

    end

    L_best(NC)=min(L);           %最佳距离取最小

    pos=find(L==L_best(NC));

    R_best(NC,:)=Tabu(pos(1),:); %此轮迭代后的最佳路线

    L_ave(NC)=mean(L);           %此轮迭代后的平均距离

    NC=NC+1                      %迭代继续

    %%第五步:更新信息素

    Delta_Tau=zeros(n,n);        %开始时信息素为n*n的0矩阵

    for i=1:m

        for j=1:(n-1)

            Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);

            %此次循环在路径(i,j)上的信息素增量

        end

        Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);

        %此次循环在整个路径上的信息素增量

    end

    Tau=(1-Rho).*Tau+Delta_Tau; %考虑信息素挥发,更新后的信息素

    %%第六步:禁忌表清零

    Tabu=zeros(m,n);             %%直到最大迭代次数

3 仿真结果

4 参考文献

[1]朱昶胜, 康亮河, and 冯文芳. "基于自适应鲸鱼优化算法结合Elman神经网络的股市收盘价预测算法." 计算机应用 40.5(2020):9.

[2]郝晶. 基于蚁群算法优化神经网络的包头地区中长期电力负荷预测. Diss. 华北电力大学.

天天Matlab

赞赏二维码 微信扫一扫赞赏作者 赞赏

已喜欢, 对作者说句悄悄话
最多40字,当前共

  人赞赏

1 / 3

长按二维码向我转账

赞赏二维码

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

上一条:第七组
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐