简要介绍:

CHC算法是Eshelman于1991年提出的一种改进的遗传算法的缩称,第一个C代表跨世代精英选择(Cross generational elitist selection)策略, H代表异物种重组(Heterogeneous recom-bination),第二个C代表大变异(Cataclysmic mutation)。CHC算法与基本遗传算法SGA不同点在于:SGA的遗传操作比较单纯,简单地实现并行处理;而CHC算法牺牲这种单纯性,换取遗传操作的较好效果,并强调优良个体的保留。

1.选择
通常,遗传算法是依据个体的适应度复制个体完成选择操作的,而在CHC算法中,上世代种群与通过新的交叉方法产生的个体群混合起来,从中按一定概率选择较优的个体。这一策略称为跨世代精英选择。其明显的特征表现在:
(1)健壮性。由于这一选择策略,即使当交叉操作产生较劣个体偏多时,由于原种群大多数个体残留,不会引起个体的评价值降低。
(2)遗传多样性。保持由于大个体群操作,可以更好地保持进化过程中的遗传多样性。
(3)排序方法克服了比例适应度计算的尺度问题。
2.交叉
CHC算法使用的重组操作是对均匀交叉的一种改进。均匀交叉对父个体位值的各位位置以相同的概率实行交叉操作,这里改进之处是:当两个父个体位值相异的位数为m时,从中随机选取m/2个位置,实行父个体位值的互换。显然, 这样的操作对模式具有很强的破坏性,因此,确定阀值,当个体间的海明距离( Hamming distance)低于该阀值时,不进行交叉操作。并且,与种群进化收敛的同时,逐渐地减小该阀值。
3.变异
CHC算法在进化前期不采取变异操作,当种群进化到一定的收敛时期,从优秀个体中选择一部分个体进行初始化。初始化的方法是选择一定比例的基因座,随机地决定它们的位值。这个比例值称为扩散率, 一般取 0.35。

CHC算法描述:N为种群大小,L为个体长, k为世代数, d为海明距离阀值,r为扩散率。

begin
k= 0;
d=L/4;
P(k)初始化;
P(k)的评价;
直到满足终止条件终止 begin
k=k + 1;
复制P(k-1),与P(k)混合后产生混合种群C(k);
C(k)中实行交叉,形成新种群C'(k);
C'(k)的评价;
从C'(k)和P(k- 1)中实行选择;
if P(k)= =P(k- 1)
d=d-1;
if d<0 begin
P(k)的-部分个体实行初始化;
d=r(1-r)L;
end end
end

procedure交叉
begin
C(k)中个体分别配对;
begin
求配对个体间的海明距离;
if 海明距离> 2d
实行改进的均匀交叉;
else
将该配对个体从种群中消除;
end
end
end
procedure选择
begin
C' (k)按评价值优劣顺序排列;
while P(k)中的最差者<C'(k)中的最优者
两者替换;
end
procedure部分个体初始化
begin
P(k- 1)中挑选较优秀的N个个体生成P(k);
对P(k)中N-1个个体
begin
随机选择rL位,其位值随机地决定;
个体评价;
end
end

参考资料:[遗传算法:理论、应用与软件实现].王小平.曹立明.

最新文章

  1. Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
  2. myeclipse配置maven
  3. 《编写可维护的JavaScript》——JavaScript编码规范(七)
  4. sublime福音:微信小程序组件及API补全插件
  5. 10TSQL语言概述-脚本调试-命名规范-天轰穿数据库2014
  6. FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
  7. jQuery - Chaining
  8. 数据库存储安全之(MD5+盐)加密
  9. Node.js Web模块
  10. js 获取页面高度和宽度(兼容 ie firefox chrome),获取鼠标点击位置
  11. using的用法
  12. 树莓派玩耍笔记4 -- 树莓派ssh党必备的配置
  13. Nginx禁止特定用户代理(User Agents)访问(转)
  14. CSS根据子元素个数不同定义样式
  15. [转]使用HackCube-Special分析胎压传感器信号
  16. DELPHI XE Android 开发笔记
  17. 服务器IP安全策略限制网络访问
  18. Google的基础设施安全
  19. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)
  20. @FindBy、@FindBys、@FindAll的区别

热门文章

  1. Springboot+Vue前后端分离的博客项目
  2. ArrayList扩容机制以及底层实现
  3. php常用错误码的意思
  4. POJ1042 贪心钓鱼
  5. 死磕到底RecyclerView | RecyclerView 的滚动是怎么实现的?
  6. 【DB宝51】CentOS7修改网卡名称
  7. Wampserver-删除虚拟主机
  8. mongodb 在PHP中常见问题及解决方法
  9. 阿里云短信服务 PHP
  10. php基础-php中使用变量