遗传算法原理及应用一(编码、适应度函数与选择算子)

声明:本文根据对遗传算法相关资料进行整理所得,所参考出处均在文末进行标注,如有侵权,请联系删除。

算法: 遗传算法
参照书籍: 遗传算法原理及应用(国防工业出版社)
应用问题: 寻优
遗传算法特点:
(1)遗传算法以决策变量的编码作为运算对象。
(2)遗传算法直接以目标函数值作为搜索信息。
(3)遗传算法同时使用多个搜索点的搜索信息。
(4)遗传算法使用概率搜索技术。
遗传算法的构成要素:
(1)编码方法。
(2)个体适应度评价。
(3)遗传算子:主要包括选择运算、交叉运算、变异运算。
(4)遗传算法运行参数:群体大小 M M M、遗传运算的终止进化代数 T T T、交叉概率 P c P_c Pc、变异概率 P m P_m Pm.

编码方法:

编码原则一(有意义积木块编码原则): 应使用能易于产生所求问题相关的且具有低阶、短定义长度模式的编码方案。
编码原则二(最小字符集编码原则): 应使用能使问题得到自然表示或描述具有最小编码字符集的编码方案。
二进制编码方法: 遗传算法中最常用的一种编码方法。假设某一参数的取值范围是 [ U m i n , U m a x ] [U_{min},U_{max}] [Umin,Umax],用长度为 l l l的二进制编码符号串来表示该参数,则可以产生 2 l 2^l 2l种不同的编码。
00000000 ⋯ 00000000 = 0 ⟶ U min ⁡ 00000000 ⋯ 00000001 = 1 ⟶ U min ⁡ + δ ⋮ ⋮ ⋮ 11111111 ⋯ 11111111 = 2 l − 1 − → U max ⁡ \begin{array}{cccc} 00000000 \cdots 00000000=0 & \longrightarrow & U_{\min } \\ 00000000 \cdots 00000001=1 & \longrightarrow & U_{\min }+\delta \\ \vdots & \vdots & \vdots\\ 11111111 \cdots 11111111=2^{l}-1 & -\rightarrow & U_{\max } \end{array} 0000000000000000=00000000000000001=11111111111111111=2l1UminUmin+δUmax
二进制编码精度为: δ = U max ⁡ − U min ⁡ 2 l − 1 \delta=\frac{U_{\max }-U_{\min }}{2^{l}-1} δ=2l1UmaxUmin
假设某一个体的编码为: X : b l b l − 1 b l − 2 ⋯ b 2 b 1 X:b_lb_{l-1}b_{l-2}\cdots b_2b_1 X:blbl1bl2b2b1
则解码公式为: x = U m i n + ( ∑ i = 1 l b i ∗ 2 i − 1 ) ∗ U m a x − U m i n 2 l − 1 x=U_{min}+(\sum_{i=1}^lb_i*2^{i-1})*\frac{U_{max}-U_{min}}{2^l-1} x=Umin+(i=1lbi2i1)2l1UmaxUmin
二进制编码优点:
\qquad (1)编码、解码操作简单易行。
\qquad (2)交叉、变异等遗传操作便于实现。
\qquad (3)符合最小字符集编码原则。
\qquad (4)便于利用模式定理对算法进行理论分析
格雷码编码方式
\qquad 格雷码其连续的两个整数所对应的编码值之间仅有一个码位不同,其余码位都完全相同。
例如:

