遗传算法Genetic Algorithm
遗传算法Genetic Algorithm
好家伙,回回都是这个点,再这样下去人估计没了,换个bgm《夜泊秦淮》,要是经典咏流传能投票选诗词,投票选歌,俺一定选这个
开始瞎叨叨
遗传算法的理论以及背景
这个东西其实就是一个根据大自然的规律——适者生存,优胜劣汰的现象所提出的随机算法,说白了,就是一种借鉴了自然界生物的进化的机制和自然遗传机制的一个随机算法,是美国的Holland教授首先于20世纪70年代提出的,其通过模拟自然界的生物进化的遗传规律来达到寻找最优解的目的,其是收到了达尔文进化论的物竞天择,适者生存的思想的启发,将优化问题和生物进化结合起来,进行对照,将生物进化引入到复杂问题的思想中,在此基础上,提出了求解复杂问题的遗传算法
遗传算法一般是通过使用数学的形式,通过计算机来进行仿真运算,将这些复杂问题的求解过程转换成类似生物进化的过程,其过程包含生物进化中的染色体基因的交叉、变异等情况,使用遗传算法,通常可以在求解较为复杂的组合优化问题时,能够比一些常规的优化算法获得到更好的结果,遗传算法作为一种有效的工具,已被人们广泛地应用在最优化问题的求解上
在遗传算法中呢,首先就是对优化问题的解进行编码,既然是生物进化的思想,那么编码后的一个解我们将其称为一个染色体,组成染色体的元素称为基因。一个群体由若干个染色体组成,染色体的个数称为群体的规模。
与自然界中的生存环境相对应,在遗传算法中用适应函数表示环境,它是已编码的解的函数,是一个解适应环境程度的评价。适应函数的构造一般与优化问题的指标函数相关。简单的情况下,直接用指标函数或者指标函数经过简单的变换后作为适应面数使用。一般情况下,适应函数值大则表示所对应的染色体适应环境的能力强。适应函数起着自然界中环境的作用。
当适应函数确定后,自然选择规律将以适应函数值的大小来决定一个染色体是否继续生存下去的概率。生存下来的染色体成为种群,它们中的部分甚至全部以一定的概率进行交配、繁行,从而得到下一代的群体。
交配是一个生殖过程,发生在两个染色体中间,作为双亲的两个染色体,交换部分基因之后,生殖出两个新的染色体,即问题的新解。交配或者称为杂交,是遗传算法区别于其他优化算法的最主要的特征。在进化的过程中,染色体的某些基因可能会产生变异,即表示染色体的编码发生了某些变化。一个群体的进化需要染色体的多样性,而变异对保持群体的多样性具有一定的作用。
如果将生物进化和遗传算法进行对比可以发现
生物进化中的环境,对应遗传算法里的适应函数
生物进化中的染色体,对应遗传算法里的解的编码
生物进化中的基因,对应遗传算法里的编码的元素
生物进化中的适应性,对应遗传算法里的适应值函数
生物进化中的个体,对应遗传算法里的问题的一个解
生物进化中的群体,对应遗传算法里的被选定的一组解
生物进化中的种群,对应遗传算法里的根据适应函数选择的一组解
生物进化中的交配,对应遗传算法里的以一定方式由双亲产生后代的过程
生物进化中的变异,对应遗传算法里的编码的某些分量发生了变化的过程
生物进化中的适者生存,对应遗传算法里的适应函数值最大的解被保留的概率最大

主要操作
在遗传算法中,选择,交配和变异是其三个主要的操作
选择方面,要依据适应值的大小,选择操作从规模为N的群体中随机的选择若干染色体构成种群,种群的规模可以自由设置,由于是依据适应值的大小进行随机选择的,适应值大的染色体肯那个会被多次选出,而适应值小的就有可能没有机会被选中,这就导致了可能一些适应值小的染色体会被淘汰,体现出了优胜劣汰的生物进化规律,有很多种方式进行选择,经常使用的是一种“轮盘赌”的方法,不过这个后面再说
在进化过程中,交配不是100%进行的
变异就是在二进制编码的时候,1变成了0,0变成了1,这对于一个群体保持多样性是有着不错的作用的,但是过量的变异也会对群体造成破坏,所以需要以一个很小的概率来限制变异的规模

具体描述遗传算法过程
其中,每一代中群体的规模是固定的,变量t表示当前的代数,以适应值最大者为最优解。遗传算法的具体过程为:
①首先给定群体规模N,交配概率p和变异概率pm,此时t=0
②然后随机生成N个染色体作为初始群体
③对于群体中的每一个染色体x(1, 2....,N)分别计算其适应值F(x)
④如果算法满足停止准则,则转⑩
⑤对群体中的每一个染色体x,使用下式计算概率

⑥依据计算得到的概率值,从群体中随机的选取N个染色体,得到种群
⑦依据交配概率p从种群中选择染色体进行交配,其子代进入新的群体,种群中未进行交配的染色体,直接复制到新群体中
⑧依据变异概率pm从新群体中选择染色体进行变异,用变异后的染色体代替新群体中的原染色体
⑨用新群体代替旧群体,使代数增加1,即t=t+1,转③
⑩进化过程中适应值最大的染色体,经解码后作为最优解输出
然后结束遗传算法

