基础上进行优化调整。
3。4 适应度函数
遗传算法在进化搜索中不使用外界信息,而是依据作为评判个体优秀程度的适应度 值对整个种群进行搜索,因此需要建立适当的适应度函数对适应度值进行计算。适应度 函数的建立是设计遗传算法过程中至关重要的环节,适应度函数直接对遗传算法的收敛 速度造成影响,甚至决定算法是否能找到最优解。
3。4。1 适应度函数的作用
如果我们没有设计出正确适合的适应度函数,有可能会导致以下两种问题的出现:
①在遗传进化的初期,由于初始种群是通过随机获得的,有可能产生的一些个体刚 开始就拥有了特别高的适应度,若按照比例进行选择操作,这些适应度超高的个体因为 竞争力过于突出而导致其他个体没有被选择的可能,也就是这样的个体控制了选择过 程,使得种群中同样的个体数量泛滥,影响算法的全局优化性能,难以找到其他的解。
②在遗传进化的后期,也就是算法接近收敛的时候,此时种群中的个体都普遍具有 较高的适应度,难以用适应度函数对其进行更加优化的筛选,算法失去了进一步优化的 潜能,这样可能导致收敛结果是某个局部最优解而不是全局最优解。
我们也将这类问题称为遗传算法的欺骗问题。由此可见适应度函数的设计对遗传算 法起着至关重要的作用。
3。4。2 适应度函数的设计
适应度函数的设计需要满足以下条件[14]:
(1)单值、连续、非负、最大化:这是适应度函数的最基本要求,这与用适应度
值表示物种对外界环境的适应程度的思想相匹配。
(2)合理、一致性:因为适应度的值要能准确反映物种对外界的适应程度,如果 面对复杂问题时,需要很多变量及参数对其进行综合评价,会很难对其进行准确度量。
(3)计算量小:我们尽量避免适应度函数设计的复杂化,以便于减少计算时间, 降低计算的工作量。
(4)通用性强:对于某类问题的求解,尽量设计通用的适应度函数,方便以后直 接调用。
基于以上几个条件,以及对背包问题的考虑,我们将背包中所放入物品的总价值作
为适应度函数的良好选择,即 f。但是这不是最后的
适应度函数,因为约束问题的存在,我们会在后面继续讨论关于适应度函数的设计。
3。5 选择算子的设计
在背包问题中,在产生出一定规格的初始种群后,将对初始种群中的个体进行适应 度计算。我们采用轮盘赌的选择方式,假设一个被分成 n 个扇区的轮盘,每个扇区所占 轮盘大小是按照适应度按比例划分的,因此每一个分区代表一个个体。利用系统随机产 生 n 个[0,1]之间的数,以此模拟轮盘转动的落点。当落点落在某一扇形区域中时,表示 该扇区代表的个体被选中,然后进行 n 次选择(n=种群大小)。扇区被选中的概率与扇 区所占圆盘的面积成正比,也就代表着适应度越高的个体越有可能被选中,相反适应度 低的个体将面临被淘汰的危险。为了确保适应度较高的个体能被保留,在解决背包问题 时,我们可以将前一代群体按照适应度进行排序,保留适应度最高的一个或两个个体, 直接进入到下一步遗传环节。论文网
3。6 交叉算子的设计
交叉又被称作基因重组,是重要的遗传操作,是生物能够进化的根本原因。交叉的 方式有很多种,可根据不同的问题情况来决定,我们选择使用单点交叉的方法。首先按 照交叉概率从种群中随机选择两个个体,然后再随机选定基因编码中的一个位置作为交 叉点,最后将两组基因码的进行交叉重组,形成了两条新的基因编码,这就产生了两个 新的个体。这样的做法就是模拟自然界中两个生物体有性生殖的过程。在设计交叉操作 的程序时,每完成一对个体的交叉,就将该对个体进行标记,避免某一个体在一轮交叉