十进制二进制码格雷码
000000000
100010001
200100011
300110010
401000110
501010111
\qquad 对于二进制编码 B = b l b l − 1 b l − 2 ⋯ b 2 b 1 B=b_lb_{l-1}b_{l-2}\cdots b_2b_1 B=blbl1bl2b2b1,其格雷码为 G = g l g l − 1 g l − 2 ⋯ g 2 g 1 G=g_lg_{l-1}g_{l-2}\cdots g_2g_1 G=glgl1gl2g2g1。由二进制编码到格雷码的转换公式为:$$\left{\begin{array}{l}
g_{m}=b_{m} \
g_{i}=b_{i+1} \oplus b_{i}, \quad i=m-1, \quad m-2, \cdots, 1
\end{array}\right.
由格雷码到二进制转换公式为: 由格雷码到二进制转换公式为: 由格雷码到二进制转换公式为:\left{\begin{array}{l}
b_{m}=g_{m} \
b_{i}=b_{i}+\oplus g_{i}, \quad i=m-1, \quad m-2, \cdots, 1
\end{array}\right.$$ 式中 ⊕ \oplus 表示异或运算符。
格雷码特点:任意两个整数的差为这两个整数所对应的格雷码之间的海明距离
\qquad 格雷码编码方法的主要优点为:
\qquad (1)便于提高遗传算法的局部搜索能力。
\qquad (2)交叉、变异等遗传操作便于实现。
\qquad (3)符合最小字符集编码原则。
\qquad (4)便于利用模式定理对算法进行理论分析。
浮点数编码方法
\qquad 个体的每个基因值用某一范围的一个浮点数来表示,个体的编码长度等于其决策变量个数。
\qquad 优点:
\qquad (1)适合于在遗传算法中表示范围较大的数。
\qquad (2)适合于精度要求较高的遗传算法。
\qquad (3)便于较大空间的遗传搜索
\qquad (4)改善了遗传算法的计算复杂性,提高了运行效率
\qquad (5)便于遗传算法于经典优化方法混合使用。
\qquad (6)便于设计针对问题的专门知识型遗传算子
\qquad (7)便于处理复杂的决策变量约束条件
符号编码方法
\qquad 符号编码方法是指个体染色体编码串中的基因值取自一个无数值含义、而且只有代码的符号集。
\qquad 优点:
\qquad (1)符合有意义积木块编码原则
\qquad (2)便于在遗传算法中利用所求解问题的专门知识。
\qquad (3)便于遗传算法与相关近似算法之间的混合使用。
多参数级联编码方法
\qquad 将各个参数分别以某种编码方法进行编码,然后将编码按照一定顺序联接一起组成表示全部参数的个体编码。
多参数交叉编码方法
\qquad 主要思想:将各个参数中起主要作用的码位集中在一起,这样就不易于被遗传算子破坏掉。

适应度函数

\qquad 在遗传算法中,适应度是用来衡量种群中每个个体的优劣程度的,适应度较高的个体遗传到下一代的概率就较大;而适应度较低的个体遗传到下一代的概率就相对小一些。因此,适应度的大小直接影响种群中每个个体的生存机率的大小。适应度的大小是用适应度函数来度量的。适应度函数的设计应该满足一下几个条件:单值、连续、非负、最大化;合理、一致性;计算量小;通用性强。
目标函数与适应度函数
\qquad 遗传算法的一个特点是它仅使用所求问题的目标函数值就可得到下一步的有关搜索信息。而对目标函数值得使用是通过评价个体得适应度来体现的。评价个体适应度得一般流程为:
\qquad (1)对个体编码串进行解码处理后,可得个体得表现型。
\qquad (2)由个体的表现型可计算出对应个体的目标函数值。
\qquad (3)根据最优化问题的类型,由目标函数值按一定的转换规则求出个体的适应度。
\qquad 在遗传算法中,群体的进化过程就是以群体中各个个体的适应度为依据,通过一个反复迭代的过程,不断地寻求出适应度较大的个体,最终就可得到问题的最优解或近似最优解。
适应度尺度变换
\qquad 单纯使用目标函数作为适应度函数计算个体适应度时,针对不同问题收敛速度不同。如何确定适应度对遗传算法的性能影响较大。在适应度函数的选择时应考虑:收敛速度、提升种群的多样性、避免陷入局部最优、增加种群间的竞争力等。
\qquad 常用个体适应度尺度变换方法主要有三种:线性尺度变换、乘幂尺度变换和指数尺度变换。
\qquad (1)线性尺度变换:
F ′ = a F + b F^{'}=aF+b F=aF+b
\qquad 其中, F ′ F^{'} F为尺度变换后的新适应度, F F F为原适应度, a a a b b b为系数。
\qquad (2)乘幂尺度变换。
F ′ = F k F^{'}=F^k F=Fk
\qquad (3)指数变换
F ′ = e x p ( − β F ) F^{'}=exp(-\beta F) F=expβF

选择算子 - -应用选择算子模拟自然环境的优胜劣汰操作

\qquad 选择的作用是保存优良基因从群体中选择适应度较高的优良个体得以继续生存用于繁殖
后代,从而提高遗传算法的全局收敛性,使算法收敛于全局最优解。
比例选择(又称轮盘赌)
\qquad 它是以正比于个体适应度的概率来选择相应的个体,由于是随机操作,这种选择方法的选择误差比较大,有时适应度较高的个体也选择不上。
\qquad 比例选择算子的具体执行过程是:
(1)先计算出群体中所有个体的适应度的总和。
(2)其次计算出每个个体的相对适应度的大小,结果即为各个个体被遗传到下一代群体中的概率。
(3)最后使用模拟赌盘操作(即0到1之间的随机数)来确定各个个体被选中的次数。
\qquad 设群体大小为 M M M,个体 i i i的适应度为 F i F_i Fi,则个体 i i i被选中的概率 P i s P_{is} Pis为:
p i s = F i / ∑ i = 1 M F i ( i = 1 , 2 , ⋯   , M ) p_{i s}=F_{i} / \sum_{i=1}^{M} F_{i} \quad(i=1,2, \cdots, M) pis=Fi/i=1MFi(i=1,2,,M) \qquad 由上式可见,适应度越高的个体被选中的概率也越大,反之,适应度越低的个体被选中的概率也越小。
\qquad 该个体的累计概率为 Q i Q_i Qi,该累计概率和在 [ 0 , 1 ] [0,1] [0,1]之间产生的随机数 r r r比较决定哪个个体参加交配。 Q i = ∑ j = 1 i , j = 1 , 2 , . . . , i Q_i=\sum_{j=1}^{i},j=1,2,...,i Qi=j=1i,j=1,2,...,i。如果 Q i − 1 ≤ r ≤ Q i Q_{i-1}\le r\le Q_{i} Qi1rQi,则选择第i个个体。
例:设规模为5的种群 P = { x 1 , x 2 , x 3 , x 4 , x 5 } P=\{x_1,x_2,x_3,x_4,x_5\} P={x1,x2,x3,x4,x5},
\qquad 个体适应度 F ( x 1 ) = 10 F(x_1)=10 F(x1)=10, F ( x 2 ) = 20 F(x_2)=20 F(x2)=20, F ( x 3 ) = 30 F(x_3)=30 F(x3)=30, F ( x 4 ) = 40 F(x_4)=40 F(x4)=40, F ( x 5 ) = 50 F(x_5)=50 F(x5)=50,
\qquad 个体的选择概率 P s ( s = 1 , 2 , . . . , 5 ) P_s(s=1,2,...,5) Ps(s=1,2,...,5) p 1 = 1 15 , p 2 = 2 15 , p 3 = 3 15 , p 4 = 4 15 , p 5 = 5 15 p_1=\frac {1}{15},p_2=\frac {2}{15},p_3=\frac {3}{15},p_4=\frac {4}{15},p_5=\frac {5}{15} p1=151,p2=152,p3=153,p4=154,p5=155
\qquad 则每个个体的累加概率 Q i Q_i Qi Q 1 = 1 15 , Q 2 = 3 15 , Q 3 = 6 15 , Q 4 = 10 15 , Q 5 = 1 Q_1=\frac {1}{15},Q_2=\frac {3}{15},Q_3=\frac {6}{15},Q_4=\frac {10}{15},Q_5=1 Q1=151,Q2=153,Q3=156,Q4=1510,Q5=1
\qquad 转动轮盘5次,每次选择种群中的一个个体,在 [ 0 , 1 ] [0,1] [0,1]之间的产生5次随机数为: r 1 = 0.19 , r 2 = 0.5 , r 3 = 0.6 , r 4 = 0.8 , r 7 = 0.9 , r_1=0.19,r_2=0.5,r_3=0.6,r_4=0.8,r_7=0.9, r1=0.19,r2=0.5,r3=0.6,r4=0.8,r7=0.9,则新种群为 P = { x 2 , x 4 , x 4 , x 5 , x 5 } P=\{x_2,x_4,x_4,x_5,x_5\} P={x2,x4,x4,x5,x5}
最优保存策略
\qquad 在种群进化过程中,由于交叉、变异的作用,种群产生很多的优秀个体,但由于交叉和变异的随机性,这些优良个体很有可能会被破坏掉,这对遗传算法的运行效率和收敛性产生不利的影响因此,我们可以使用最优保存策略进化模型来进行优胜劣汰的操作,即保留当前群体中适应度高的个体,用它们来替换群体经过交叉、变异等操作后所产生的适应度较低的个体。由于它很容易使得某个局部最优个体不易被淘汰,从而使算法的全局搜索能力不强,所以,该方法宜与其它的一些选择方法配合使用。
\qquad 最优保存策略进化模型的具体操作过程为:
\qquad (1)找出当前群体中适应度最高的个体和适应度最低的个体。
\qquad (2)若当前群体中最佳的适应度比总的迄今为止的最好的个体的适应度还要高,则以当前群体中的最佳个体作为新的最好个体。
\qquad (3)用最好的个体替换掉当前群体中适应度最差的个体。
确定式采样选择
\qquad 确定式采样选择方法的基本思想是按照一种确定的方式来进行选择操作。其具体操作过程是:
\qquad (1)计算群体中各个个体在下一代群体中期望生存数目 N i N_i Ni: N i = M ∗ F i / ∑ i = 1 M ( i = 1 , 2 , . . . , M ) N_i={M*F_i} /\sum_{i=1}^M(i=1,2,...,M) Ni=MFi/i=1M(i=1,2,...,M),式中 M M M为群体规模数, F i 为适应度值 F_i为适应度值 Fi为适应度值。(数学期望公式)
\qquad (2)用 N i N_i Ni的整数部分 ⌊ N i ⌋ \lfloor N_{i}\rfloor Ni确定各个对应个体在下一代群体中的生存数目。其中 ⌊ x ⌋ \lfloor x\rfloor x表示取不大于x的最大整数。由该步可确定出下一代群体中的 ∑ i = 1 M ⌊ N i ⌋ \sum_{i=1}^M{\lfloor N_{i}\rfloor} i=1MNi个个体。并根据期望将个体进行选取至下一代。
\qquad (3)按照 N i N_i Ni的小数部分对个体进行降序排序,顺序取前 M − ∑ i = 1 M ⌊ N i ⌋ M-\sum_{i=1}^M{\lfloor N_{i}\rfloor} Mi=1MNi个个体加入到下一代群体中。其中 ⌊ N i ⌋ ≤ M \lfloor N_{i}\rfloor\le M NiM,小数部分倒序取前 M − ∑ i = 1 M ⌊ N i ⌋ M-\sum_{i=1}^M{\lfloor N_{i}\rfloor} Mi=1MNi可保证总体数目为M。
\qquad 这种选择操作方法可保证适应度较大的一些个体一定能够被保留在下一代群体中。
无回放式随机选择
\qquad 这种选择操作方法也叫做期望值选择法,它的基本思想是根据每个个体在下一代群体中的生存期望值来进行随机选择运算。具体操作过程为:
\qquad (1)计算群体中每个个体在下一代群体中的生存期望数目 N i N_i Ni N i = M ∗ F i / ∑ i = 1 M ( i = 1 , 2 , . . . , M ) N_i={M*F_i} /\sum_{i=1}^M(i=1,2,...,M) Ni=MFi/i=1M(i=1,2,...,M)
\qquad (2)若某一个体被选中参与交叉运算,则它在下一代中的生存期望减 0.5 0.5 0.5,若某一个体未被选中参与交叉运算,则它在下一代的生存期望数目减去 1.0 1.0 1.0
\qquad (3)随着选择过程的进行,若某一个体的生存期望数目小于 0 0 0时,则该个体就不再有机会被选中。
\qquad 这种选择操作方法能够降低一些选择误差。
无回放余数随机选择
\qquad 操作过程为:
\qquad (1)计算群体中每个个体在下一代群体中的生存期望数目 N i N_i Ni N i = M ∗ F i / ∑ i = 1 M ( i = 1 , 2 , . . . , M ) N_i={M*F_i} /\sum_{i=1}^M(i=1,2,...,M) Ni=MFi/i=1M(i=1,2,...,M)
\qquad (2)取 N i N_i Ni的整数部分 ⌊ N i ⌋ \lfloor N_{i}\rfloor Ni为对应个体在下一代群体中的生存数目。这样公可确定出下一代 M M M个群体中的 ∑ i = 1 M ⌊ N i ⌋ \sum_{i=1}^M{\lfloor N_{i}\rfloor} i=1MNi个个体。
\qquad (3)以 F i − ⌊ N i ⌋ ⋅ ∑ i = 1 M F i / M \left.F_{i}-\lfloor N_{i}\right\rfloor \cdot \sum_{i=1}^{M} F_{i} / M FiNii=1MFi/M为各个个体的新的适应度,用比例选择方法(轮盘赌选择法)来随机确定下一代群体中还未确定的 M − ∑ i = 1 M ⌊ N i ⌋ M-\sum_{i=1}^M{\lfloor N_{i}\rfloor} Mi=1MNi个个体。
\qquad 这种选择操作方法可确保适应度比平均适应度应度大一些的一些个体一定能够被遗传到下一代群体中,选择误差比较小。
排序选择
\qquad 排序选择方法的主要着眼点是个体适应度之间的大小关系,对个体适应度是否取正值或负值以及个体适应度之间的数值差异程度并无特别要求。
\qquad 排序选择方法的主要思想是:对群体中的所有个体按其适应度大小进行排序,基于这个排序来分配各个个体被选中的概率。
\qquad 具体操作过程为:
\qquad (1)对群体中的所有个体按其适应度大小进行降序排序。
\qquad (2)根据具体求解问题,设计概率分配表,将概率值按上述排列次序进行分配给各个个体。
\qquad (3)采用轮盘赌方法进行选择产生下一代群体。
随机联赛选择
\qquad 随机联赛选择也是一种基于个体适应度之间的大小关系的选择方法。
\qquad 基本思想:每次选取几个个体之中适应度最高的一个个体遗传到下一代群体中。在联赛选择中,只有个体适应度之间的大小比较运算,而无个体适应度之间的算术运算,所以他对个体适应度是取证还是取负无特别要求。
\qquad 联赛选择中,每次进行适应度大小比较的个体数目称为联赛规模。
\qquad 操作过程为:
(1)从群体中随机选取 N N N个个体进行适应度大小的比较,将其中适应度高的个体遗传到下一代群体中。
(2)将上述过程重复 M M M次,可产生新一代群体的 M M M个个体。

参考书籍:遗传算法原理及应用(国防工业出版社)

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、目标与适应函数的简单对比 目标函数就是你希望得到的优化结果,比如函数最大值或者最小值。而适应度函数是为了计算个体的适配值。 适配值是非负的,而且要求适配值越大则该个体越优越。而目标函数则有正有负,它们之间关系多种多样,比如求最小值时,目标函数最小,则适配值越大,求最大值时目标值越大,适配值越大。 目标函数Object function和适应度函数Fitness function是不一样的概念,有时为了方便后续计算在适应度函数中做些 拉伸,取反,什么的。 目标函数是你求解的优化变量的函数形式;而适应度函数是你求解的优化变量的一种度量,是一种更为广义的概念。可以这么理解,目标函数只是适应度函数的一种,也可以有其他的表达形式。 对于目标函数,为了得到好的搜索性能,经过一些变化就可以得到适应度函数。另外就是这些变化可以不唯一的。 二、适应度函数 适应度函数跟 想要实现什么功能有关,把粒子对应成你问题的候选解,适应度函数用来评价给出的这个候选解(粒子)的好坏(好坏的评价标准需要一个量化指标,也就是,粒子的适应度值) 适应度用于评价个体的优劣程度,适应度越大个体越好,反之适应度越小则个体越差;根据适应度的大小对个体进行选择,以保证适应性能好的个体有更多的机会繁殖后代,使优良特性得以遗传。因此,遗传算法要求适应度函数值必须是非负数,而在许多实际问题中,求解的目标通常是费用最小,而不是效益最大,因此需要将求最小的目标根据适应度函数非负原则转换为求最大目标的形式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值