遗传算法(二)改进:自适应、遗传退火算法
来源:互联网 发布:淘宝付款怎么取消订单 编辑:程序博客网 时间:2024/09/21 09:06
自从Hollad教授提出基本遗传算法后,针对遗传算法改进的讨论从来没有停止。本文将介绍遗传算法的几种改进方法,分别为自适应遗传算法、混合遗传算法中的模拟退火遗传算法(SAGA)和并行遗传算法。相较于标准(简单)遗传算法(SGA),改进法在某些方面会具有一定的优势。
往期传送门
- 笔记(一) 基本遗传算法
- 笔记(二) 遗传算法的优化改进
- 笔记(三) 遗传算法解组合优化
- 笔记(四) MATLAB遗传算法工具箱使用
自适应遗传算法
交叉概率
上式中,
fmax ——群体中最大的适应度值favg ——每代群体的平均适应度值f′ ——要交叉的两个个体中较大的适应度值f ——要变异的个体的适应度值Pc1=0.9 ,Pc2=0.6 ,Pm1=0.1 ,Pm2=0.001 。
模拟退火遗传算法
用模拟退火算法对GA进行改进的具体办法有许多,总结下来有退火思维改进适应度函数、退火式变异(SAM)和退火式选择等方法。
1. 无从考证的Stoffa改进方法
Stoffa借鉴模拟退火的思想2(并没有找到原文,只有未列出参考文献的二手资源),将适应度随迭代的次数拉伸。遗传算法在运行初期个体差异较大,使用轮盘赌选择产生的后代与适应度成正比,可以获得较好的选择效果。但在算法后期,适应度趋于一致,优秀个体优势不足,需要对适应度进行一定的“拉伸”,公式如下:
其中
本方法有一定的可取之处,在“算法后期,适应度趋于一致”的时候,该方法可以拉伸适应度,使遗传算法中的选择更有择优的效果。但该方法只是应用了模拟退火思想中“拉伸”的思想,无法解决早熟问题,并没有将模拟退火算法的爬山能力融入遗传算法中。
2.SAM(退火式变异)
遗传算法有三种明显劣势 3,一是编码所占用的储存空间可能很大(二进制码),二是可能出现早熟,陷入局部最优解,三是爬山能力差。Adler提出一种操作符——退火变异,伪代码如下:
SAM(s, T){ s' = mutate(s); if (accept(s, s', T)) return s'; else return s;}
其中的aceept操作为模拟退火中的accept。计算变异后新的适应度与变异前适应度的差值,若变异后适应度更大,则接受变异;若变异后适应度变小,则以一定的退火概率
对于函数
在区间
其中平均遗传代数为64.66次。
在退火初温度
可以发现加入模拟退火变异操作后可以明显提高遗传算法的效率。
3. 另一种改进的遗传退火进化算法
操作流如下:
与上述仅仅将变异或交叉操作符中加入退火思想不同,本方法直接将一部分个体进行退火。
- 王小平. 遗传算法 : 理论、应用与软件实现[M]. 西安交通大学出版社, 2002. ↩
- 王小平. 遗传算法 : 理论、应用与软件实现[M]. 西安交通大学出版社, 2002. ↩
- Adler D. Genetic algorithms and simulated annealing: a marriage proposal[C]. international symposium on neural networks, 1993: 1104-1109. ↩
- 遗传算法(二)改进:自适应、遗传退火算法
- 模拟退火,遗传算法
- 遗传模拟退火算法
- 模拟退火遗传算法
- 算法遗传与退火
- 遗传算法改进
- 改进遗传算法
- 自适应遗传算法
- 优化算法(模拟退火算法 与 遗传算法)
- 遗传算法及其改进算法
- 遗传算法入门(二)
- 遗传算法入门(二)
- 大白话解析模拟退火算法、遗传算法
- 遗传算法及模拟退火算法
- 遗传算法小结(二)
- 基于模拟退火的遗传算法
- 进化算法,遗传算法,模拟退火算法,蚁群算法
- 遗传算法入门(连载之二)
- hibernate注解方法总结
- optString和getString区别
- 一些资料
- 常见排序算法的时间复杂度和空间复杂度对比表
- java之观察者模式
- 遗传算法(二)改进:自适应、遗传退火算法
- 高性能Mysql
- MySql学习之Join查询
- Oracle简单的存储过程+根据条件修改字段值
- POJ1163:The Triangle
- UGUI研究院之UI粒子特效自适应缩放(二十二)
- windows下PyCharm运行和调试scrapy
- 网络资料
- iOS字符串去前后空格