算法实现

来源:互联网 发布:bilibili以前知乎 编辑:程序博客网 时间:2024/06/07 02:44

遗传基因算法的概念和原理来自于生物进化理论,数学上主要用于求解不可导函数的近似解。 是一种最优化问题的求解算法。

通常基因算法的实现可分为如下几个步骤:

1. 种群初始化 – 基因编码

一个问题需要用基因算法求解的前提条件就是把问题编码为由若干基因组成的个体。例如,我们需要在区间[a, b]内找一个值满足某函数f(x)的约束,精度为0.00001。那么我们可以采用如下方法来编码这个基因:

(a)     二进制编码

首先我们知道精度要在0.00001,那么我们需要把区间分成(b-a)*105 份,然后看A =(b-a)*105 需要多少位2进制位表示。若2m <=A<=2n 那么需要n位二进制位来表示一个个体。Xs = (b0b1b2…bn)2 = (X’)10

(b)     实数编码

实数编码相对简单, 可以在设定边界[a, b]的情况下产生若干个随机值来表示一个个体。

当然,编码的方法还有很多, 这里就不一一去讨论,因为我也还在研究中...

2. 评价函数设计 – 为基因进化提供数值依据

评价函数是用来评价一个个体是否优良的依据,好的评价函数能有效的淘汰非优良个体,使得算法尽快收敛到合适解。对数学问题函数可以直接作为目标评价函数。

3. 优胜劣汰 – 淘汰适应能力差的个体,优化种群

优胜个体的选择依赖于好的选择算法和合适的淘汰率。主要算法有轮盘赌选择, 随机遍历抽样, 局部选择, 截断选择, 锦标赛选择等

4. 种群繁衍 – 优秀个体相互杂交繁衍子代

种群繁衍是选择优良个体杂交产生新子代的过程,主要算法实值重组,中值重组,离散重组等

5. 基因变异 – 种群某些个体发生变异

按变异的概率在种群的某些基因中发生基因突变而产生新个体的方法。一定的变异率有助于防止算法过快收敛而失去最优化意义。

至此,一个新一代包含优良子代的种群形成了,然后可以重新回到第3步,继续进行种群的世代更替直到产生符合问题解的优秀种群为止。

 

基因遗传算法的成败很多情况下依赖于随机概率和评价函数, 怎么设计评价函数和随机数产生器是一个关键因素。当然每一个过程的算法选择也是需要设计者去考量的。

原创粉丝点击