
编辑
1 概述
模拟退火算法“lSA从设定一个较高温度开始,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解的过程。
由于BP神经网络易于陷入局部极小值,收敛速度慢等问题!2,5l,采用梯度下降寻优迭代次数多,效率低下,而GA和SA都是基于概率分布机制的优化算法,两者结合,使用SA可以避免GA早熟问题,从而增强全局和局部搜索能力,本文在此基础上提出模拟退火遗传算法优化的BP神经网络算法,并建立模型用于预测。
2 基于遗传模拟退火的BP神经网络
利用模拟退火算法[3]优化遗传算法并利用遗传算法的全局寻优搜索功能,获得每一次的最优种群(权重和阈值),接着利用BP的局部寻优特征反向寻得最优值。
3 知识回顾
【BP预测】基于遗传算法优化的BP神经网络数据回归预测(Matla代码实现)
基于帝企鹅算法优化BP神经网络实现数据预测(Matlab代码实现)
【回归预测-BP预测】基于思维进化算法优化BP神经网络在非线性函数拟合中的应用(Matlab代码实现)
4 Matlab代码及文章阅读
本文仅展现部分代码,全部代码及文章见:
基于模拟退火算法优化的BP神经网络预测模型(Matlab代码实现)
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
%
5 运行结果

编辑

编辑

编辑

编辑

编辑

编辑