遗传算法之函数优化
一、遗传算法简介:
遗传算法是模拟生物在自然环境下的遗传和进化过程的一种自适应的全局优化搜索算法,通过借助遗传学的原理,经过自然选择、遗传、变异等作用机制进而筛选出具有适应性更高的个体(适者生存)。遗传算法从20世纪七八十年代的诞生到现在主要集中的适用范围为:NP问题(指存在多项式算法能够解决的非决定性问题)、非线性、多峰函数优化和多目标优化问题等等。同时在机器学习、模式识别和神经网络及社会科学中的应用也显得非常出色。
二、遗传算法的实现与目的:
实现 :在计算机上模拟生物的进化过程和基因的操作(选择、交叉、变异)。
目的 :抽象和严谨地解释自然界的适应过程和将自然生物系统的重要机理运用到人工系统的设计中。
三、遗传算法基本术语:
种群:可行解集,遗传算法的求解过程就是从这个子集开始的。
个体:可行解
染色体:可行解的编码
基因:可行解编码的分量
基因形式:遗传编码
适应度函数:其函数值是遗传算法实现优胜劣汰的主要依据。
选择:选择操作
交叉:编码的交叉操作
变异:可行解编码的变异
注:这里的个体与染色体的关系,可以把个体当做是染色体的组合。换句话说就是染色体决定了个体,染色体上基因的操作(选择、交叉、变异)直接作用于个体的形态。染色体是指对个体进行编码后所得到的编码串。染色体中的每1 位称为基因,染色体上由若干个基因构成的一个有效信息段称为基因组。
四、遗传操作:
遗传操作:就包括优选适应性强的个体的“选择”;个体间交换基因产生新个体的“交叉”;个体间的基因突变而产生新个体的“变异”。其中遗传算法是运用遗传算子来进行遗传操作的。即:选择算子、变异算子、交叉算子。
1.选择算子:根据个体的适应度,按照一定的规则,从第n代群体中选择出一些具有优良性状的个体遗传到下一代(n+1)群体中。在这一选择过程中,个体适应度越大,则被选择到下一代的机会越大。
2.交叉算子:将群体P(n)中选中的各个个体随机搭配,对于每一个个体,以某一特定概率(交叉概率Pc(0.25-1.0取值))交换他们之间的部分染色体(编码位串的部分位置)。交叉算法是的,遗传算法的搜索能力得到更好的延伸。
2.1交叉操作的具体步骤可以表述为:1.在交配池中随机取出要交配的一对个体;2,根据编码位串长度L,对要交配的一对个体,随机选取[1,L-1]中的一个或者多个整数k作为交叉位置处,相互交换各自的部分基因,由此形成新的个体。
3.变异操作:对群体的每个个体,以某一个概率(变异概率Pm(0.01-0.1取值))将某一个或者某些基因座上的基因值改变为其他的等位基因值,根据个体的编码方式不同,可以将变异分为实值变异和二进制变异。
3.1变异的操作步骤为:首先,对种群中的所有个体按事先的设定的变异概率判断是否进行变异操作;然后 对判断需要变异的个体进行随机选择变异位进行变异。
遗传算法的简单步骤可为:
1.评估每条染色体所对应个体的适应度。
2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。
3.抽取父母双方的染色体,进行交叉,产生子代。
4.对子代的染色体进行变异。
5.重复2,3,4步骤,直到新种群的产生。
五、遗传算法特点:
1、遗传算法以决策变量的编码作为运算对象,这种对决策变量的编码处理,使得在优化计算中可以借鉴生物学的染色体和基因概念,模拟自然界的生物遗传和进化机制,方便的应用决策变量的编码成的位串进行遗传算子。
2、遗传算法仅仅使用目标函数值变换来的适应度函数值,就可以确定进一步的搜索方向和范围。而不是使用目标函数的求导来进行。
3、遗传操作是基于概率因子来操作的。
4、遗传算法具有自组织、自适应个自学习的特性。
5、多点搜索能力,即遗传算法是同时对多个解进行处理、评估,并行地爬多个峰。这一特点使遗传算法具有较好的全局搜索能力,减少了陷于局部优解的风险。
六、matlab实例:
2维空间搜索,群体规模为80:
3维空间搜索,群体规模为80:
5维空间搜索,群体规模为80:
8维空间搜索,群体规模为80:
2维空间搜索,群体规模为100:
2维空间搜索,群体规模为200:
5维空间搜索,群体规模为100:
5维空间搜索,群体规模为200:
分析 及结论:个体的适应度值越大,被选中的可能性也越大。群体规模数越大,可行解的集合也就越大。