假设草原上有一群斑马,这群斑马里面,有些斑马跑的比较快,有的跑的慢,而狮子每次捕猎能抓到跑的慢的斑马,那么经过一代代的繁衍,根据达尔文进化论,留下的大部分斑马都是跑的比较快的。进化策略也是基于这优胜略汰,适者生存的套路,通过模拟一个种群的进化过程,逐步优化参数,最终使得目标函数达到最优.
在这个例子中
目标函数:max=sin(10*x)*x + cos(2*x)*x ; x属于[0,5]
由此我们的整个逻辑过程就变成了:
1.创建一个种群,种群中有100个个体(数量自定义),每个个体有10个长度的基因,基因我们这里使用0和1编码
2.将种群中每个个体的基因由2进制翻译成10进制数,带入目标函数,得到的值作为个体的适应度
3.随机保留适应度高的个体,随机去除适应度低的个体,优胜略汰
4.种群经过自然选择后,每个个体都随机与一个个体进行配对,生成孩子,孩子分别从父母中获取一半的基因.
5.生成的孩子进行随机突变,
6.将生成的子代作为新一代种群
7.重复2-6过程100次(繁衍100代)
由于过程比较简单,下面直接上例子代码(注释比较全,对上上面过程应该也很容易)
# coding: utf-8
"""
基础遗传算法
1.初始化种群
2.对种群select
3.对种群crossover
4.循环2,3
"""
impor