APP下载

遗传算法在非线性规划中的应用

2018-03-21李欣蔚

电子技术与软件工程 2018年2期
关键词:改进遗传算法

李欣蔚

摘 要 非线性规划问题是如今被应用在各领域中的重要解题方法。遗传算法作为近年来一种从生物遗传学身上学习到的智能算法,与传统方法相比虽然具有一定的模拟限制,但在解决全局优化问题上已经取得了重大进步。本文主要通过简要介绍遗传算法的优化过程,以及分析非线性规划中主要存在的问题,通过提出一种新的学习因子来进行改进遗算法在非线性规划中的应用。

【关键词】遗传算法 改进 适配性 非线性规划

非线性规划?作为发展历史不久的新型学科,目前其有效算法已经存在多种解法,随着计算机技术的快速发展,非线性规划的方法在其中的编译取得了重要的成果。而对于应用领域的扩展,遗传算法的研究不仅仅局限于生物学,已经被引用到人工智能等方面,为一定领域上的开发瓶颈带来了新的希望。遗传算法的优化过程值得在更好的方向上应用,在这其中,如何改进遗传算法在非线性规划中的应用成为了难题之一。

1 遗传算法的优化过程

遗传算法是模拟了生物学在基因遗传方面的操作的算法。因而不难理解,在遗传算法的操作过程中的主要任务就是在群体对象中实现对个体的改进,通过一层一层的遗传算法改进操作,达到对整体的改进目的。其中最基础的三种遗传优化过程为选择、交叉和变异。

1.1 选择

遗传算法的选择过程首先要进行编译,利用编码来对遗传算法中的每一个个体进行分析,并计算其累计的概率。具体的算法步骤如下:

(1)将遗传算法中的数据转换成编码值。

(2)编码过程中对个体进行匹配而后计算其适配值。

(3)将群体个数的总数设定为n,个体为ki,其中i为1到n之间的任意数。因此每个个体的适配值的函数为f(ki)。

(4)将每个个体的适配值叠加得到群体总数的适配值为

(5)分别计算每个遗传算法中的个体 ki(i=1,…,n)的选择概率pi=f(ki)/F。

(6)分别计算每个遗传算法中的个体 ki(i=1,…,n)的选择概率叠加为

(7)寻找一个随机概率数,即大于0小于1的数值,记作c。

(8)用程序进行判断,若c≤qi,则这个选择概率符合我们的要求,进而记录这个个体,否则进行下一个个体的判断,使得pi-1

(9)重复(7)-(8)之间的步骤n次,直到结束。

1.2 交叉

在遗传算法中,交叉算子是遗传操作最重要的部分。交叉遗传指的是把个体部分的结构替换成改进后的部分生成新的个体的操作。交叉算法的具体重组方式有很多种,其中使用最为广泛的为单点交叉。即在个体编码中找到一个交叉点,在进行交叉过程中,以交叉点作为分界的两部分进行互换,使得生成两个新的个体编码。编译过程如下:

(1)寻找一个随机概率数,即大于0小于1的数值,记作c。

(2)将c与个体的交叉概率相比较,即个体的交叉概率较大,则个体通过筛选。

(3)将全部筛选通过的个体编码随机进行匹配,而后寻找一个随机数,随机数要小于个体编码的长度且大于1。随机数即为交叉点的位置,而后匹配好的个体编码在交叉点的位置进行互换操作。

1.3 变异

遗传算法中的变异操作有不同的几种,一般来说,会按照个体编码的表示方法而进行不同的变异。基本操作过程为,先对群体中的个体变异概率进行比较,判断其是否会发生变异,而后对能够产生变异的个体进行随机选择变异。

(1)随机产生一个变异概率数,变异概率数小于1大于0,记作c。

(2)将c与个体的变异概率进行比较,如果个体的变异概率大于c,那么该个体将发生变异。

1.4 停止

