• 机器学习八 遗传算法


    遗传算法

    The survival of the fittest

    达尔文生物进行论

    孟德尔遗传定律

    1962年,美国Michigan大学的Holland教授提出的模拟生物进化及遗传机制而成的一种并行随机搜索最优化算法.

    1975年,Holland出版了第一本系统论述遗传算法和人工自适应系统的专著《Adaptation
    in Natural and Artificial Systems》。20世纪80年代,Holland教授实现了第一个基于遗传算法的机器学习系统—分类器系统,开创了基于遗传算法的机器学习的新概念。

    1989年,Goldberg出版了专著《搜索、优化和机器学习中的遗传算法》,该书全面地论述了遗传算法的基本原理及其应用,奠定了现代遗传算法的科学基础。

    1991年,Davis编辑出版了《遗传算法手册》一书,为推广和普及遗传算法的应用起到了重要的指导作用

    遗传算法是一种优化算法, 能够在很快的时间给出一个足够好的结果, 如NP-hard 问题, 这种传统方法很难解决的问题. 而且遗传算法对目标函数不做苛刻假设, 如可微, 二阶可导等.

    其基本思想 是将自然界当中的'优胜劣汰,适者生存'的进化法则,引入优化算法中, 并结合遗传学中的遗传,变异定律, 经过不断迭代,最后最到足够好的结果.

    种群(population) : 是优化问题解的集合(子集).

    个体(individual) 每一

    染色体(chromosome)

    基因(gene)

    基因座(locus): 基因座 基因所在染色体位置

    等位基因(Allele) : 可以出现在同一基因座的基因,

    选择(selection)(或复制 (reproduction)):

    复制是从一个旧种群中选择生命力强的个体产生新种群的过程, 具有高适应度的个体更有可能在下一代中产生一个或多个子孙.

    交叉(crossover) 交叉模拟生物进化过程中的繁殖现象,通过两个染色体的交换组合, 来产生新的优良品种.

    突变(mutation)

    变异运算用来模拟生物在自然的遗传环境中由于各种偶然因素引起的基因突变, 它以很小的概率随机地改变遗传基因.

    遗传算法的特点:

    1. 遗传算法是对参数的编码进行操作,而非对参数本身,这就是使得我们在优化计算过程中可以借鉴生物学中染色体和基因等概念.
    2. 遗传算法同时使用多个搜索点的搜索信息。不同于传统优化方法的从解空间单个初始点开始最优解的迭代搜索过程, 便于并行运算.
    3. 遗传算法直接以目标函数作为搜索信息
    4. 遗传算法使用概率搜索技术。遗传算法的选择、交叉、变异等运算都是以一种概率的方式来进行的,因而遗传算法的搜索过程具有很好的灵活性
    5. 遗传算法在解空间进行高效启发式搜索,而非盲目地穷举或完全随机搜索

    遗传算法

    遗传算法 设计一般分成几个部分:

    编码方案:编码表示方式。

    适应度函数:目标函数。

    选择策略:优胜劣汰。

    控制参数:种群的规模、算法执行的最大代数、执行不同遗传操作的概率等。

    遗传算子:选择(selection);交叉(crossover);变异(mutation)。

    算法的终止准则:规定一个最大的演化代数,或算法在连续多少代以后解的适应值没有改进。

    遗传算法的五个基本要素:

    参数编码

    初始群体的设定

    适应度函数的设计

    遗传操作设计

    控制参数设定

    遗传算法的设计框架:

    1. 初始化: 初始化种群;
    2. 适应度计算计算每个个体的适应值;
    3. 终止判断: 根据终止条件判断是否终止, 如果是执行第 7 步,否则执行下一步;
    4. 选择: 根据适应度及其相关规则选择进入下一代的个体;
    5. 交叉: 根据交叉规则进行交叉操作;
    6. 突变: 根据突变规则进行突变操作,并返回第二步;
    7. 输出当前最优解
  • 相关阅读:
    bfs入门 (HDU
    Codeforces Round #570 (Div. 3)B
    nyoj 277-车牌号 (map, pair, iterator)
    nyoj 276-比较字母大小 (顺序比较, 逆序输出)
    nyoj 275-队花的烦恼一 (stack, push, pop)
    nyoj 274-正三角形的外接圆面积 (R = PI * a * a / 3)
    nyoj 273-字母小游戏 (getline(cin, string))
    nyoj 268-荷兰国旗问题 (count)
    nyoj 266-字符串逆序输出 (isdigit(), geline(cin, my_string))
    nyoj 264-国王的魔镜 (string[-1:-int(str_len/2+1):-1])
  • 原文地址:https://www.cnblogs.com/vpegasus/p/genetic_algorithm.html
Copyright © 2020-2023  润新知