基于模拟退火算法优化的BP神经网络预测模型(Matlab代码实现)

目录

1 概述 

2 基于遗传模拟退火的BP神经网络

3 知识回顾

4 运行结果

 5 参考文献

6 Matlab代码及文章阅读


1 概述 

模拟退火算法“lSA从设定一个较高温度开始,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解的过程。
由于BP神经网络易于陷入局部极小值,收敛速度慢等问题,采用梯度下降寻优迭代次数多,效率低下,而GA和SA都是基于概率分布机制的优化算法,两者结合,使用SA可以避免GA早熟问题,从而增强全局和局部搜索能力,本文在此基础上提出模拟退火遗传算法优化的BP神经网络算法,并建立模型用于预测。

2 基于遗传模拟退火的BP神经网络

利用模拟退火算法 [3] 优化遗传算法并利用遗传算法的全局寻优搜索功能,获得每一次的最优种群(权重和阈值),接着利用BP的局部寻优特征反向寻得最优值

3 知识回顾

 
function [h,trace]=saforbp(inputnum,hiddennum,outputnum,inputn_train,label_train,net)
%% 参数设定  
%%%冷却表参数%%%%%%%%%%
L=10;      %马尔科夫链长度
K=0.9;    %衰减因子
S=0.01;     %步长因子
T=100;      %初始温度
P=0;        %Metroppolis过程中总接受点
max_iter=100;%最大退火次数                  
%% 随机产生10个初始值,并从10个初值中产生1个处置最优解
Xs=1;
Xx=0;
pop=20;
D=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;
Prex=(rand(D,pop)*(Xs-Xx)+Xx);
for i=1:pop
   funt(i)=fun(Prex(:,i)',inputnum,hiddennum,outputnum,inputn_train,label_train,net); 
end
[sort_val,index_val] = sort(funt,'descend');
Prebestx=Prex(:,index_val(end));
Prex=Prex(:,index_val(end-1));
Bestx=Prex;
bestfit=zeros(1,max_iter);
%每迭代一次退火一次(降温),直到满足迭代条件为止
for iter=1:max_iter
    iter
    T=K*T;%在当前温度T下迭代次数
    for i=1:L
        %在附近随机选下一点
        Nextx=Prex+S*(rand(D,1)*(Xs-Xx)+Xx);
        %边界条件处理
        for ii=1:D
            if Nextx(ii)>Xs | Nextx(ii)<Xx
                Nextx(ii)=rand*(Xs-Xx)+Xx;
            end
        end
        %%是否全局最优解
        a=fun(Bestx',inputnum,hiddennum,outputnum,inputn_train,label_train,net); 
        b=fun(Nextx',inputnum,hiddennum,outputnum,inputn_train,label_train,net); 
        if a<b
           prebest=a;
           Prebestx=Bestx;%保留上一个最优解
           Bestx=Nextx;%更新最优解
           a=b;
        end%如果新解更好,用新解替代最优解,原最优解变为前最优解
%%%%%%%%%%%%Metropolis过程
        c=fun(Prex',inputnum,hiddennum,outputnum,inputn_train,label_train,net); 
        if c<b 
            %%%接受新解
            Prex=Nextx;
            P=P+1;
        else
            changer=-1*(b-c)/T;
            p1=exp(changer);
            %%%以一定概率接受较差的解
            if p1>rand
                Prex=Nextx;
                P=P+1;
            end
        end
       trace(P+1)=a;    
    end
end
h=Bestx';
end
%

4 运行结果

 

 

 5 参考文献

[1]蒋美云.基于模拟退火算法优化的BP神经网络预测模型[J].软件工程,2018,21(07):36-38.DOI:10.19644/j.cnki.issn2096-1472.2018.07.010.

6 Matlab代码及文章阅读

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值