遗传算法——最经典的进化算法
进化算法是基于自然选择和自然遗传等生物进化机制的一种搜索算法。本质上仍是运用了初始信息和搜索过程中信息的启发式搜索算法,不是不考虑信息采取只采取特定步骤的盲目搜索算法。通过对进化原理和过程的建模和尝试,最终实现优化问题的求解。进化算法的搜索主要是基于目标函数在进化后的结果进行选择,而可以不对目标函数的导数进行处理,因此能解决大规模的优化问题。
生物进化机制,以最经典的达尔文进化理论举例,其主要内容为:
1、种群是生物进化的基本单位,生物进化的实质在于种群基因频率的改变。
2、突变和基因重组产生生物的原材料。
3、突变和基因重组,自然选择及隔离是物种形成的三个基本环节,通过它们的综合作用,种群产生分化,并最终导致新物种的形成。
4、自然选择使种群的基因频率定向改变并决定生物进化的方向。
5、隔离是新物种形成的必要条件。
进化算法便是这样的进化机制为基础的,经抽象后可以解决很多的问题。
基本遗传算法的基本要素建模
编码
编码是对标生物学中的,对遗传算法的适用对象染色体或者个体以及其基本单位基因进行建模。
位串编码:将问题参数编码为一维排列染色体,又称为一维染色体编码
实数编码:用若干实数表示一个个体,然后在实数空间上进行遗传操作
初始群体的设定
种群是生物进化的单位,在遗传算法中,种群同理,种群的规模指的是种群中个体的数量,在种群中随机执行遗传算子,最终在种群中通过适应度的进行排序,使用某种策略将某些特定的个体留下进入新的个体中。一般种群规模是这个种群的一个关键参数,种群过大影响算法效率,种群过小搜索范围会比较有限。
适应度函数的设计
在自然中适应度越好,能存活的概率就越高;适应度函数本质上是对遗传中的外部因素进行了建模,适应度函数可以定向选择一些我们感兴趣的特征。遗传算法的目的,便是最优化这个最优化函数,得到对于个体而言最优化函数输出最优的结果。根据它确定子代被选择的概率
-
选择:也称为复制操作,是从群体中按照一定概率选出优良个体,使得他们有机会作为父代繁殖下一代子孙。
一般的判准都是适应度值,不能只挑最好的个体,也不能完全随机,所以需要一定的算法使得种群较快收敛但是也体现物种多样性。 -
- 适应度比例分配法:概率和其适应度的值呈正比,选择概率P: p s i = f i ∑ 1 M f i p_{si}=\frac{f_i}{\sum_1^M{f_i}} psi=∑1Mfifi
-
- 排序方法:线性排序,非线性排序
-
选择个体方法:
-
- 轮盘法
-
- 锦标赛
-
最佳个体保存,最高的直接复制到下一代
遗传操作设计和控制参数设定
突变算法:
交叉
- 单点交叉:交叉互换
- 二点交叉:两点间交叉互换
变异
一些位随机变化
- 位点变异
将选择的基因随机变化成了其他基因 - 逆转变异
在两点之间逆向排序再插回原位 - 插入变异
随机插入一个码 - 互换变异
选择染色体两个基因进行互换 - 移动变异
随机选取一个基因。想左或者向右随意一个随机位数
遗传算法的步骤
- 产生初始群体
- 对每一个染色体,计算适应度
- 满足停止条件,算法停止,按概率抽取染色体
- 以概率交叉产生一些新的染色体
- 发生变异
重复进行遗传算法
改进遗传算法
双倍体遗传算法
双种群遗传算法
特点,同时进化,并行进化