作为一个算法的初学者,最近看了一下计算智能(人工智能的一个重要领域)的相关内容。。。在这里简单介绍一下进化计算中的遗传算法吧大概吧。。。这种综述性的暂且看看吧。。。
遗传算法(Genetic Algorithm, GA)是一种随机自适应的全局搜索算法,这种算法正是通过模拟自然界中生物的遗传进化过程,对优化问题的最优解进行搜索。 这种搜索全局最优解的过程是一个不断迭代的过程(每次迭代相当于生物进化中的一次循环),直到满足算法的终止条件为止。
基本思想:从一初始化的群体出发,通过一系列的遗传操作,包括随机的选择(使群体中优秀的个体有更多的机会传给下一代),交叉(群体内个体之间的信息交换),和变异(引入新的变种来确保信息的多样性),使最具有生存能力的染色体以最大可能生存,群体一代一代地进化到搜索空间中越来越好的区域。(”人的好多灵感真的是来自大自然耶。。。“)
生物遗传进化的基本生物要素和遗传算法的基本要素定义的对照关系:
生物遗传进化 | 遗传算法 |
---|---|
群体 | 问题搜索空间的一组有效解(表现为群体规模N) |
种群 | 经过选择产生的新群体(规模同样为N) |
染色体 | 问题有效解的编码串 |
基因 | 染色体的一个编码单元 |
适应能力 | 染色体的适应值 |
交配 | 两个染色体交换部分基因得到两个新的子代染色体 |
变异 | 染色体某些基因的数值发生变化 |
进化结束 | 算法满足终止条件时结束,输出全局最优解 |
遗传算法的流程结构:
1. 染色体编码
两种常用的较简单的编码方法:二进制编码方法和浮点数编码方法。
二进制编码方法中,产生的染色体是一个二进制符号序列,染色体的每一个基因只能取值0或1。例如,假设 [Umin,Umax] 为 [1,64] ,采用6位二进制符号串进行编码,则二进制符号串000000代表数值1,符号串111111代表数值64,符号串010001代表数值18等等。
浮点数编码方法中,染色体的长度等于问题定义的解的变量个数,染色体的每一个基因等于解的每一维变量。例如,待求解问题的一个有效解为 (x1i,x2i,x3i,...,xD−1i,xDi) ,D为维数。则该解对应的染色体编码为 (x1i,x2i,x3i,...,xD−1i,x