• 遗传算法


    一直觉得遗传算法高大上,然后都不明觉厉,决定还是要学习下这个优化算法。

    遗传算法主要是模拟我们高中学的染色体变异、染色体交叉等过程,然后通过优胜劣汰获得最优解。

    遗传算法中,一个基本单位为“个体”,一个种群(系统)中拥有好多个体。每个个体携带两个内容:染色体与适应度。以羊群举例

    整个牧场 -> 一个种群

    一头羊->一个个体

    某头羊决定肥瘦程度的染色体->该个体的染色体(模型中所有变量构成一条染色体,每个变量就是染色体上一个基因)

    肥瘦程度->适应度(每个个体的适应度就相当于这个模型在“这个染色体的变量的值下的解”,评价模型的最优解)

    目标->养出最肥的羊(寻找最优解,从中挑出来最大的适应度,它就是在当前情况下的最优解)

    遗传算法流程:

    一次迭代包括以下几个过程:

    1. 染色体变异。即改变某个染色体的值;适应度越优的个体染色体变化范围越小,通过一个随机数让染色体值变化
    2. 染色体交叉。任意选择两个染色体交换部分基因;随机选择一对节点,相互交换对应的值即可
    3. 计算适应度。计算每个染色体在当前迭代下对应的适应度。
    4. 优胜劣汰。杀死排名最后的那个个体。杀死之后种群数量就变少了,所以就必须要让比较优良的个体多生点来把种群数量补回来。

    GA的目标函数和限制条件都要人为根据业务场景调整

    视频参考:https://morvanzhou.github.io/tutorials/machine-learning/evolutionary-algorithm/2-01-genetic-algorithm/

  • 相关阅读:
    Mysql中limit的用法详解
    EXCEPTION与ERROR的区别
    调用sed命令的三种方式
    学编程一定要上大学?美国一半码农都没有计算机学位
    awk 循环语句例子
    Ubuntu 16.04 LTS今日发布
    Ubuntu启动eclipse问题
    Vim技能修炼教程(6)
    Vim技能修炼教程(7)
    Vim技能修炼教程(5)
  • 原文地址:https://www.cnblogs.com/fionacai/p/11028341.html
Copyright © 2020-2023  润新知