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

目录

1 概述 

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

3 知识回顾

4 运行结果

 5 参考文献

6 Matlab代码及文章阅读


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

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)rand
                Prex=Nextx;
                P=P+1;
            end
        end
       trace(P+1)=a;    
    end
end
h=Bestx';
end
%

4 运行结果

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

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

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

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

基于模拟退火算法优化的BP神经网络预测模型(Matlab代码实现)_第6张图片 基于模拟退火算法优化的BP神经网络预测模型(Matlab代码实现)_第7张图片

 5 参考文献

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

6 Matlab代码及文章阅读

你可能感兴趣的:(#,神经网络预测预测与分类,#,模拟退火算法,算法,机器学习)