遗传算法

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

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

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

整个牧场 -> 一个种群

一头羊->一个个体

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

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

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

遗传算法流程:

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

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

 

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

 

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

posted @ 2019-06-15 17:55  fionaplanet  阅读(943)  评论(0编辑  收藏  举报