遗传算法(GA)
来自:https://blog.csdn.net/u010451580/article/details/51178225
遗传算法是模仿生物进化机制的随机全局搜索和优化方法。借鉴达尔文进化论和孟德尔的遗传学说。
相关术语:
基因型(genotype):性状染色体的内部表现;
表现形(phenotype):性状外部表现。或个体的外部表现。
进化(evolution):种群逐渐适应生存环境。生物进化是以种群的形式进行。
适应度(fitness):度量某个物种对生存环境的适应程度。
选择(selection):以一定的概率从种群中选择若干个个体。一般,选择过程是基于适应度的优胜劣汰的过程。
复制(reproduction):细胞分裂时,DNA通过复制转移到新细胞,新细胞继承旧细胞的基因。
交叉(crossover):两个染色体相同位置DNA被切断,前后两串分别交叉组合成两个新染色体。
变异(mutation):复制时小概率产生差错,产生新染色体,表现出新性状。
编码(coding):DNA中遗传信息在一个长链上按一定模式排列。
解码(decoding):基因型到表现型的映射。
遗传算法中每条染色体对应遗传算法的一个解决方案,用适应性函数衡量解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。遗传算法过程可以看作是一个多元函数求最优解的过程。
实例:已知一元函数 f(x) = xsin(10πx)+2 x∈[-1,2],求函数最大值。
“袋鼠跳”问题
函数曲线理解成山峰和山谷的组成,设想得到的每个解就是一只袋鼠,求最大值转换为袋鼠不断的向更高处跳,直到最高的山峰。
爬山法:
爬山法中,袋鼠只上坡,没下坡,但不能保证是全局最高峰。
模拟退火:
模拟退火中,袋鼠喝醉了,而且随机地大跳很长时间。运气好的话,从一个山峰跳过山谷,到了另外一个更高的山峰上。但最后,它渐渐清醒了并朝着它所在的峰顶跳去。
遗传算法:
遗传法中,有很多袋鼠,降落到不同地方,这些袋鼠不知道它们的任务是寻找全局最高峰。但每过几年,就在一些海拔较低的山峰射杀一些袋鼠,并希望存活的袋鼠是多产的,在所处地方生儿育女。最后袋鼠都聚拢到全局最高峰上。
遗传算法实现过程:
- 首先寻找一种对问题潜在解进行“数字化”编码的方案。
- 然后用随机数初始化一个种群(那么第一批袋鼠被随意分散在山上),种群里面的个体就是这些数字化的编码。
- 接下来,通过适当的解码(得到袋鼠的位置坐标),用适应性函数对每个基因个体做一次适应度评估(袋鼠爬的越高,适应度越高)。
- 用选择函数按照某种规定择优选择(每隔一段时间,射杀海拔较低的袋鼠,保持袋鼠总数平衡)。
- 让个体基因变异(让袋鼠随机跳跳)。
- 然后产生子代(希望存活下来的袋鼠多产,在那生儿育女)。
遗传算法并不保证获得问题最优解,它的最大优点在于不必操心如何“找”最优,只是“否定”不好的(把表现不好的,射杀)。
遗传算法一般步骤:
- 评估每条染色体所对应个体的适应度。
- 遵照适应度越高,选择概率越大原则,从中群中选择两个个体作为父方和母方。
- 抽取父母双方的染色体,进行交叉,产生子代。
- 对子代的染色体进行变异。
- 重复2,3,4步骤,直到新种群产生。
遗传算法过程的细节:
绘制袋鼠的染色体——基因编码方式
- 采用二进制编码,如:010010011011011110111110
- 采用浮点数编码,如:1.2 –3.3 – 2.0 –5.4 – 2.7 – 4.3
- 采用符号编码。
在遗传算法中关心的是袋鼠的位置(海拔低的被射杀),所以以袋鼠的位置作为特征进行编码,具体来说位置就是横坐标。 接着建立表现型到基因型的映射关系。就是如何用编码来变现出袋鼠所在的横坐标。由于横坐标是一个实数,说透了我们就是对这个实数编码。
袋鼠的染色体就是横坐标上实数的二进制编码。
物竞天择——适应性评分与选择函数
1.物竞——适应度函数
袋鼠的海拔高度作为它的适应性评分。即适应度函数直接返回函数值就行了。
2.天择——选择函数
常用选择方法——轮盘赌
比如有5条染色体,他们所对应的适应度评分分别为:5,7,10,13,15。
所以累计总适应度为:
所以各个个体被选中的概率分别为:
注:还有精英选择机制
遗传变异——基因重组(交叉)与基因突变
这两种遗传操作,二进制编码与浮点型编码处理上很大差异。
1. 基因重组、交叉
(1)、二进制编码
类似高中生物中同源染色体的联会过程(随机把其中几个位于同一位置的编码进行交换,产生新的个体。)
(2)、浮点数编码
遗传算法(GA)的更多相关文章
- 用遗传算法GA改进CloudSim自带的资源调度策略(2)
遗传算法GA的核心代码实现: 最核心: private static ArrayList<int[]> GA(ArrayList<int[]> pop,int gmax,dou ...
- 机器学习笔记之遗传算法(GA)
遗传算法是一种大致基于模拟进化的学习方法,假设常被描述为二进制串.在遗传算法中,每一步都根据给定的适应度评估准则去评估当前的假设,然后用概率的方法选择适应度最高的假设作为产生下一代的种子.产生下一代的 ...
- 【比较】遗传算法GA和遗传编程GP有什么不同?
遗传算法GA 本质上有一个固定的长度,这意味着所产生的功能有限的复杂性 通常会产生无效状态,因此需要以非破坏性方式处理这些状态 通常依赖于运算符优先级(例如,在我们的例子中,乘法发生在减法之前),这可 ...
- 【比较】粒子群算法PSO 和 遗传算法GA 的相同点和不同点
目录 PSO和GA的相同点 PSO和GA不同点 粒子群算法(PSO)和遗传算法(GA)都是优化算法,都力图在自然特性的基础上模拟个体种群的适应性,它们都采用一定的变换规则通过搜索空间求解. PSO和G ...
- 遗传算法GA
遗传算法(Genetic Algorithms,GA)是一种全局优化方法,它借用了生物遗传学的观点,通过自然选择.遗传.变异等作用机制,实现种群中个体适应性的提高,体现了自然界中“物竞天择.适者生存” ...
- 【优化算法】遗传算法GA求解混合流水车间调度问题(附C++代码)
00 前言 各位读者大家好,好久没有介绍算法的推文了,感觉愧对了读者们热爱学习的心灵.于是,今天我们带来了一个神奇的优化算法--遗传算法! 它的优点包括但不限于: 遗传算法对所求解的优化问题没有太多的 ...
- 用遗传算法GA改进CloudSim自带的资源调度策略
首先理解云计算里,资源调度的含义: 看了很多云计算资源调度和任务调度方面的论文,发现很多情况下这两者的意义是相同的,不知道这两者是同一件事的不同表述还是我没分清吧,任务调度或者资源调度大概就是讲这样一 ...
- 遗传算法的C语言实现(二)-----以求解TSP问题为例
上一次我们使用遗传算法求解了一个较为复杂的多元非线性函数的极值问题,也基本了解了遗传算法的实现基本步骤.这一次,我再以经典的TSP问题为例,更加深入地说明遗传算法中选择.交叉.变异等核心步骤的实现.而 ...
- 遗传算法的C语言实现(一):以非线性函数求极值为例
以前搞数学建模的时候,研究过(其实也不算是研究,只是大概了解)一些人工智能算法,比如前面已经说过的粒子群算法(PSO),还有著名的遗传算法(GA),模拟退火算法(SA),蚁群算法(ACA)等.当时懂得 ...
- 遗传算法入门C1
遗传算法入门C1 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 遗传算法历史 遗传算法(GA)是从生物进化的角度考虑提出来的方法,19世纪达尔文在大量观察基础上总结了大自然进化规律 ...
随机推荐
- 3.1.4 Spring的事务管理
四.Spring的事务管理 事务原本是数据库中的概念, 在Dao层. 但一般情况下, 需要将事务提升到 业务层, 即Service层. 这样做是为了 能够使用事务的特性来管理具体的业务. 1. Spr ...
- ESP8266小知识与注意事项
小知识 1. 什么是"512+512".“1024+1024”? 当ESP8266支持FOTA(无线升级)时,会给系统做个备份,当升级失败时,使之不至于死机.所以flash会被分割 ...
- UML作业第三次:分析《书店图书销售管理系统,绘制类图
plantuml类图绘制方法的学习: 1.关于类图的学习: 类图显示了系统的静态结构. 类:类图中的主要元素,用矩形表示.矩形的上层表示类名.中层表示属性.下层表示方法. 类之间的关系:关联.依赖.聚 ...
- oo第一次作业
前言: 这是一篇面向对象作业总结,作业内容是对多项式进行求导,一共有三个阶段,具体要求不详述,第一阶段只要求’+’连接coeff*x^pow的形式,第二次支持*连接的幂函数及三角函数,第三次则需要支持 ...
- nginx解决跨域
location ~* \.(eot|ttf|woff|woff2|svg)$ { add_header Access-Control-Allow-Origin *; add_header Acces ...
- Mysql千万级大数据量查询优化
来源于:https://blog.csdn.net/A350204530/article/details/79040277 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...
- 群晖IP地址更新问题
系统:黑群晖 DS3615 事件:初始安装后 会自动获取一个IP地址,各项功能正常,由于网络调整,更换了路由,群晖宿主机链接到了二级路由(交换机模式) 问题: 1.使用原始的IP无法访问到群晖服务 ...
- IP地址 0.0.0.0 是什么意思?
IP地址0.0.0.0是什么意思? 根据RFC文档描述,它不只是代表本机,0.0.0.0/8可以表示本网络中的所有主机,0.0.0.0/32可以用作本机的源地址,0.0.0.0/8也可表示本网络上的某 ...
- CCF CSP 201609-2 火车购票
题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...
- 解决 flannel.1 interface state DOWN
ip a 查看结果 flannel.1 i state UNKNOWN 并且五 inet 发现日志 device (flannel.1): state change: unmanaged -> ...