声明:本文根据对遗传算法相关资料进行整理所得,所参考出处均在文末进行标注,如有侵权,请联系删除。
算法: 遗传算法
参照书籍: 遗传算法原理及应用(国防工业出版社)
倒位算子
\quad 倒 位操作是指颠倒个体编码中随机指定的两个基因座之间的基因排列顺序,从而形成一个新的染色体。
\quad 具体流程:
(1)随机指定倒位点
(2)以倒位概率 P i P_{i} Pi颠倒倒位点之间的基因序列。
例:
1 ⋮ 1 0 0 0 ⋮ 1 1 → 1 ⋮ 0 0 0 1 ⋮ 1 1 1\quad\vdots\quad1\quad0\quad0\quad0\quad\vdots\quad 1\quad1\quad\rightarrow1\quad\vdots\quad0\quad0\quad0\quad1\quad\vdots\quad1\quad1 1⋮1000⋮11→1⋮0001⋮11
二倍体与显性操作算子
出发点:基因的显性与隐性。
例:
A b c D e f G a b C D e f G → A b C D e f G \begin{array}{l} A b c D e f G \\ a b C D e f G \end{array} \rightarrow A b C D e f G\\ AbcDefGabCDefG→AbCDefG左侧为二倍体结构
\quad 对于动态系统优化问题,使用单倍体的遗传算法很难达到优化要求,因为对动态环境的变化过程跟踪效果差,使用双倍体效果较好。
变长度染色体遗传算法
\quad 变长度染色体遗传算法的编码与解码
编码:
\quad 变长度染色体一般表示方式: X m : ( i 1 , v 1 ) ( i 2 , v 2 ) … ( i k , v k ) … ( i n , v n ) X^m:(i_1,v_1)(i_2,v_2)…(i_k,v_k)…(i_n,v_n) Xm:(i1,v1)(i2,v2)…(ik,vk)…(in,vn)
\quad 其中 i k i_k ik为基因编号 v k v_k vk为基因值。
\quad 例:常规染色体表示: X : 100101 X:100101 X:100101
\quad 变长度可表示为 X m : ( 1 , 1 ) ( 2 , 0 ) ( 3 , 0 ) ( 4 , 1 ) ( 5 , 0 ) ( 6 , 1 ) X^m:(1,1)(2,0)(3,0)(4,1)(5,0)(6,1) Xm:(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)
\quad 在变长度染色体遗传算法中,允许长度可长可短。如:
\quad X m : ( 1 , 1 ) ( 2 , 0 ) ( 3 , 0 ) ( 4 , 1 ) ( 5 , 0 ) ( 6 , 1 ) ( 3 , 1 ) ( 1 , 0 ) X^m:(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)(3,1)(1,0) Xm:(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)(3,1)(1,0)
\quad X m : ( 1 , 1 ) ( 3 , 0 ) ( 5 , 0 ) ( 6 , 1 ) X^m:(1,1)(3,0)(5,0)(6,1) Xm:(1,1)(3,0)(5,0)(6,1)
\quad 前者称为过剩指定,后者称为缺省指定。
解码:
\quad (1)在正常指定情况下,将变长度染色体遗传算法中的个体基因型转换为常规遗传算法中的个体基因型。
\quad (2)在描述过剩时,取最左边的二元组进行解码。
\quad 例: X m : ( 1 , 1 ) ( 2 , 0 ) ( 3 , 0 ) ( 4 , 1 ) ( 5 , 0 ) ( 6 , 1 ) ( 3 , 1 ) ( 1 , 0 ) X^m:(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)(3,1)(1,0) Xm:(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)(3,1)(1,0)
\quad 他在常规遗传算法中所对应的个体为:
\quad X : 100101 X:100101 X:100101
\quad (3)描述不足时,可取规定预先设定的标准值或省缺值。
\quad 例: X m : ( 1 , 1 ) ( 3 , 0 ) ( 5 , 0 ) ( 6 , 1 ) X^m:(1,1)(3,0)(5,0)(6,1) Xm:(1,1)(3,0)(5,0)(6,1)
\quad 若省缺值为0, X : 100001 X:100001 X:100001
\quad 若省缺值为1, X : 110101 X:110101 X:110101
\quad 切断算子与拼接算子
\quad 在变长度染色体遗传算法中不使用交叉算子,使用切断算子和拼接算子进行代替。
切断算子:
\quad 切断算子以某一预先指定的概率,在变长度染色体中随机选择一个基因座,在该处将个体的基因型切断,使之称为两个个体的基因型。
拼接算子:
\quad 拼接算子以某一预先指定的概率,将两个个体的基因型连接在一起,使他们合并为一个个体的基因型。
\quad 变长度染色体遗传算法的算法结构
(1)初始化。随机产生M个染色体,长度全部为 k k k的个体,以他们作为变长度遗传算法的初始个体集合 P ( 0 ) P(0) P(0),其中 k k k为根据问题的不同而设定的一个参数,并且 k ≤ l k \le l k≤l。
(2)适应度评价。对变长度的染色体进行解码处理后,评价或计算各个个体的适应度。
(3)基本处理阶段。对群体 P ( t ) P(t) P(t)施加选择算子,以保留适应度较高的个体。
(4)并列处理阶段。对群体 P ( t ) P(t) P(t)施加变异算子、切断算子和拼接算子,以生成新的个体。
(5)重复(2)到(4),直到满足条件为止。
小生境遗传算法
\quad 在用遗传算法求解多峰值函数的优化计算问题时,经常是只能找到个别的几个最优解,或得到局部最优解,而有时希望优化算法能够找出问题的所有最优解,包括局部最优解和全局最优解。基本遗传算法对此无能为力。在遗传算法中引入小生境的概念,从而解决这类问题,以找出更多的最优解。
\quad 遗传算法中模拟小生境的方法主要有以下几种:
(1)基于预选择的小生境实现方法
\quad 基本思想:仅当新生代的子代个体的适应度超过其父代个体适应度时,所产出的子代个体才能替换其父代个体而遗传到下一代群体中,否则父代个体仍保留在下一代群体中。
(2)基于排挤的小生境实现方法
\quad 基本思想:设置排挤因子 C F CF CF,由群体中随机选取的 1 / C F 1/CF 1/CF个个体组成排挤成员,然后依据新产生的个体与排挤成员的相似性来排挤掉一些与排挤成员相类似的个体。个体之间的相似性可用个体编码串之间的海明距离来度量。
(3)基于共享函数的小生境实现方法
\quad 基本思想:通过反映个体之间相似程度共享函数来调整群体中各个个体的适应度,从而在这以后的群体进化过程中,算法能够依据调整后的适应度来进行选择运算,以维护群体的多样性,创造出小生境的进化环境。
混合遗传算法
\quad 遗传算法存在问题:容易产生早熟现象、局部寻优能力较差、并不是解决问题的最有效方法、不能避免对同一个可行解多次搜索
\quad 其他算法:梯度法、爬山法、模拟退火法、列表寻优法具有较强的局部搜索能力。
\quad 混合遗传算法在标准遗传算法中融合了局部搜索算法的思想。
\quad 混合算法特点:
(1)引入局部搜索过程。
(2)增加了编码变换操作过程。
\quad 混合遗传算法的基本构成原则:
(1)尽量采用原有算法的编码方式。
(2)利用原有算法的优点。
(2)改进遗传算子。