遗传算法(Genetic Algorithm 简称GA)起源于对生物系统所进行的计算机模拟研究,是由一种基于生物遗传和进化机制的适合于复杂系统优化的自适应概率优化算法。
特点:不依赖于梯度信息,不仅不受目标函数连续可微的约束,还可以通过编码来实现任意设定其定义域。
原理:遗传算法从代表问题可能潜在解集的一个种群(Population)开始,对种群反复进行选择(Selection)、交叉(Crossover)以及变异(Mutation)操作,估计各个个体的适应值(Fitness),根据“适者生存、优胜劣汰”的进化规则,使得群体越来越向最优解的方向进化。
遗传算法的算法步骤:
染色体编码(chromosome coding)与解码(decode):
编码方式: 1)二进制编码(binary encoding) 2)实数编码(real-number encoding) 3)整数或字母排列编码 4)一般数据结构编码。
二进制编码:是最简单也最常用的编码方式,它采用一个二进制字符串来表征解。普通的二进制编码方式可能具有较大的汉明(Hamming)距离,也称作汉明悬崖。
例如:当原始值x为15和16时,它的5位二进制表示为01111和10000,此时改变了二进制编码的所有位。采用格雷编码(Gray Encoding)可以避免这一缺陷。格雷码的特点是任意两个连续的两个整数的编码值之间只有一个位是不同的,其他位都完全相同。格雷编码是一种基于二进制编码的循环码,它需要对普通的二进制编码从最右一位起,依次将每一位与其左边一位作异或运算,作为对应格雷编码在该位的值,最左边一位保持不变。
下面是9的二进制编码与格雷编码:
个体适应度函数:
选择算算子:
交叉算子
变异算子:
MATLAB工具箱: