您的位置:首页 > 其它

遗传算法的个人理解

2016-05-08 13:09 155 查看
遗传算法是根据达尔文的进化论而来,从父代进行交叉繁衍,得出多种多样的子代。

这里讨论的是已知子代的目标值,让父代在繁衍时逐渐靠拢目标子代,也就是在庞大的数据中生成一个我们想要的值。

步骤:

创建种群:用随机的方式生成种群内的个体。

选择

2.1 评估适应度:计算种群中每个个体在目标中出现的概率。

2.2 创建交配池:在交配池中按适应度添加个体。例:a适应度0.8,b适应度0.2,即在交配池中添加80%的a和20%的b

繁殖

3.1 交叉:在交配池中取a中的前两元素,b中的后两个元素,将他们拼接在一起成为子代。

为了提高子代的多样性,我们可把中点位置改为随机点,即从a中取第一个元素,b中取后三个元素生成一个子代。从a中取前三个元素,b中取后最后一个元素生成另一个子代。

3.2 突变:在创建种群的过程中,我们用随机的方式创建了有多样性的种群,但是只生成了一次,也就是说种群只有第一代,不一定能满足生成目标值。我们需要多代种群,因此加入突变过程保证种群的不断更新。

3.3 突变完成后我们将子代加入新种群,新种群替代原来的种群,再回到选择步骤,重新评估适应度,创建新的交配池。

上一个根据《代码本色》改写的在openframeworks里实现的遗传算法,目标为字符串”HOW DO YOU DO “。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法