遗传算法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 问题描述 排列表 ...
随机推荐
- 使用IDEA配置Maven
IDEA中配置Maven File --> settings 推荐配置:设置maven在不联网的情况下使用本地插件 一般使用maven为我们提供好的骨架时,是需要联网的,配置这个,可以在没有网络 ...
- 学习vue遇到的第一个小怪兽:net::err_file_not_found
问题现象 引入vue.js文件时报错:net::err_file_not_found,我用的是VScode开发工具,调试工具用的Chrome. 解决方案 1.检查路径是否正确 2.检查文件是否有问题 ...
- 『无为则无心』Python函数 — 27、Python函数的返回值
目录 1.返回值概念 2.return关键字的作用 3.返回值可以返回的数据类型 4.函数如何返回多个值 5.fn5 和 fn5()的区别 6.总结: 1.返回值概念 例如:我们去超市购物,比如买饮料 ...
- java:UDP广播发送与接收数据报实现
编写广播数据类 package com.zy.java.service; import java.io.*; import java.net.DatagramPacket; import java.n ...
- 23 shell 进程替换
0.shell进程替换的用法 1.使用进程替换的必要性 2.进程替换的本质 进程替换和命令替换非常相似.命令替换是把一个命令的输出结果赋值给另一个变量,例如dir_files=`ls -l`或date ...
- 咋滴,不就是面试总考Spring的AOP吗,办它!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么,你的代码总是糊到猪圈上? 怎么办,知道你在互联网,不知道你在哪个大厂.知道你 ...
- 『与善仁』Appium基础 — 1、Android系统的测试环境搭建
目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...
- 使用.net Core 3.1 多线程读取数据库
第一步:先创建一个DBhepler类,作为连接数据库中心,这个不过多说明,单纯作为数据库的连接........... 1 public static string Constr = "数据库 ...
- iframe跨域访问出现的cookie问题,提供两种解决方案
最近在java项目对接时出现的一个问题.A系统嵌入B系统页面时,使用iframe去嵌入B系统页面丢失sessionid,导致B系统认为是未进行登录的请求,从而跳转到了B系统登录页. 解决方法查看此博客 ...
- 深度解析CSS中的单位以及区别
css中有几个不同的单位表示长度,使用时数字加单位.如果长度为0,则可以省略单位. 长度单位可分为两种类型:相对和绝对. 绝对长度 绝对长度单位是一个固定的值,反应真实的物理尺寸,不依赖于显示器.分辨 ...