前言:
最近开始学习遗传算法,为了能够更有条理性的学习,记录一下遗传算法的一些个人小总结。还望看到的博友们多多指点……
一、遗传算法执行过程
首先是遗传算法的执行过程的整体概况,如下:
1、选择编码策略,把参数转换成串;
2、根据群体大小N,随机产生N个串构成的群体;
3、根据适应度函数 F=f(x) 计算各个串的适应度;
4、根据串的复制概率 F=f(x) 选择一个串进行复制,直至已经复制了N个串,适应度越高,复制概率越大;
5、复制后的串两两配对,以交叉概率进行交叉;
6、对每个串中的基因按变异概率进行翻转;
7、从3起重复进行,直到满足某一性能指标或规定的遗传代数;
从上面可以知道,编码是遗传算法第一个要解决的问题。先了解一下编码的定义。编码是把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法。而由遗传算法解空间向问题空间的转换称为解码。
二、常用的编码介绍
1、二进制编码:
(1)定义:二进制编码方法是使用二值符号集{0,1},它所构成的个体基因型是一个二进制编码符号串。二进制编码符号串的长度与问题所要求的求解精度有关。
(2)举例:0≤x≤1023,精度为1,m表示二进制编码的长度。则有建议性说法:使 2m-1≤1000(跟精度有关)≤2m-1。取m=10
则X:0010101111就可以表示一个个体,它所对应的问题空间的值是x=175。
(3)优缺点
优点:符合最小字符集原则,便于用模式定理分析;
缺点:连续函数离散化时的映射误差。
2、格雷码编码
(1)定义:格雷码编码是其连续的两个整数所对应的编码之间只有一个码位是不同的,其余码位完全相同。它是二进制编码方法的一种变形。
十进制数0—15之间的二进制码和相应的格雷码分别编码如下。
二进制编码为:0000,0001,0010,001 1,0100。0101,0110,0111,
1000,1001,1010,1011,1100,1101,1110,1111;
格雷码编码为:0000,0001,0011,0010,0110,0111,0101,0100,
1100,1101,1111,1110,1010,1011,1001,1000。
(2)举例:对于区间[0。1023]中两个邻近的整数X1=175和X2=176,若用长度为10位的二进制编码,可表示为X11:0010101111和X12 0010110000,而使用同样长度的格雷码,它们可分别表示为X21:0010101111和X22:0010101000。
(3)优点:增强了遗传算法的局部搜索能力,便于连续函数的局部控件搜索。
3、浮点数(实数)编码
(1)定义:浮点数编码是指个体的每个基因值用某一范围内的一个浮点数来表示,而个体的编码长度等于其决策变量的个数。因为这种编码方法使用的决策变量的真实值,也称之为真值编码方法。
(2)举例:
(3)优点:实数编码是遗传算法中在解决连续参数优化问题时普遍使用的一种编码方式,具有较高的精度,在表示连续渐变问题方面具有优势。
4、排列编码
排列编码也叫序列编码,是针对一些特殊问题的特定编码方式。排序编码使问题简洁,易于理解。该编码方式将有限集合内的元素进行排列。若集合内包含m个元素,则存在m!种排列方法,当m不大时,m!也不会太大,穷举法就可以解决问题。当m比较大时,m!就会变得非常大,穷举法失效,遗传算法在解决这类问题上具有优势。如解决TSP问题时,用排列编码自然、合理。
5、其它编码方式
多参数级联编码等
三、编码评估策略
1、三个规范:
(1)、完备性:问题空间的所有解在遗传算法空间中的值都有对应。
(2)、健全性:遗传算法控件中的值在问题空间中都有解对应。
(3)、非冗余性:两个空间的值满足一一对应关系。
说明:这三个规范不一定都要满足,有些时候需要牺牲健全性以满足非冗余性。经研究表明,满足上述规则与提高遗传算法效率无关。
2、De Jong提出了较为客观明确的编码评估准则,包括两个规则:
(1)、有意义积木块编码规则:所定编码应易于生成与所求问题相关的短距和低阶的积木块。
(2)、最小字符集编码规则:所定编码应采用最小字符集以使问题得到自然的表示或描述。
四、参考:
1、模式定理:
模式是指种群个体基因串中的相似样板,它用来描述基因串中某些特征位相同的结构。在二进制编码中,模式是基于三个字符集(0,1,*)的字符串,符号*代表任意字符,即 0 或者 1。 模式示例:10**1
定义1:模式 H 中确定位置的个数称为模式 H 的阶,记作O(H)。例如O(10**1)=3 。
定义2:模式 H 中第一个确定位置和最后一个确定位置之间的距离称为模式 H 的定义距,记作δ(H)。例如δ(10**1)=4 。
模式阶用来反映不同模式间确定性的差异,模式阶数越高,模式的确定性就越高,所匹配的样本数就越少。在遗传操作中,即使阶数相同的模式,也会有不同的性质,而模式的定义距就反映了这种性质的差异。
模式定理:具有低阶、短定义距以及平均适应度高于种群平均适应度的模式在子代中呈指数增长。模式定理保证了较优的模式(遗传算法的较优解)的数目呈指数增长,为解释遗传算法机理提供了数学基础。
2、汉明悬崖(Hamming Cliff)
汉明悬崖是二进制编码的一个缺点,就是在某些相邻整数的二进制代码之间有很大的汉明距离,使得遗传算法的交叉和突变都难以跨越。
格雷码(Gray Code)可以克服这个问题,在相邻整数之间汉明距离都为1,但是汉明距离在整数之间的差并非单调增加,引入了另一层次的隐悬崖。
在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。 例如:
* 1011101 与 1001001 之间的汉明距离是 2。
* 2143896 与 2233796 之间的汉明距离是 3。
* "toned" 与 "roses" 之间的汉明距离是 3。