问题前瞻:
- 遗传算法为何称为遗传算法?
- 编码方式
- 目标函数
- 迭代方式
- 终止原则
- 名字由来
在二十世纪五十年代,生物学家已经知道基因在自然演化中的作用了,他们希望借助计算机模拟这个过程,尝试定量研究基因与进化之间的关系.这是遗传算法的滥觞.后来有人将其用于解决优化问题,于是产生了遗传算法.
遗传算法是一种随机搜索算法,从达尔文进化论得到启发,遵循“优胜劣汰、适者生存”的进化原则。
具体来讲,模拟自然界生物种群的进化过程,通过选择(Selection)、交叉(Crossoer)、变异(Mutation)等机制,在每次迭代中都保留一组适应性优胜的候选个体。重复此过程,经过若干代进化后,得到最优种群。 - 算法组成
2.1 编码方式–》创造染色体 //对应于表现型和基因型的映射关系
实现遗传算法的第一步就是明确对待求解问题的编码和解码方式。编码之后在解空间中寻找最优解的问题便转换成了在编码空间中寻找最优种群/染色体的问题。
对于函数优化,一般有两种编码方式,各具有优缺点
a.实数编码:直接用实数表示基因,容易理解且无需解码。但容易过早收敛,从而陷入局优。
b.二进制编码:稳定性高,种群多样性大,但所需存储空间大,需解码难理解
eg:f(x), x∈[a, b]
一般化解码公式:
x = a + decimal (chromosome)*(b -a)/(2^chromosome_size - 1)
a:函数定义域下限
b:函数定义域上限
chromosome:染色体长度
关于个体和染色体:
一个二进制序列代表一条染色体,个体是染色体的载体蕴含一条染色体,他们都和解空间中的一个可行解对应.官方说法:每个个体实际上是染色体带有特征的实体.
2.2 适应度函数
即优化理论中的目标函数.是遗传算法系统进化的驱动力,进行自然选择的唯一标准.
他的设计应该具体问题具体制定.
2.3 遗传算子之选择(淘汰不好的)
遗传算子赋予种群进化的能力.
选择是怎样的机制呢?
每一次迭代种群都会发生变化,具体表现为个体的进出.选择机制便是从前代种群中挑选出基因优良(适应度高)的多对个体,采用类似于交配的方式使他们优良的基因得以延续.
该如何选择能保证存优以及利于算法的收敛性和稳定性呢?
a.在选择之前先对种群中个体按照适应度排序
b.采用轮盘赌(当然还有很多别的选择),各个个体被选中的概率与其适应度函数值大小成正比.
c.除了轮盘赌这种依托概率的随机选择方式,还有精英机制:将前代最优个体直接选择.
2.4 遗传算子之交叉(产生新的)
交叉是怎么的机制呢?//听起来像是自然界中的交配
两个待交叉的不同染色体(父母)根据交叉概率按某种方式交换其部分基因
具体怎么交换呢?
比如:单点交叉法:
2.5 遗传算子之变异
变异是什么机制呢
类似于自然界中的基因突变(为基因多样性/种群多样性提供了源头).我们这里的人工染色体也将以某种概率发生变异.
怎么实现?
比如采用单点变异法.
2.6 终止条件
最简单的方式:限制迭代次数
- 评价
优点:
a.收敛比较快:相对较短时间内给出一个足够好的解答
b.遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。(你不必去指导袋鼠向那边跳,跳多远。)而只要简单的“否定”一些表现不好的个体就行了。(把那些总是爱走下坡路的袋鼠射杀,这就是遗传算法的精粹!)
c.
d.
缺点:
a.早熟:早起的优势基因很快通过交叉散播到整个种群中,使得整个种群过早同一化
b.
c.