通过借鉴大自然中物种的繁衍概念,演化算法通过在计算机中模拟每个个体的基因序列(和该个体的表现型),并通过组合多个个体,形成种群。对种群中的每个个体,采用类似大自然的自然选择,基因突变等手段促使种群的繁衍,最终达到想要的目标。
构成演化算法的四大要素: 1.代表个体的方法,2.测量个体适应度的函数,3.选择算法,4.后代变异(包含交叉遗传crossover,基因突变mutation)
1.代表个体的方法
对于自然中每个生物而言,决定其适应大自然的程度的一般是基因序列,即基因序列决定了该生物的种种特性(即表现型), 而这些特性又决定了其是否适应环境。而对于计算机模拟的遗传算法而言,如果用真实的基因序列来表达个体未免太过复杂,所以也就有了如下一些表达个体基因的方法。
(1)基因型的结构化表达
对于这种表达方式,最出名的就是神经网络了(ANNs), 利用模拟神经的结构,搭建网络。除了神经网络外,有限状态机也是常用的一种方法。
(2)树状图表达法
对于这种表达法,较为出名的有John Koza的genetic programming,这种表达法较为显著的一个优势是很直观,很好解释,但随着时间的推移,树的不断增大,会导致’膨胀’(bloat),虽然膨胀能很好的削弱突变带来的干扰性,但是与此同时会使树的直观可解释性大幅下降并会导致树的功能紊乱。通过惩罚项能很好地缓解’bloat’。
(3)基于语法的表达方式
'Lindenmayer' 系统是其中的一种,S对应着ABA,A对应着aBa,B对应着AbA,先由一个S开始,即ABA, 其中的A接着换位aBa, B换为AbA,所以即
S->ABA->aBaAbAaBa->aAbAaaBabaBaaAbAa … 一直循环下去知道达到要求的迭代数为止,并去掉其中的大写字母
(4)基于String的表达方式
这是最为常见的一种表达方式,接下来也将默认使用这种表达方式来讲述其他的内容,此处的string既可以是字符也可以是数字或者是二进制的数字串。