遗传算法(三)——适应度与选择

适应度(fitness)

含义:
个体的适应度(fitness)指的是个体在种群生存的优势程度度量,用于区分个体的“好与坏”。适应度使用适应度函数(fitness function)来进行计算。适应度函数也叫评价函数,主要是通过个体特征从而判断个体的适应度。

评价一个个体的适应度的一般过程:

  1. 对个体编码串进行解码处理后,可得到个体的表现型。
  2. 由个体的表现型可计算出对应个体的目标函数值。
  3. 根据最优化问题的类型,由目标函数值按一定的转换规则求出个体的适应度。

设计要求:
单值、连续、非负、最大化、合理、一致性、计算量尽可能小、通用新尽可能强等。

注:下面例子都是针对单目标优化问题,并且三种设计都是 F i t ( x ) Fit(x) Fit(x)越大证明个体越好

举例1:

  • 对于 m a x f ( x ) maxf(x) maxf(x),取 F i t ( x ) = f ( x ) Fit(x)=f(x) Fit(x)=f(x)
  • 对于 m i n f ( x ) minf(x) minf(x),取 F i t ( x ) = − f ( x ) Fit(x)=-f(x) Fit(x)=f(x)

举例2:

  • 对于 m a x f ( x ) maxf(x) maxf(x)
    F i t ( x ) = f ( x ) − f m i n Fit(x)=f(x)-f_{min} Fit(x)=f(x)fmin,其中, f m i n f_{min} fmin f ( x ) f(x) f(x)的下界(最小值)
  • 对于 m i n f ( x ) minf(x) minf(x)
    F i t ( x ) = f m a x − f ( x ) Fit(x)=f_{max}-f(x) Fit(x)=fmaxf(x),其中, f m a x f_{max} fmax f ( x ) f(x) f(x)的上界(最大值)

进一步地,如果提高效率,当 F i t ( x ) < 0 Fit(x)<0 Fit(x)<0时,令 F i t ( x ) = 0 Fit(x)=0 Fit(x)=0

举例3:

  • 对于 m a x f ( x ) maxf(x) maxf(x)
    F i t ( x ) = 1 1 + c + f ( x ) Fit(x)=\frac{1}{1+c+f(x)} Fit(x)=1+c+f(x)1,其中, c ≥ 0 c≥0 c0 c + f ( x ) ≥ 0 c+f(x)≥0 c+f(x)0
  • 对于 m i n f ( x ) minf(x) minf(x)
    F i t ( x ) = 1 1 + c − f ( x ) Fit(x)=\frac{1}{1+c-f(x)} Fit(x)=1+cf(x)1,其中, c ≥ 0 c≥0 c0 c − f ( x ) ≥ 0 c-f(x)≥0 cf(x)0

这个方法与举例2有点类似,但是可以通过 c c c F i t ( x ) Fit(x) Fit(x)的范围进行控制。

适应度函数的尺度变换:
为了防止适应度计算的过程中适应度的值分布不合理或者难以体现个体的特性,可以进行适应度的尺度变换调整,变换的方法包括线性变换、幂函数变换、指数变换(类似于模拟退火)、Goldberg线性拉伸变换。
具体的变换过程推荐看这个文档

重要性:
适应度函数的设计需要得当,不然很容易使得遗传算法出现欺骗现象(早熟现象,陷入局部),具体表现在:

  • 进化初期,个别超常适应度的个体直接控制了选择的过程;
  • 进化后期,个体差异太小,多样性受到破坏,陷入局部峰值。

选择(Select)

选择操作就是用来确定如何从父代群体中按某种方法选取哪些个体作为父母,然后进行交配(重组/交叉)操作,生成新的个体的过程。

在自然界中,一个种群中并不是所有个体都能“有幸地”成为父母然后顺利“传宗接代”的,足够强大的个体会有更高的概率生成下一代。因此,选择其实也是存在概率的,选择概率由该个体的适应度来决定。

个体选择概率的两种分配方法:

  • 按比例的适应度选择(proportional fitness assignment):完全由适应度大小来决定选择概率:

某个个体 i i i,其适应度为 f i f_i fi,则其被选中的概率 P i P_i Pi为:
P i = f i ∑ i = 1 n f i P_i=\frac{f_i}{\sum_{i=1}^n f_i} Pi=i=1nfifi

  • 按排序的适应度选择(Rank-based fitness assignment):选择过程考虑了个体在种群中的排序位置,意思是如果按上面的三种例子所示的计算方法得到的适应度虽然值很低,但是你在种群中排前五,证明这个个体还是很好的。

