zoukankan      html  css  js  c++  java
  • 遗传算法(Genetic Algorithm,GA)

    一、遗传算法原理

           遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程寻找最优解的方法。如图1为遗传算法基本流程图,遗传算法将种群中的所有个体的表现型映射为数值即编码,并利用随机化技术对一个被编码的参数空间高效搜索。初始化种群后,依照适者生存和优胜劣汰的法则,获得更好的近似解。其中,遗传算法的遗传操作为选择、交叉和变异;而遗传算法的中心内容包括了特征编码、初始群体数的设定、适应度函数的设计、遗传交叉与变异设计、控制基本参数设定五个因素。

           图 1 遗传算法基本流程图

    二、遗传算法基本操作

    1、编码

           设计染色体编码时的方法非常多样,每个问题可能采用的编码方式不一样,主要包括二进制编码、浮点编码和符号编码等。二进制编码即对于每个个体,个体特征是否选中使用0/1(0表示不选择该特征,1表示选择该特征)编码,每个个体表示为一个二进制串。二进制编码中的特征选择能有效缓解维灾难。

    2、适应度函数设计

           初始生成种群后就使用适应度函数(fitness function)评价个体适应度。适应度函数也称评估函数,是根据目标函数 确定的,用于辨别群体中个体优差的标准。

    适应度函数一般都是非负的,目标函数可以正也可以为负,变换两者就成了必然。评估个体适应度主要分为三个步骤:(1)对个体染色体编码序列进行解码,得到个体特征表现型。(2)根据个体的特征表现型计算出对应个体的目标函数值。(3)根据目标函数值按照最优化问题的类型和一定的转变规则获得个体的适应度。

    3、选择

           轮盘赌选择(Roulette Wheel Selection)、随机竞争选择(Stochastic Tournament)、最佳保留选择(Best Retention Selection)、无回放随机选择以及一些排序方式一般作为选择函数的选项。

    4、交叉

           遗传算法的交叉操作,是将两个相互配对的染色体按某种随机方式互相交换其部分基因,从而构成新的个体。对于二进制编码的个体主要使用单点交叉、两点与多点交叉、均匀交叉和算术交叉。

    5、变异

           遗传算法中的个体变异运算是指个体染色体编码串中的某些基因座上的基因值用该基因座上的其余等位基因来替换,从而构成新的个体。基因位突变(Simple Mutation)、(非)均匀变异(Uniform Mutation)、边界变异(Boundary Mutation)和高斯近似变异等几种变异方法是针对二进制编码的个体基因突变的首选。

    三、参考文献与代码

    [1] 遗传算法详解(GA),https://blog.csdn.net/u010451580/article/details/51178225

    [2] 超详细的遗传算法(Genetic Algorithm)解析,https://www.jianshu.com/p/ae5157c26af9

    [3] python版代码:https://github.com/XjCaoer/Algorigthm-Research/blob/master/GA/GA.py 

    本文为博主原创文章,未经博主允许禁止转载,需转载请注明出处,欢迎指正!
  • 相关阅读:
    [Linux]history 显示命令的运行时间
    android从中国天气网获取天气
    R语言做文本挖掘 Part4文本分类
    ACdreamoj1110(多重背包)
    9.6 第九章小结
    role 'PLUSTRACE' does not exist
    分糖果
    启动嵌入式间:资源有限的系统启动
    SDL2来源分析7:演出(SDL_RenderPresent())
    C# DataGridView绑定数据源的几种常见方式
  • 原文地址:https://www.cnblogs.com/caoer/p/13265177.html
Copyright © 2011-2022 走看看