基于BP神经网络-GA求解非线性函数极值寻优问题

186 阅读6分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情

摘  要

BP神经网络是一种有效的拟合方法,抽象分类能力强;遗传算法是一种反复迭代的启发式搜索方法,在处理全局最优求解问题上有着很好的适用性。本文重点讨论利用遗传算法结合BP神经网络对非线性函数进行极值寻优,使用MATLAB完成实验仿真,并取得了良好的寻优结果。

关键词 BP神经网络;遗传算法;函数极值;MATLAB

Extreme Optimization of Nonlinear Function Based on Genetic Algorithm

Abstract BP neural network is an effective fitting method, which has strong abstraction and classification ability. Genetic algorithm is an iterative search method, which has good applicability in dealing with the global optimal solution problem. This paper focused on using genetic algorithm combined with BP neural network to optimize the extreme value of nonlinear function. The experimental simulation is completed with MATLAB, and good optimization results were obtained.

Keywords BP neural network; genetic algorithm;function extreme; MATLAB

1  引言

在现代的工程技术应用上,很多工程问题都可以转换成数学上的函数求值问题,这种转换使得现实问题转变为数学问题,可以通过合适的建模来求解。但在构建好的数学模型中也经常会运用到很多复杂的非线性问题,而此类问题又往往流程繁琐,一般很难通过单纯数学方式对其建模与解决。而对于处理这一类问题,非线性系统通常可通过BP神经网络来表达。BP神经网络对于非线性函数系统来说,有着很好的拟合意义;而基因算法则是一种组合性优化的算法。能够模拟自然界生物的发展历史。来找出最优的种族;而遗传算法对于解决非线性函数的最优求解问题也有着极其优势。故将二者融合,能够使结论更为精确。

2  理论基础

2.1 BP神经网络

BP神经网络是一种按照误差逆向传播算法训练的神经网络,BP神经网络属于单向传播的多层前馈网络。BP神经网络模型拓扑结构分为输入层、隐含层和输出层,其中,输入层和输出层节点个数是能够事先确定好的,但是隐含层节点的个数往往需要根据多次实验的效果来确定,其个数对神经网络的效果有着很大的影响。

BP网络训练包括正向传播数据流的子过程和反向传播错误信号的子过程。第一个阶段是信号传递的前移过程。确定输入的数据后,它的传播方向是输入层→隐含层→输出层,逐层计算,逐层传递。直至得出每个计算单元的实际输出值;训练的第二个阶段是误差反向传播过程,若输出层未得到预期结果,则转向反向传播误差信号的过程。通过这两个过程的交替训练,并用反向传播的误差来执行权向量空间误差函数梯度下降策略。也就是说,从输出层开始往前逐层修正权值,以保证网络误差函数达到最小值。

2.2 遗传算法

遗传算法[1]是在1975年由密歇根大学的John holland第一次提出。遗传算法是从自然中生物的进化规律得到启发,将要解决的问题模拟为一个自然生物进化的过程,在反复的进化迭代后不断逼近最优解,是进行全局优化的计算新方法。

遗传算法求最优解可以分为以下几个步骤:

2.2.1 编码

由于遗传算法处理问题时需要先将问题的解编码转换成字符串的形式,这样才能在搜索空间中对其处理。转换为字符串的过程也就称为编码,编码好的字符串,就是在遗传空间里的基因串结构。编码就是对需要解决的问题进行数学化表示的过程。

2.2.2 种群初始化

生物的演化是以群体为单位进行的。借鉴生物种群的概念,遗传算法也引入了种群,种群包括了部分个体,其中个体的多少叫做种群的大小。通常来说,种群是问题解空间的一个规模很小的一部分。

初始种群的大小对整个算法的影响是非常大的。如果初始种群规模太小,虽然会提升算法的运行效率,但是迭代次数就会增加,同时会使搜索空间受到限制,使算法陷入早熟而停止,算法达到的结果仅仅是局部最好。反之,如果初始种群规模太大,不仅会增加算法复杂度,降低运行效率;还有可能会使得一些适应度值较大的个体被淘汰,影响交叉的效果。

所以对于初始种群规模的选择,不仅要保持种群的多样性,同时要考虑到算法效率,一般来说,需要在进行多次测试后选取一个中间值,以使算法的效果达到最优。

2.2.3 确定适应度函数

适应度函数就表明了个体的优劣程度,是用来选择的衡量标准。遗传算法的适应度函数在不同问题中有着不同的定义。

2.2.4 选择操作

选择操作目的就是把优良的个体挑选出来并繁殖。选择操作和适应度值相关,选择的准则是选择适应度值高的优良个体,以使下一代能够遗传到其基因。所以选择操作其实就是使种群朝着优化的方向进化,借助多次选择操作,种群整体来说适应度值就会越来越高。

2.2.5 交叉操作

交叉操作是指从种群中随机选取两个父代个体,把两个个体的部分染色体进行替换组合,生成新的个体能够遗传父代个体的优良特征。交叉操作不仅使得之前的种群中的优良个体基因得到存留,并且使得遗传算法能够搜索到新的解空间。

2.2.6 变异操作

在进行选择和交叉之后,遗传算法还存在着一些问题,比如无法保证不丢失一些重要的遗传信息。自然界中生物新产生的染色体中的基因也有可能出错,也就是变异。遗传算法也模仿生物进化引入了变异操作。在实际应用时,变异操作就是改变种群中的个体串上的基因值

2.2.7 停止准则   

遗传算法是在搜索过程中不断接近最优解的一种不断进化的搜索算法,因此需要确定算法终止判断条件。终止准则中最常用的是定义迭代代数。