【本文属作者原创,但已发表于科学网(链接地址:http://blog.sciencenet.cn/blog-3102863-1029280.html),现稍作格式上的修该后转载,并发金币祝大家新年快乐!】
1. 引言
遗传算法 (genetic algorithms) 是一种很有意思最优化方法,常用于解决一些传统方法力所不及的多变量最优化问题。这种方法很通用,即用同样的思想可以解决很多不同的问题。只要你能对问题所有可能的解定义一个反映其好坏程度的量,就有可能用遗传算法找到高质量的解。遗传算法的应用十分广泛,编程实现也很容易。本文介绍遗传算法的基本概念和算法流程,给出一个用matlab实现的50行的遗传算法程序,并用一个简单的例子展示它的应用。本文给出的程序适用于待优化函数的各个变量皆为实数的情形,可用于多变量拟合等问题。读者若弄明白了该程序,应该可以写出函数变量取整数值(比如二进制数值)的遗传算法程序,甚至写出整数与实数混合情形的程序。
2 遗传算法的基本概念
2.1 生物学中的相关概念
与遗传算法有关的生物学概念主要有:
a) 染色体(chromosome)。
所有生物都由细胞组成,每一个细胞中都有一套相同的染色体。一条染色体由若干基因(gene) 组成,每个基因控制一种特定的蛋白质,从而决定生物的某种特征。所有染色体合称为基因组(genome)。基因组完全决定了一个生物个体。该个体在微观(基因)层次的表现称为基因型 (genotype),在宏观(特征)层次的表现称为显型 (phenotype)。在简单的遗传算法中,将基因组中的若干条染色体看作一整条染色体。
b) 个体复制。
在复制的过程中,父母的染色体通过交叉(crossover)产生子女的染色体。染色体还可以以一定的小概率变异(mutate)。
2.2 遗传算法的基本概念
在一般的遗传算法应用中,我们研究的是这样的优化问题:对一个有 N 个参数 x_i (1 <= i <= N) 的实函数 f(x_i) (该函数可以有任何形式;我们不要求它有任何解析性质),找到一组合适的参数使得该函数的值尽可能地大或者尽可能地小。该函数叫做适应度函数 (fitness function),其值叫做适应度。
下面我们用这个最优化问题结合上面的生物学概念说明遗传算法中的基本概念:
a) 个体,问题的一个可能的解,即任何一组参数。这组参数也叫基因型,对应的函数值叫做显型。
b) 解空间,又叫搜索空间,即所有参数构成的 N 维空间。
c) 种群 (population)ÿ