线性排序(by Baker):
P i = 1 μ [ η m a x − ( η m a x − η m i n ) ⋅ i − 1 μ − 1 ] , 1 ≤ η m a x ≤ 2 , η m i n = 2 − η m a x P_i=\frac{1}{\mu}[\eta_{max}-(\eta_{max}-\eta_{min})\cdot \frac{i-1}{\mu-1}], 1\leq\eta_{max}\leq2, \eta_{min}=2-\eta_{max} Pi=μ1[ηmax(ηmaxηmin)μ1i1],1ηmax2,ηmin=2ηmax
其中, η \eta η为种群大小, i i i为个体序号, η m a x \eta_{max} ηmax代表选择压力
非线性排序(by Michalewicz):
P i = c ( 1 − c ) i − 1 P_i=c(1-c)^{i-1} Pi=c(1c)i1
其中, i i i为个体序号, c c c为排序第一的个体的选择概率

几个概念:

  • 选择压力(selection pressure):最佳个体选中的概率与平均个体选中概率的比值
  • 偏差(bias):个体正规化适应度与其期望再生概率的绝对差值
  • 个体扩展(spread):单个个体子代个数的范围
  • 多样化损失(loss of diversity):选择阶段未选择的个体数目比例
  • 选择强度(selection intensity):将正规高斯分布应用于选择方法,期望平均适应度
  • 选择方差(selection variance):将正规高斯分布应用于选择方法,期望种群适应度的方差

常用的选择方法:

  1. 轮盘赌选择法(roulette wheel selection)
    出发点是适应度值越好的个体被选择的概率越大。
    如,在求解最大化问题时,可以直接用适应度/总适应度来计算个体的选择概率,然后直接通过概率对个体进行选择。如果是求解最小化问题,那么就要对适应度函数进行转换,转化为最大化问题。
    如下图所示,可以在选择时生成一个[0,1]区间内的随机数,若该随机数小于或等于个体的累积概率(累计概率就是个体列表该个体前面的所有个体概率之和)且大于个体1的累积概率,选择个体进入子代种群。
    在这里插入图片描述
  2. 随机遍历抽样法(stochastic universal sampling)
    像轮盘赌一样计算选择概率,只是在随机遍历选择法中等距离的选择体,设npoint为需要选择的个体数目,等距离的选择个体,选择指针的距离是1/npoint,第一个指针的位置由[0,1/npoint]的均匀随机数决定。
    在这里插入图片描述
  3. 锦标赛选择法(tournament selection)
    锦标赛方法选择策略每次从种群中取出一定数量个体(成为竞赛规模),然后选择其中最好的一个进入子代种群。重复该操作,直到新的种群规模达到原来的种群规模。

另外提一提

一般来说,锦标赛选择策略会比轮盘赌选择策略有更好的通用性,而且性能更优。

当然还有一些其他的选择策略,比如随机竞争选择(Stochastic Tournament)、无妨会随机选择/期望值选择(Excepted Value Selection)、确定式选择、局部选择法(Local Selection)、截断选择法(Truncation Selection)等等。

基本遗传算法达到收敛的代数(number of generations)和选择强度(selection intensity)成反比,选择强度越高,那就收敛越慢,一般来说较高的选择强度是很好的选择方法,但是太高又会导致收敛过快(早熟,陷入局部最优)。

遗传算法中,目标函数是指需要优化的问题的数学表达式或计算方法,它描述了问题的目标和约束条件。目标函数的值用来衡量个体的优劣,越小或越大表示个体越好。然而,有时候目标函数可能不适合直接作为适应度函数,因为个体的适应度可能不直接与目标函数的值成正比。\[1\] 适应度函数是用来评估个体在解决问题中的适应程度的函数。它将目标函数的值转化为适应度值,用来指导遗传算法选择和进化过程。适应度函数的设计可以根据问题的特点进行变换,常见的变换方法包括线性变换、动态线性变换、幂律变换、对数变换等。这些变换可以调整个体之间适应度的差异,以增强选择的效果。例如,对数变换可以将适应度值进行“压大扩小”,使得适应度较小的个体仍有一定的机会被选择。\[1\] 在遗传算法中,选择操作通常使用轮盘赌算法来确定个体被选中的概率。轮盘赌算法通过产生随机数,并根据个体的适应度值来确定落在哪个个体上的概率。这样可以保证适应度较高的个体被选中的概率较大,但并不是直接选择适应度最大的个体。这是因为如果只选择适应度最大的个体,可能会导致选择功能被弱化,个体之间的差异不明显。通过轮盘赌算法,可以增加个体之间的差异,提高选择的多样性。\[1\] 总结起来,目标函数是描述问题目标和约束条件的数学表达式,适应度函数是将目标函数的值转化为适应度值的函数,用来评估个体在解决问题中的适应程度。适应度函数的设计可以根据问题的特点进行变换,以增强选择的效果。选择操作通常使用轮盘赌算法来确定个体被选中的概率,以增加个体之间的差异。\[1\] #### 引用[.reference_title] - *1* [遗传算法(2):对适应度函数的改进](https://blog.csdn.net/qcyfred/article/details/76731706)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [遗传算法适应度函数的计算原理](https://blog.csdn.net/qq_38848233/article/details/120956201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [遗传算法适应度计算函数——ranking](https://blog.csdn.net/Lc1171137119/article/details/125895456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值