遗传算法的特点
遗传算法具有以下特点:
第一,遗传算法作为一个随机搜索算法,适用于数值求解具有多参数,多变量,多目标的复杂最优化问题
第二,遗传算法对待求解间题的指标函数没有什么特殊的要求,比如不要求诸如连续性、导数存在、单峰值假设等,甚至不需要显式地写出指标函数
第三,在经过编码以后,遗传算法几乎不需要任何与问题有关的知识,唯一需要的信息是适应值的计算,也不需要使用者对问题有很深入的了解和求解技巧,通过选择、交配和变异等简单的操作求解复杂的问题,是一个比较通用的优化算法
第四,遗传算法具有天然的并行性,适用于并行求解
由于遗传算法是一个随机搜索算法,程序的每一次运行,得到的结果可能是不一样的,那么遗传算法得到的解的质量是否有保证呢?得到最优解的可能性如何呢?这些就引出了遗传算法的收敛性定理
遗传算法的收敛性定理:如果在代的进化过程中,遗传算法每次保留到目前为止的最好解,并且算法以交配和变异为其随机化操作,则对于一个全局最优化问题,当进化代数趋于无穷时,遗传算法找到最优解的概率为1。
该定理从理论上保证了只要进化的代数足够多,则遗传算法找到最优解的可能性会非常大,在实际使用中,由于要考虑在可接受的有限时间内算法停止的问题,因此解的质量与算法的控制参数,如群体的规模、交配概率、变异概率和进化代数等有很大的关系
(未完,后面补全)
遗传算法Genetic Algorithm的更多相关文章
- 基于遗传算法(Genetic Algorithm)的TSP问题求解(C)
基于遗传算法的TSP问题求解(C) TSP问题: TSP(Travelling salesman problem): 译作“旅行商问题”, 一个商人由于业务的需要,要到n个城市,每个城市之间都有一条路 ...
- 超详细的遗传算法(Genetic Algorithm)解析
https://blog.csdn.net/u010451580/article/details/51178225 https://www.jianshu.com/p/c82f09adee8f 00 ...
- 遗传算法 Genetic Algorithm
2017-12-17 19:12:10 一.Evolutionary Algorithm 进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算 ...
- 【智能算法】超详细的遗传算法(Genetic Algorithm)解析和TSP求解代码详解
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 文章声明 此文章部分资料和代码整合自网上,来源太多已经无法查明出处,如侵犯您的权利,请联系我删除. 00 目录 遗传算法定义 生 ...
- 遗传算法(Genetic Algorithm)——基于Java实现
一.遗传算法原理介绍 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法.遗传算法是从代表问 ...
- MIP启发式算法:遗传算法 (Genetic algorithm)
*本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 本文主要讲述启发式算法中的遗传算法.遗传算法也是以local search为核心框架,但在表现形式上和hill climbing, ta ...
- 遗传算法(Genetic Algorithm, GA)及MATLAB实现
遗传算法概述: • 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择.适者生存”的演化法则,它最初由美国Michigan大学的J. Hollan ...
- Evolutionary Computing: 2. Genetic Algorithm(1)
本篇博文讲述基因算法(Genetic Algorithm),基因算法是最著名的进化算法. 内容依然来自博主的听课记录和教授的PPT. Outline 简单基因算法 个体表达 变异 重组 选择重组还是变 ...
- Evolutionary Computing: 3. Genetic Algorithm(2)
承接上一章,接着写Genetic Algorithm. 本章主要写排列表达(permutation representations) 开始先引一个具体的例子来进行表述 Outline 问题描述 排列表 ...
随机推荐
- gRPC 拦截器能做些什么?
什么是拦截器? 拦截器是一种横切维度的功能延展. 具象说明一下,高速收费站就是一种拦截器.它可以做什么?收费,查证,交通控制等等,面向所有穿行过往的车辆. gRPC 拦截器主要分为两种:客户端拦截器( ...
- Mysql-5.7.28 Windows安装
1.下载mysql-5.7.28-winx64社区版并解压 2.解压后配置环境变量 3.my.ini配置文件及初始化mysql命令 4.登录mysql 每次windows安装mysql时都需要百度,自 ...
- ctf之SusCTF2017-Caesar cipher
由题目名字SusCTF2017-Caesar cipher可知,该题目考察凯撒密码. 直接下载附件打开如图 由题目描述可知,提交的flag格式为Susctf{}.在网上搜索在凯撒密码解密. 偏移量为3 ...
- C语言警告提示
[Warning] incompatible implicit declaration of built-in function 'strlen' [enabled by default] 提示:st ...
- [刘阳Java]_Spring入门_第1讲
Spring框架在企业中的使用非常多,优势明显.所以学好Spring框架肯定不言而喻.今天我们给大家介绍Spring的入门 1. 对于初学者来说我们要学习Spring框架中的哪些技术,这个有必要了解一 ...
- 【LeetCode】217.存在重复元素
217. 存在重复元素 知识点:数组:Set: 题目描述 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 fals ...
- 转载:使用jquery刷新当前页面以及其他js知识积累
转载:https://www.cnblogs.com/heguihui/p/10505949.html 如何使用jquery刷新当前页面 下面介绍全页面刷新方法:有时候可能会用到 window.loc ...
- 用Nextcloud在树莓派上布置你的个人网盘“NAS”
用Nextcloud在树莓派上布置你的个人网盘"NAS" 这次用的是目前最新的 Raspbian Stretch 系统,基于 Debian 9. 软件程序是 Nextcloud 1 ...
- Qt Creator内qmake配置静态编译
起因 利用QT Creator编写一些纯C/C++应用,默认配置下是动态编译 解决 解决起来很简单,这里只是附上配置备忘;-) msvc: { QMAKE_CFLAGS_RELEASE += /MT ...
- 大数据学习(02)——HDFS入门
Hadoop模块 提到大数据,Hadoop是一个绕不开的话题,我们来看看Hadoop本身包含哪些模块. Common是基础模块,这个是必须用的.剩下常用的就是HDFS和YARN. MapReduce现 ...