改进遗传算法
顺序编码的合法性修复策略主要包括: ➢ 交叉修复策略
➢ 部分映射交叉 ➢ 顺序交叉 ➢ 循环交叉 ➢ 变异修复策略 ➢ 换位变异 ➢ 移位变异
➢ 交叉修复策略之部分映射交叉
部分映射交叉主要用于解决双切点交叉引起的非法性。 可以解决子代的基因重复和部分基因的丢失问题,保证基 因的多样性。 其主要步骤为: ① 选则切点X,Y ② 交换中间部分 ③ 确定映射关系 ④ 将未交换部分按映射关系恢复合法性
遗传算法改进方法
基于以上介绍可知,遗传算法通常需要解决以下问题: 确定编码方案,适应度函数标定,选择遗传操作方式和相 关控制参数,停止准则确定等,相应地,为改进简单遗传 算法的实际计算性能,很多的改进工作也是从参数编码、 初始种群设定、适应度函数标定、遗传操作算子、控制参 数的选择以及遗传算法的结构等方面提出的。基于不同的 问题,遗传算法可以有不同的改进和变形,这也是遗传算 法内容丰富和作用强大的原因。
来染色体的基因顺序,直到列完 ④ 划掉各自交换部分的基因 ⑤ 按划掉后的相对顺序从Y后开始补齐原来的染色体的
基因
➢ 交叉修复策略之循环交叉
循环交叉的基本思想是子串位置上的值必须与父母相同 位置上的值相一致。简单来说,就是父母代在进行交叉运 算时按某种方式交换某些相同位置的基因,其余位置的基 因不变,组成子代。这种交叉方式适合于解决指派问题。 在满足特定指派要求条件下,使指派方案总体效果最佳。 其修复策略较麻烦,需要时可以查找文献,大家需要记住
顺序编码:
X=(2 3 1 5 4 7 6)
对于有7个城市的旅行商问题,城市序号为{1,2,…….,7},
则上述编码可以表示一个行走的路线。该编码方法具有广泛的
适应范围,如指派问题、旅行商问题和单机调度等问题。
• 2.实数编码
对于染色体X=(x1,x2,…,xi,…,xn),1≤i≤nx,i R ,则称该
则可以产生的两个后代是: C1=aP1+(1-a)P2 C2=(1-a)P1+aP2
这里,a要保证大于0且小于1. 这样做的不好处是导致种群的基因向中间汇聚,导致基
因的分散性不好,逐步丢失很多基因。这是与基因的多样 性相违背。
4.实数编码的合法性修复之变异
不同于二进制编码,实数编码的变异可以是任意的,通常 有如下两种变异方法: ➢ 位值变异 ➢ 向梯度方向变异 位值变异是随机选取染色体上某一位基因,在其上加上一 个变异补补偿D,通常便已步长是按一定规律产生的呈一定 分布规律的随机数
染色体为实数编码。实数编码具有精度高、便于大空间搜 索、运算简单的特点,特别适合于实优化问题,但是反应 不出基因的特征。
• 3.整数编码
对于染色体X=(x1,x2,…,xi,…,xn),1≤i≤ni, ni 为第i位基因 的最大取值,则称染色体为整数编码。显然不同位置上的 基因取值可以不同。整数编码可以适应于新产品投入、时 间优化和伙伴挑选等问题。
的是:循环交叉是用来解决指派这一类的问题的
2.变异修复策略
简单的二进制变异时候只需要把0变成1,1变成0, 而顺序编码的变异策略不能这样进行,一般由下面两种策略: ➢ 换位变异
➢ 换位变异是随机在染色体上选则两个基因,交换它们 的基因值
➢ 移位变异 ➢ 移位变异是任意选则一个基因,将其移到最前面。
遗传算法的改进
遗传算法存在的问题
1. 适应度函数标定方式多种多样,没有一个简洁通用的方法 2. 遗传算法的早熟现象(即很快收敛到局部最优解而不是全 局最优解)是迄今为止最难处理的关键问题。 3. 快要接近最优解时在最优解附近左右摆动,收敛较慢。开 始时进化速度很快,甚至以指数级进化速度朝着最优解方向 前进,但不久以后,进化速度就会变慢,临近全局最优解时 则可能是几百代、上千代才向目标逼近一小步,有时甚至停 滞不前,出现早熟收敛。
3.适值函数的标定
1.标定的目的
① 将目标函数映射为适值函数,从而能够直接将适值函 数与群体中的个体优劣相联系。 ② 对目标函数进来标定,来调节选择压力。 2.选择压力的概念
2.不合法编码的修复
对于普通的二进制编码,通常的交叉和变异不会改变 编码的合法性,但是对于顺序编码、实数编码,会造成编码 的不合法或者超出可行域,因此必须对不合法的编码进行处 理,通常的处理手段为拒绝或者修复。下面介绍修复的方法。
➢ 顺序编码的合法性修复 ➢ 实数编码的合法性修复
பைடு நூலகம்
1. 顺序编码的修复
3.实数编码的合法性修复之凸组合交叉
实数编码的交叉操作(单切点交叉、双切点交叉)通常不 会改变其合法性问题。但是,有时会导致解码后的值超出可 行域。针对这样的问题,产生了凸组合交叉。简单来说,就 是直接引用凸集理论,将父母两个染色体对应的看成两个点, 其子代只能位于这两个点的连线上。 如:有双亲
P1=(x1,x2,x3,···,xn) P2=(y1,y2,x3,···,yn)
➢ 交叉修复策略之顺序交叉
• 顺序交叉是部分映射交叉的变形,相当于使用了不同的 映射关系。其可以较好的保留相邻关系、先后关系,但 是不能保留位值特征,可以用来解决旅行商之类的拓扑 问题。
旅行商问题 • 在寻求单一旅行者由起点出发,通过所有给定的需 求点之后,最后再回到原点的最小路径成本
顺序交叉的步骤如下: ① 选则切点X,Y ② 交换中间部分 ③ 从第二个切点Y后的第一个基因开始分别列出两个原
向梯度方向的变异较好的考虑了问题本身的性质,效率比 较高 简单来说,就是把某个染色体看成一个具有n个分量的点, 然后求目标函数在这个点处的梯度 ➢ 对于最大化问题,就是染色体本身加上这个点处的梯度
乘以一个随机数(0到1之间) ➢ 对于最小化问题,就是染色体本身加上这个点处的负梯
度乘以一个随机数(0到1之间)
改进的遗传算法
➢ 编码方法的选择 ➢ 编码的修复 ➢ 适值函数的标定 ➢ 选择策略 ➢ 停止准则的改进
人工智能及其应用
4
1.编码方法
这里来介绍除了0-1编码以为的其他三种重要的编码方法
• 1.顺序编码
顺序编码是用1到n的自然数来编码,此种编码不允许重
复,又称为自然数编码,例如下面是一个染色体长度为n=7的