遗传算法的一种改进实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
遗传算法的一种改进实现
向婷,潘大志,陈友军,杨爽
(西华师范大学数学与信息学院,四川南充 637009)
摘要:遗传算法是模拟生物界的遗传和进化过程而形成的一种自适应全局优化搜索算法.针对基本遗传算法的缺点,从选择、交叉和变异三个算子出发,采取替换部分最差个体、引入小生境思想和集中因子等方式进行处理,提出一种改进的遗传算法(IGA).通过测试函数Rastrigin确定IGA中的相关参数,并与基本遗传算法比较,体现IGA 的优越性和可行性.
关键词:遗传算法;小生境;集中因子;自适应
中图分类号:TP18 文献标识码:A
1 引言
遗传算法最早由美国密执安大学的Holland教授提出[1],后由De. Jong进行了大量的纯数值函数优化计算实验[2],80年代由Goldberg归纳形成基本框架[3].目前,遗传算法由于其运算简单和解决问题的有效能力而被运用到了众多领域,主要体现在优化问题、自动控制、机器人智能控制等领域.
但是,基本遗传算法(GA)存在易早熟、收敛速度慢等缺点.人们也提出了许多改进措施,主要着眼于编码表示、适应度函数、选择策略、控制参数、遗传算子、算法融合等方面.如JaehunLee[4]等提出了染色体矩阵编码方法,实现了遗传算法与贝叶斯网络两种算法的集成和应用;文献[5]中提到的重复串的适应度处理通过选择策略的改变调控并维持种群多样性等.马坚[6]提出基于改进遗传算法的彻底进化神经网络算法,实现对电力变压器故障的快速且准确的判断.
目前,遗传算子的改进是遗传算法改进的焦点与突破口.如文献[7]中的交叉算子将种群逐步向极值点引导,并将惩罚策略与修复策略相结合提出修复算子,提高了算法搜索效率以及对非线性约束的处理能力;唐国新等[8]优化设计了交叉算子和变异算子,并引入了自定义的插入和删除两种操作提高算法的进化效率,已成功应用于机器人路径规划中;Fatemeh Vafaee等人[9]提出的利用差分进化实现遗传算子自适应选择的方法卓有成效,推动了自适应选择的方向发展.本文从遗传算法的三个基本算子出发,采取替换部分最差个体、引入小生境思想和集中因子等方式实现改进,改进算法的收敛速度和稳定性都大为提高,其优势在高维的优化问题中尤为明显.
2 基本遗传算法
遗传算法是建立在达尔文(Darwin)的生物进化论和孟德尔(Mendel)的遗传学说基础上的一种自适应全局优化搜索算法.遗传算法的运算对象是由多个个体组成的集合,称为群体.基本遗传算法中包含了选择、交叉和变异三种算子,其运算过程是运用三种算子的反复迭代过程,最终得到群体的优良个体,它所对应的表现型将达到或者接近于所求问题的最优解.
基本遗传算法的主要步骤如下:
step1. 根据待解问题的参数集进行编码;
step2. 初始化群体;
step3. 计算群体中每个个体的适应度值;
step4. 按照由个体的适应度值所决定的某个规则选择将进入下一代的个体;
收稿日期:2014-06-18
基金项目:四川省教育厅自然科学基金( 14ZA0127,14ZA0134); 西华师范大学博士启动基金(12B022)
作者简介:向婷(1991—),女,四川巴中人,西华师范大学数学与信息学院硕士研究生,主要从事智能计算、数值计算研究
通讯作者:潘大志(1974—),男,四川三台人,西华师范大学数学与信息学院教授,硕士生导师,主要从事智能计算,算法设计研究
step5. 按交叉概率而进行交叉操作; step6. 按变异概率而进行变异操作;
step7. 如果没有满足某种终止条件,则转到第step3,否则进入step8; step8. 输出种群中适应度值最优的染色体作为问题的满意解或最优解.
3 改进的遗传算法
虽然遗传算法被运用到众多领域,理论上也证明了算法能够从概率意义上以随机的方式寻求问题的最优解,但是在遗传算法的应用中仍存在着缺点:易早熟收敛,搜索性能不高,不易达到全局收敛;时间复杂度比较高,搜索的效率比较低.而局部最优和收敛速度往往相互矛盾.为了协调这一矛盾,提高遗传算法的搜索效率的同时保证得到全局最优解,本文从三个基本算子出发,提出了改进的遗传算法(IGA ). 3.1 选择算子的改进
选择操作在实际的运算初期,对所有个体进行赌盘选择会让算法需要很长时间才能收敛到最优解,影响运算效率.针对这一缺点,将群体中适应度最差的部分个体用适应度较好的个体替换,提高种群的整体适应度.改进的选择算子如下:
Step1. 利用公式(1)计算出个体的赌盘概率,按概率大小对种群中的全部个体进行升序排列,得到最小概率
min p 和最大概率max p ;
∑==M
k k i i F F p 1/ (1)
Step2. 把概率在min p ~)(min max min p p p -+α范围内的N 个低概率个体丢掉,从概率在)(min max min p p p -+α~max p 范围的个体中随机选择N 个个体加入种群,
保证种群大小为M 不变. Step3. 对种群进行赌盘选择.
其中i F 为第i 个个体的适应度值,α为替换因子.该方法可使每一代中的优良个体得到保护,不良个体被淘汰,以期通过交叉等操作产生更优的个体,让算法的寻优速度得以提高. 3.2 交叉算子的改进
基本遗传算法中关于交叉算子的操作是非常简陋的,且交叉概率为一个恒定不变的数,不会考虑到个体的相似度[10].这种交叉一方面会使部分相似度较高的个体进行交叉,产生的子代和父代差别很小,使得交叉过程作用不大;另一方面在运算后期,恒定的c p 很容易将优良基因模式破坏,使算法不能够收敛或者是收敛速度明显变慢.本文效仿自识别交叉算子[11],利用小生境的思想,得到了改进的交叉算子,其步骤如下:
Step1. 计算交叉个体i X 和j X 的距离ij s ; Step2. 如果D L s ij
⨯≤,转step4,否则按公式(2)计算交叉概率:
T
t
P P P P c c c c ⋅--=)(min 00 (2) Step3. 根据c P 进行交叉操作;