持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,点击查看活动详情
1 引言
在现代的工程技术应用上,很多工程问题都可以转换成数学上的函数求值问题,这种转换使得现实问题转变为数学问题,可以通过合适的建模来求解。但在构建好的数学模型中也经常会运用到很多复杂的非线性问题,而此类问题又往往流程繁琐,一般很难通过单纯数学方式对其建模与解决。而对于处理这一类问题,非线性系统通常可通过BP神经网络来表达。BP神经网络对于非线性函数系统来说,有着很好的拟合意义;而基因算法则是一种组合性优化的算法。能够模拟自然界生物的发展历史。来找出最优的种族;而遗传算法对于解决非线性函数的最优求解问题也有着极其优势。故将二者融合,能够使结论更为精确。
2 理论基础
BP神经网络
BP神经网络是一种按照误差逆向传播算法训练的神经网络,BP神经网络属于单向传播的多层前馈网络。
BP网络训练包括正向传播数据流的子过程和反向传播错误信号的子过程。第一个阶段是信号传递的前移过程。确定输入的数据后,它的传播方向是输入层→隐含层→输出层,逐层计算,逐层传递。直至得出每个计算单元的实际输出值;训练的第二个阶段是误差反向传播过程,若输出层未得到预期结果,则转向反向传播误差信号的过程。通过这两个过程的交替训练,并用反向传播的误差来执行权向量空间误差函数梯度下降策略。也就是说,从输出层开始往前逐层修正权值,以保证网络误差函数达到最小值。
遗传算法
遗传算法[1]是在1975年由密歇根大学的John holland第一次提出。遗传算法是从自然中生物的进化规律得到启发,将要解决的问题模拟为一个自然生物进化的过程,在反复的进化迭代后不断逼近最优解,是进行全局优化的计算新方法。
3 实验设计
本实验采用BP神经网络与遗传算法结合的思路。非线性函数求优极值问题的解决,以遗传算法为主,BP神经网络为辅。BP神经网络用于拟合非线性函数,遗传算法用于寻找非线性函数的全局最优解。
本实验使用的非线性函数表达式如下:
y=x12+x22+5 (2-1)
由函数表达式容易得知该函数在(x1,x2)坐标为(0,0)时取得全局最小值5。尽管从给定的函数表达式中可以很容易地得知函数的极值以及对应的座标。但在函数方程不连续、不清晰的情况下求极值将会变得很困难,故可以使用遗传算法来求取全局最优解。
下面介绍实验的具体过程,首先是BP神经网络训练拟合,然后是使用BP神经网络训练结果作为适应度值,继续使用遗传算法在非线性函数中寻找极值。
3.1 BP神经网络训练拟合
BP神经网络训练拟合根据使用的非线性函数的特点来构建合适的网络,使用函数的输入输出数据来训练BP网络,经过训练后的BP神经网络就可以有效地预测非线性函数输出。隐含层节点数的选择对算法效率来说很重要,可以根据经验公式来决定。
因为实验所用的函数,输入参数有2个,输出参数有1个。同时,根据经验公式确定隐含的层数节点数。最终确定BP神经网络结构为:2个节点的输入层,5个节点的隐含层,1个节点的输出层。给定了5000组数据,从中随机抽取4900组数据用作训练数据。100组数据用作测试数据。
选取的4900组训练数据用来训练BP神经网络,网络训练步数设置为100,网络学习速率为0.05,目标误差为0.0000001。当达到规定的训练步数后,结束训练,并保存训练完的网络。
3.2 编码及种群初始化
本实验中个体编码采用实数编码方式,由于BP神经网络结构为2-5-1。共有2×5+5×1=15个权值,5+1=6个阈值,所以个体编码长度设置为21。初始种群规模设定为20,随机初始化种群,进化代数为100次。
3.3 适应度函数
本实验中将由BP神经网络训练拟合的预测值作为个体适应度值,代表了个体的优劣程度,即被选择的概率大小。本实验中,适应度值越小,表示个体越优,被选择的可能越大。
3.4 选择
根据生物进化理论,个体适应度越强,越容易被选中。被选中概率小的个体就有可能被淘汰。本实验选用操作使用适应度比例法。即每个个体按其适应度大小占据不同的比例。但由于本实验的适应度越小个体越优,所以在选择之前,你需要把适应值进行一个求倒数的操作。适应值被取倒数后数值越大的机率也越大。
3.5 交叉
本实验中交叉操作使用实数交叉法。
4 实验结果分析
本实验在硬件配置为11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz、16.00G内存的计算机上进行,使用MATLAB 2016b进行开发。经过BP神经网络对训练数据的训练后,得到了最终的实验结果。BP神经网络拟合总误差为0.56192。