在程序设定过程中规定一个进化的次数。以上的选择、交叉、变异过程为一次完整的进化。进化次数为多少以上步骤就重复多少次。

2 非线性规划的主要问题

遗传算法在非线性规划中应用的最困难的问题在于进化的目标函数在执行过程中存在侧重,在部分进化的过程中实现整体进化才是主要目的,然而很难做到。传统的求解非线性规划的方法存在一定的局限性,很容易使得进化的方向陷入一个具体的点。具体存在以下的问题:

(1)目标函数的限制要求过于苛刻。

(2)整体的优化方向是根据目标函数的具体限制来进行的,然而在执行的过程中容易陷入局部化,整体性不够。

(3)要实现具体的算法需要大量的数学前提准备,在目标函数复杂的情况下,想要准确的进行十分困难。

(4)在初始值的设定上存在局限性,不一定是目前算法的最优初始值,使得得到的计算结果存在偏差。

(5)算法不够适用,仅仅针对一个局部问题而设计的算法并不能真正解决整体的进化问题,而整体进化的大方向的把控也是难题。

3 改进遗传算法在非线性规划中的应用

3.1 非线性规划的数学模型

如果要对遗传算法进行非线性规划,首先要针对实际规划的问题分析,而后建立数学模型。数学模型的建立需要确定目标变量和决策变量,建立两个变量之间的函数关系,而后通过相应的约束条件,达到非线性规划的目的。

(1)设定目标函数为x1,x2,......,x3。

(2)设定约束条件。

(3)目标函数下的约束条件都是在定义域中的实际函数,且只要有一个为非线性。

3.2 改进遗传算法的设计

为了改进遗传算法的优化速度以及进化方向,这里引入学习因子。

所谓的学习因子即在遗传算法过程中,一些本身适配性很小的个体,使用一种类似学习的算法,向适配性较大的優秀的个体进行学习,使其在学习后具有更好的适配性。通过增加学习因子的计算步骤,可以使得整个遗传算法进行改进。具体步骤为:

(1)寻找一个较大的选择概率数作为进化学习目标个体,而后筛选出适配性较差的个体,让适配性较差的个体向学习目标进行概率学习。

(2)寻找学习因子作为学习方向,通过对学习目标进行定位,而后在一定的个体编码中对目标进行梯度学习。

(3)经过上述学习之后,使得适配性较差的个体适配性增高,在适配概率上,被选择的概率和改进的程度都有所提高。

4 结论

随着计算机技术的快速发展,非线性规划的方法在其中的编译取得了重要的成果。非线性规格化作为发展历史不久的新型学科,目前其有效算法已经存在多种解法,而对着应用领域的扩展,遗传算法的研究不仅仅局限于遗传学,甚至已经被用于更多的智能科技领域,在未来的科技发展上开拓了新的道路。通过研究遗传算法的优化过程,并在计算机算法中进行实现,在分析非线性规划中主要存在的问题的基础上,通过提出一种新的学习因子来进行改进遗算法在非线性规划中的应用。学习因子在一定程度上可以扩大整体进化的程度,在一定方向上实现了改进遗传算法在非线性规划中的应用。

参考文献

[1]陈丹丹.多准则多约束水平非线性规划理论及应用研究[D].西南石油大学,2014.

[2]刘牧华.约束非线性规划的两种算法[D].河南科技大学,2012.

[3]周伟平,刘兵兵.解灰色非线性规划问题的随机搜索算法[J].计算机应用,2013(10).

作者单位

东北育才学校超常教育实验部 辽宁省阜新市 123000

猜你喜欢

改进遗传算法
遗传算法对CMAC与PID并行励磁控制的优化
基于自适应遗传算法的CSAMT一维反演
一种基于遗传算法的聚类分析方法在DNA序列比较中的应用
基于遗传算法和LS-SVM的财务危机预测
协同进化在遗传算法中的应用研究
“慕课”教学的“八年之痒”
基于改进的遗传算法的模糊聚类算法