天天动画片 > 八卦谈 > 遗传算法原理

遗传算法原理

八卦谈 佚名 2023-09-07 21:53:13

遗传算法

遗传算法是模拟自然界生物进化机制的一种算法,即遵循适着生存,优胜劣汰的法则,也就是寻优过程中有用的保留,无用的则去除。在科学和生产实践中表现为在所有可能的解决方法中找出最符合该问题所要求的条件的解决方法,即找出一个最优解。

一.基本原理

   遗传操作是模拟生物基因遗传的做法。在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的优化过程。从优化搜索的角度而言,遗传算法操作可使问题的解,一代一代地优化,并逼近最优解。

    遗传操作包括以下三个基本遗传算子:选择,交叉和变异。

个体遗传算子的操作都是在随机扰动情况下进行的。因此,群体中个体向最优解迁移的规则是随机的。需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的,遗传操作进行高效有向的搜索,而不是如一般随机搜索方法进行无向搜索。

遗传操作的效果和上述三个遗传算子所取的操作概率,编码方法,群体大小,初始群体,以及适应度函数的设定密切相关。

1. 选择

        从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。

        轮盘赌选择法是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适应度为

,则i被选择的概率为


       显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例。个体适应度越大,其被选择的概率就越大,反之亦然。

       计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间的均匀随机数,将该随机数作为选择指针来确定被选个体。

      个体被选后,可随机地组成交配对,以供后面的交叉操作。

2. 交叉

       在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。

        交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:

l 实值重组

(1)离散重组

(2)中间重组

(3)线性重组

(4)扩展线性重组

l 二进制交叉

(1)单点交叉

(2)多点交叉

(3)均匀交叉

(4)洗牌交叉

(5)缩小代理交叉

最常用的交叉算子为单点交叉。具体操作是:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。

如下面的例子:



3. 变异

   变异算子的基本内容是对群体中的个体串的某些基因座上的基因值做变动。依据个体编码表示方法的不同,可以有以下算法:

(1)实值变异

(2)二进制变异

一般来说,变异算子操作的基本步骤如下:

(1)对群中所有个体以事先设定的变异概率判断是否进行变异

(2)对进行变异的个体随机选择变异位进行变异

遗传算法引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。显然,此种情况下的变异概率应取极小值,否则接近最优解的积木块会因变异而遭到破坏。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。此时收敛概率应取较大值。

    遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。

遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。所谓相互配合,是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。

基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动,(0,1)二值码串中的基本变异操作如下:


其中基因下方标有*号的基因发生变异。

4. 终止条件

当最优个体的适应度达到给定的阙值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设的代数一般设置为100~500代。

二.遗传算法的优缺点

l 遗传算法的优点:

(1)是对决策变量的编码进行操作,这样提供的参数信息量大,优化效果好。(编码)

(2)是从许多点开始并行操作,因而可以有效地防止搜索过程收敛于局部最优解。(多点并行)
(3)通过目标函数来计算适配值,而不需要其他推导和附加信息,从而对问题的依赖性小。(函数要求低)
(4)的寻优规则是由概率决定的,而非确定性的。 (概率搜索)
(5)对于待寻优的函数基本无限制,因而应用范围较广。(函数无限制)
(6)在解空间进行高效启发式搜索,而非盲目地穷举或完全随机搜索。(启发式搜索)
(7)具有并行计算的特点,因而可通过大规模并行计算来提高计算速度。(并行计算)
(8)更适合大规模复杂问题的优化。(大规模)
(9)计算简单,功能强。

l 遗传算法的缺点:

(1)遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码。

(2)另外三个算子的实现也有许多参数,如果交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验。

(3)没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得到较精确的解需要较多的训练时间。

(4)算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。

算法的并行机制的潜在能力没有得到充分的利用。


本文标题:遗传算法原理 - 八卦谈
本文地址:www.ttdhp.com/article/38612.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们