经典算法:遗传算法(GA)
一、概念
遗传算法(Genetic Algorithm, GA) 是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
- 基因型:性状染色体的内部表现
- 表现型:染色体决定的性状的外部表现
- 编码:表现型到基因型的映射
- 解码:基因型到表现型的映射
- 适应度:度量某个物种对于生存环境的适应程度。
遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。
二、进化环节
1、编码
编码方法影响到交叉算子、变异算子等遗传算子的运算方法,很大程度上决定了遗传进化的效率。
常用的编码方法:二进制编码法、浮点编码法、符号编码法。
二进制编码法:
它由二进制符号0和1所组成的二值符号集,例如:11011100001
长度的设置对最终的结果有较大的影响
优点:简单
缺点:由于其随机性使得其局部搜索能力较差,存在着连续函数离散化时的映射误差。
浮点编码法
个体的每个基因值用某一范围内的一个浮点数来表示。例如0.2-1.9-5.2.-0.9-2.0-5.3
必须保证基因值在给定的区间限制范围内。
优点:适用于精度要求较高,范围较大
符号编码法
个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集。例如:ABCDFEFG
优点:符合有意义积术块编码原则
2、适应度函数
适应度函数也称评价函数,是根据目标函数确定的用于区分群体中个体好坏的标准。适应度函数总是非负的,而目标函数可能有正有负,故需要在目标函数与适应度函数之间进行变换。
评价个体适应度的一般过程为:
对个体编码串进行解码处理后,可得到个体的表现型。
由个体的表现型可计算出对应个体的目标函数值。
根据最优化问题的类型,由目标函数值按一定的转换规则求出个体的适应度。
3、选择函数
确定从父代群体中选取那些优秀个体的方法,选择操作用来确定重组或交叉个体,以及被选个体将产生多少个子代个体。
常用的选择算子:轮盘赌选择、随机竞争选择、竞标赛选择
轮盘赌选择
回放式随机采样方法,被选择的概率等于它的适应度值与整个种群中个体适应度值和的比例。
缺点:误差较大
随机竞争选择
每次按轮盘赌选择一对个体,然后让这两个个体进行竞争,适应度高的被选中,如此反复,直到选满为止
竞标赛选择
每次选取几个个体中适应度最高的一个个体遗传到下一代群体中。
4、交叉
将选择出来的两个染色体按某种方式相互交换其部分基因,从而形成两个新的个体。
根据交叉点,进行交换。
如下图:
5、变异
将个体染色体编码串中的某些基因座上的基因值用该基因座上的其它等位基因来替换。
为了避免陷入局部最优。
如,变异前为 101100001,变异后 001100001
6、复制
每次进化中,为了保留上一代优良的染色体,需要将上一代中适应度最高的几条染色体直接原封不动地复制给下一代。
三、整体流程
- 随机产生种群。
- 根据策略判断个体的适应度,是否符合优化准则,若符合,输出最佳个体及其最优解,结束。否则,进行下一步。
- 依据适应度选择父母,适应度高的个体被选中的概率高,适应度低的个体被淘汰。
- 用父母的染色体按照一定的方法进行交叉,生成子代。
- 对子代染色体进行变异
由交叉和变异产生新一代种群,返回步骤2,直到最优解产生。
参考文献
【优化算法】遗传算法(Genetic Algorithm) (附代码及注释)
10分钟搞懂遗传算法(含源码)
经典算法:遗传算法(GA)相关推荐
- 深度学习经典算法 | 遗传算法详解
遗传算法生物学基础 在一定的时间内,有一群兔子,其中一些比另外一些兔子跑得快,而且更聪明,这些兔子被狐狸吃掉的可能性比较小,因此它们中的多数就存活下来并繁殖更多的兔子.当然,一些跑得慢而愚蠢的兔子也会 ...
- 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】
本文由July 发表在他的博客中,原文参见http://blog.csdn.net/v_JULY_v/archive/2011/01/12/6132775.aspx,对遗传算法分析的很透彻,是学习算法 ...
- 遗传算法经典实例代码_经典算法研究系列 之 深入浅出遗传算法
关注数学,关注AI,关注我们公众号ID:Math-AI 经典算法研究系列 遗传算法 1 初探遗传算法 Ok,先看维基百科对遗传算法所给的解释: 遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法 ...
- 经典算法研究系列:七、深入浅出遗传算法
经典算法研究系列:七.深入浅出遗传算法 作者:July 二零一一年一月十二日. 本文参考:维基百科 华南理工大学电子讲义 互联网 ----------------- ...
- 【优化算法】遗传算法GA求解混合流水车间调度问题(附C++代码)
[优化算法]遗传算法GA求解混合流水车间调度问题(附C++代码) 00 前言 各位读者大家好,好久没有介绍算法的推文了,感觉愧对了读者们热爱学习的心灵.于是,今天我们带来了一个神奇的优化算法--遗传算 ...
- MATLAB遗传算法GA求解TSP旅行商问题,可选PMX交叉、OX交叉及其它多种交叉方式,在算法中引入2-opt变异算子
MATLAB遗传算法GA求解TSP旅行商问题,可选PMX交叉.OX交叉及其它多种交叉方式,在算法中引入2-opt变异算子.进化逆转算子提高算法局部搜索能力,利用国际通用的TSPLIB数据集中的eil5 ...
- 计算机算法讲解的ppt,智能计算几种经典算法解析.ppt
<智能计算几种经典算法解析.ppt>由会员分享,可在线阅读,更多相关<智能计算几种经典算法解析.ppt(20页珍藏版)>请在装配图网上搜索. 1.智能计算几种经典算法解析,制作 ...
- GA遗传算法c语言,遗传算法GA(Genetic Algorithm)入门知识梳理
一.遗传算法进化论背景知识 作为遗传算法生物背景的介绍,下面内容了解即可: 种群(Population):生物的进化以群体的形式进行,这样的一个群体称为种群. 个体:组成种群的单个生物. 基因 ( G ...
- 机器学习算法:18大数据挖掘的经典算法以及代码Java实现
https://python.ctolib.com/article/wiki/95851 数据挖掘十大类经典算法 基于Java8实现. 算法目录 常用的标准数据挖掘算法 包名 目录名 算法名 Asso ...
- matlab中gad,10大经典算法matlab代码以及代码详解【数学建模、信号处理】
[实例简介] 10大算法程序以及详细解释,包括模拟退火,禁忌搜索,遗传算法,神经网络.搜索算法. 图论. 遗传退火法.组合算法.免疫算法. 蒙特卡洛.灰色预测.动态规划等常用经典算法.是数学建模.信号 ...
最新文章
- 今天微软关闭Silverlight官网,Sivlerlight真得要死了吗?
- 她偏爱雏菊一样的淡黄色_为什么开源项目(非常)偏爱新用户,以及您可以采取什么措施...
- 【Python】处理ConvergenceWarning: lbfgs failed to converge (status=1):STOP: ...
- 九九乘法表下半三角(C语言)
- 大厂十年研发经历,总结了12条安卓开发条经验
- 计算机二级知识点速记,计算机等考《二级MS+Office高级应用》高频考点速记
- Android TabHost中Activity之间传递数据
- Python3入门机器学习经典算法与应用 第3章 读取数据和简单的数据探索
- eyoucms相关问题总结
- Python Selenium 疑难杂症解方(四):上传文件
- Ardupilot Pre-Arm安全检查程序分析
- 上海市社保和医保以及公积金转出到异地(注意事项)
- colorUI框架使用教程
- 如何回答「为什么想做产品经理」【面试核心问题3】
- 互联网日报 | 贾跃亭乐视网股票流拍;东航组建“三亚国际航空”;苹果线上WWDC大会22日举办...
- 微信小程序云开发之数据分页云函数
- CSS3的:nth选择器
- 利用qwinsta和rwinsta察看连接到一个机器的连接数
- 内外升级动力不变 北京现代第四代途胜上市15.59-23.99万
- 丰田汽车音频总线AVC-LAN
热门文章
- 合泰单片机点灯c语言程序,ht66f018合泰单片机暖风机的C语言源程序
- CF1442D Sum 分治 背包dp
- 计算机网申兴趣爱好怎么写,网申简历中的特长爱好到底怎么写
- 小白入门指南|zookeeper快速入门
- Android 实现动态背景“五彩蛛网”特效,让你大开眼界!
- 跳槽理由—你的跳槽理由合理吗
- 原生安卓开发!最详细的解释小白也能听懂,全网独家首发!
- Justinmind使用教程(2)——计算表达式及条件使用方法
- 2021年茶艺师(初级)考试总结及茶艺师(初级)作业考试题库
- 【深度学习-吴恩达】L1-3 浅层神经网络 作业