一、代码运行视频(哔哩哔哩)
【Matlab BP回归预测】GA优化BP回归预测(含优化前的对比)【含源码 1901期】
二、相关技术原理简介
1 BP神经网络原理
反向传播(Back Propagation,BP)神经网络于1986年由Rumelhart和McCelland领导的科学家小组提出,是一种按误差逆传播算法训练的多层前馈神经网络。BP神经网络能学习和存贮大量的输入与输出模式映射关系,无需事前揭示描述这种映射关系的数学方程。其学习规则是使用最速下降法,通过反向传播不断调整网络的权值和阈值,从而使网络的误差平方和达到最小。BP神经网络拓扑结构可分为3层,分别是输入层、隐藏层以及输出层。其中,隐藏层的神经元个数计算公式为:
式中:m为输入层节点的个数,n为输出层节点的个数,a一般取1~10内的整数。隐藏层的个数越多,误差范围越小。
2 遗传优化算法
遗传算法是模拟达尔文生物进化论中自然选择和遗传学机理等生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。依据BP神经网络的拓扑结构,确定优化BP神经网络权值阈值的参数个数,从而确定遗传算法中个体的编码长度,再根据适应度函数计算个体的适应值,经过选择、交叉、变异操作得到最优的权值阈值。
2.1 轮盘赌算法
轮盘赌算法是为了防止适应度数值较小群体中的个体被直接淘汰而提出的,每一个个体被选中的概率与其适应度函数值大小成正比关系。适应度数值越高,它被选中的概率就越大。设某一个体xi的适应度值为f(xi),则部分被选中的概率为:
累计概率为:
式中:xi和xj都表示某个个体。
首先,计算每个部分的被选中概率p(xi)和累积概率q(xi)。其次,随机生成一个数组m,数组m中的元素取值范围为[0,1]。若累积概率q(xi)大于数组中的元素m[i],则个体xi被选中;若小于m[i],则比较下一个个体xi+1,直至选出一个个体为止。最后,若需要选择N个个体,则将上述步骤重复N次即可。
2.2 两点交叉算法
两点交叉是指在个体染色体中随机设置两个交叉点,然后进行部分基因交换。先从编码串中不定向选出两个交叉点,再对两个交叉点进行部分染色体交叉,交叉后产生新个体,如图1所示。其中,左侧为交叉前的个体,右侧为两点交叉后产生的新个体。
图1 两点交叉示例
2.3 高斯变异
高斯变异是指进行变异操作时,用符合均值为μ、方差为S2的正态分布的一个随机数替代原有的基因值。根据正态分布的特性,高斯变异重点搜索原个体附近的某个局部区域。高斯概率密度公式为:
其中,标准高斯概率密度的μ和S分别设置为0和1。高斯变异不仅提高了优化算法的优化精度,而且有利于跳出局部最优区域。
三、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]张三妞.基于遗传算法优化BP神经网络的电信客户流失预测研究[J].电视技术. 2022,46(05)