龙空技术网

MATLAB基于混沌模拟退火粒子群优化的BP神经网络非线性函数拟合

哥本哈根诠释2023 70

前言:

今天我们对“拓扑优化算法matlab”都比较讲究,小伙伴们都想要分析一些“拓扑优化算法matlab”的相关内容。那么小编在网络上汇集了一些关于“拓扑优化算法matlab””的相关文章,希望看官们能喜欢,朋友们一起来了解一下吧!

BP神经网络是一种按照误差反向传播算法训练的多层前馈网络,通过对样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,靠近期望输出。BP神经网络在数据预测方面的发展已较为成熟,但仍然不可避免的存在一些问题,如:1)训练时初始权重与阈值是随机产生的,会增加神经网络收敛时间;2)由于采用梯度向下算法进行迭代不可避免会出现容易陷入局部最优解的情况等。因此一般通过一些智能算法对BP神经网络进行优化,提高神经网络的局部搜索能力与泛化能力,提升其收敛速度,使得算法能够稳定找到最优解。

PSO粒子群优化算法具有全局搜索能力强、收敛速度快,能够快速收敛到局部最优值的优点等,可以较好解决BP神经网络存在的问题。选择PSO-BP神经网络进行非线性函数拟合的主要原因如下:1)BP神经网络本质实现了从输入到输出的映射功能,从数学角度来说,3层BP神经网络可以以任意精度逼近任何非线性连续函数;2)BP神经网络对于连续数据的回归分析性能较为成熟,可以捕捉输入数据的一般规律与特征;3)PSO算法改善了BP神经网络的拓扑结构、连接权重和阈值,改善了BP神经网络容易陷入局部最优解的情况,从而提升神经网络的整体搜索效率,加快收敛速度。

为了进一步提升PSO-BP的拟合精度,对标准PSO算法进行优化,采用混沌模型与模拟算法进行改进,弥补了PSO算法因后期全局搜索能力不足的缺点,程序运行环境为MATLAB R2018A,部分代码如下:

clcclear% 生成训练数据,数量100x1 = linspace(1,100,100);x2 = linspace(1,100,100);X = [x1;x2];Y = zeros( 100,100);for row = 1 : 1 : 100        for col = 1 : 1 : 100                Y( row,col) = sin(10*x1(row))-x2(col).^3+(x1(row).^2) .* x2(col);    endend% 生成检验数据,数量100xt1 = linspace(1,100,100);xt2 = linspace(1,100,100);XT = [xt1;xt2];Y2 = zeros( 100,100);for row = 1 : 1 : 100    for col = 1 : 1 : 100        Y2( row,col) = sin(10*xt1(row))-xt2(col).^3+(xt1(row).^2) .* xt2(col);     endend% 对样本输入X输出Y作归一化处理,数据范围限制在[-1,1],归一化数据结构保存在ps[Data_target,ps_output] = mapminmax(Y,-1,1);[Data_input,ps_input] = mapminmax(X,-1,1);% 对检验数据做归一化处理Data_test = mapminmax('apply',XT,ps_input);%节点个数inputnum=size(Data_input,1);       % 输入层神经元个数 outputnum=size(Data_target,1);     % 输出层神经元个数hiddennum=10;% 创建网络;net1 = newff(Data_input,Data_target,hiddennum);net2 = newff(Data_input,Data_target,hiddennum);net3 = newff(Data_input,Data_target,hiddennum);%节点总数 2*5 + 5 + 5 + 1 = 21 numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;%% 粒子群算法求权值和阈值%粒子群算法参数设置N = 20;c1 = 2;c2 = 2;w = 0.6;M = 100;D = numsum;x = zeros(1,D);% 调用粒子群算法函数[xm1,fv1,Pbest1] = NNPSO(x,hiddennum,net1,Data_input,Data_target,N,w,c1,c2,M,D);[xm2,fv2,Pbest2] = NNSAPSO(x,hiddennum,net2,Data_input,Data_target,N,w,c1,c2,M,D);[xm3,fv3,Pbest3] = NNCSAPSO(x,hiddennum,net3,Data_input,Data_target,N,w,c1,c2,M,D);% [xm3,fv3,Pbest3] = NNCSAPSO2(x,hiddennum,net3,Data_input,Data_target,N,w,c1,c2,M,D);

出图如下:

完整代码:

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

标签: #拓扑优化算法matlab #模拟退火算法求解非线性规划