智能优化算法:遗传算法

1. 引言

遗传算法(Genetic Algorithm, GA)是模拟生物在自然环境中的遗传和进化的过程而形成的自适应全局优化搜索算法。它借用了生物遗传学的观点,通过自然选择、遗传和变异等作用机制,实现各个个体适应性的提高。

1.1 生物学基础

生物遗传和进化的规律:

  • 生物的所有遗传信息都包含在其染色体中,染色体决定了生物的性状。染色体是由基因及其有规律的排列所构成的。
  • 生物的繁殖过程是由其基因的复制过程来完成的。同源染色体的交叉变异会产生新的物种,使生物呈现新的性状。
  • 对环境适应能力强的基因或染色体,比适应能力差的基因或染色体有更多的机会遗传到下一代。

1.2 基本概念

遗传学术语 遗传算法术语
群体 可行解集
个体 可行解
染色体 可行解的编码
基因 可行解编码的分量
基因形式 遗传编码
应适度 评价函数值
选择 选择操作
交叉 交叉操作
变异 变异操作

1.2.1 群体和个体

  • 个体就是模拟生物个体而对问题中的对象(一般就是问题的解)的一种称呼,一个个体也就是搜索空间中的一个点。
  • 种群(population)就是模拟生物种群而由若干个体组成的群体, 它一般是整个搜索空间的一个很小的子集。

1.2.2 染色体和基因

  • 染色体(chromosome)就是问题中个体的某种字符串形式的编码表示。
  • 字符串中的字符也就称为基因(gene)。

1.2.3 遗传编码

二进制编码方法是遗传算法中最常用的一种编码方法,它使用的编码符号集是由二进制符号 0 0 0 1 1 1所组成的二值符号集 { 0 , 1 } \{0,1\} { 0,1},它所构成的个体基因型是一个二进制编码符号串。

假设某一参数的取值范围是 [ u m i n , u m a x ] [u_{\rm{min}},u_{\rm{max}}] [umin,umax],用长度为 L L L的二进制编码符号来表示该参数。则它总共能够产生 2 L 2^L 2L种不同的编码,参数编码时的对应关系如下:
000 ⋯ 000 = 0 u min ⁡ 000 ⋯ 001 = 1 u min ⁡ + δ ⋯ ⋯ 111 ⋯ 111 = 2 λ − 1 u max ⁡ \begin{aligned} & 000\cdots 000 = 0 & u_{\min} \\ & 000\cdots 001 = 1 & u_{\min}+\delta \\ & \cdots & \cdots \\ & 111\cdots 111 = 2^\lambda-1 & u_{\max} \\ \end{aligned} 000000=0000001=1111111=2λ1uminumin+δumax

二进制编码的精度为:
δ = u max ⁡ − u min ⁡ 2 λ − 1 \delta=\dfrac{u_{\max}-u_{\min}}{2^\lambda -1} δ=2λ1umaxumin

假设某一个体的编码是: x : b λ b λ − 1 b λ − 2 ⋯ b 2 b 1 x:b_\lambda b_{\lambda-1} b_{\lambda-2} \cdots b_{2}b_{1} x:bλbλ1bλ2b2b1,则对应的解码公式为:
x = u min ⁡ + ( ∑ i = 1 λ b ⋅ 2 i − 1 ) δ x = u_{\min}+\left(\sum_{i=1}^{\lambda}{b\cdot 2^{i-1}}\right)\delta x=umin+(i=1λb2i1)δ

1.3 遗传操作

1.3.1 选择操作

选择操作,是从旧的种群中选择适应度高的染色体,放入匹配集(缓冲区),为以后染色体交换、变异,产生新的染色体作准备。

适应度比例法,也叫作轮盘赌、转轮法,按各染色体适应度大小比例来决定其被选择数目的多少。第 i i i个染色体被选的概率为:
P c i = f ( x i ) ∑ j = 1 N p f ( x j ) P_{ci}=\dfrac{f\left(x_i\right)}{\sum_{j=1}^{N_p}{f\left(x_j\right)}} Pci=j=1Npf(xj)f(xi)式中, x i x_i xi为种群中的第 i i i个染色体; f ( x ) f\left(x\right) f(x)为染色体的适应度函数; N p N_p Np为种群大小。

1.3.2 交叉操作

交叉操作,是指对两个相互配对的染色体依据交叉概率 P c P_c Pc按某种方式相互交换其部分基因,从而形成两个新的个体。

具体方法: 随机选择二个染色体(双亲染色体),随机指定一点或多点, ,进行交换,可得二个新的染色体(子辈染色体)。

双亲染色体如下, ∣ {\color{red}|} 为交换点,
A 11010 ∣ 110 B 01011 ∣ 011

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦贤同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值