遗传算法

由于本人在研究生期间,许多论文中涉及到优化问题,即给定某个目标函数,以及一些约束条件来求解最优值以及最优解。对于求解这类优化问题,遗传算法是一种不错的选择。接下来,我将分享给大家我对于遗传算法的一些拙见,如有不足之处,请大家多多指正。

遗传算法,顾名思义就是根据生物界的遗传进化行为而得名的,其核心思想就是优胜劣汰。

首先让我们先简单回顾一下生物界的遗传进化过程,假设存在某一物种,其种群在一代一代繁衍过程当中,某些个体由于基因突变等因素,导致了变异现象的发生。然而变异也有好坏之分,并非所有的变异都是好的。如果某个个体产生了较好的变异,那么这个个体将会更加能够适应生存环境,因此其生存能力更强,个体更优。相反的如果某个个体产生了不好的变异,那么这个个体必然会被生存环境所淘汰。这便是种群的进化过程。

接下来让我们将生物界中的遗传映射到遗传算法当中。上文中所提到的个体对应于优化问题中的一个解(准确的说是一个解所对应的编码,在下文中会进行讲解),上文中个体的生存能力对应于优化问题中某个解所对应的目标函数值(在遗传算法中称为适应度)。在遗传算法求解过程中,我们也会对个体进行变异等操作,如何判断变异后的个体的好坏呢,自然是根据这个个体的目标函数值(适应度)来进行判断,如果目标函数为最大化问题,那么目标函数值大的个体自然就是好的个体,相反就是不好的个体。

接下来对遗传算法的每一步进行详细说明,但是在此之前需要对一些参数进行说明,这些参数将会运用到遗传算法的过程当中。

种群数量:即种群中个体的数量,此处用来表示

变异概率:用来控制种群中发生变异行为的个体的数量,用表示,取值范围在0~1之间

交叉概率:用来控制种群中发生交叉行为的个体的数量,用表示,取值范围在0~1之间

迭代次数:遗传算法终止的条件,用表示,即经过多少代的种群迭代之后停止

我们以目标函数最大化为例来讲解遗传算法的具体步骤:

遗传算法总共可以分为6步:1.编码,2.解码,3.求解适应度,4.复制,5.交叉,6.变异

1.编码:遗传算法中的编码可以采用实数编码,以及二进制编码,在这里我们主要介绍二进制编码。假设优化问题的解为,其中每个决策变量对应的的编码长度为,则一个个体的总的编码长度记做,即每个个体被编码为一个长度为的二进制串。由于我们上文中说明了种群数量为,因此,我们在初始化种群时,将对个个体进行随机编码,即生成个长度为的二进制串作为我们的初始种群,其中每一个二进制串为一个个体。

2.解码:解码的目的是为了得到每个个体对应的解的实际值。具体过程如下。首先我们需要取出一个个体中每个决策变量对应的二进制编码段,某个个体的决策变量对应的编码段为个体的位置到位置,即(假设个体的下标从0开始,并且设),其中包含开始位置对应的二进制位,不包含结束位置对应的二进制位。之后将编码段转换为对应的十进制值。设的取值范围为,则解码后的实际值为。最后我们根据一个个体可以得到一个对应的优化问题的解

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值