1.基本遗传算法
1.1遗传算法的基本思想
在求解问题时从多个解开始,然后通过一定的法则进行逐步迭代以产生新的解。
1.2遗传算法设计的基本内容
1.编码方案:怎样把优化问题的解进行编码。
2.适应度函数:怎样根据目标函数构建适应度函数。
3.选择策略:优胜劣汰。
4.控制参数:种群的规模、算法执行的最大代数、 执行不同遗传操作的概率等。
5.遗传算子:选择、交叉、变异。
6.算法终止准则:规定一个最大的演化代数,或算 法在连续多少代以后解的适应值没有改进。
1.3遗传算法的五个基本要素
参数编码
初始群体的设定
适应度函数的设计
遗传操作设计
控制参数设定
2.遗传算法的基本算法
2.1 编码
2.1.1 位串编码
一维染色体编码方法:将问题空间的参数编码为一维排列的染色体的方法。
(1)二进制编码
用若干二进制数表示一个个体,将原问题的解空间映射到位串空间 B={0,1}上,然后在位串空间上进行遗传操作。
(2)Gray编码
将二进制编码通过一个变换进行转换得到的编码。
2.1.2 实数编码
用若干实数表示一个个体,然后在实数空间上进行遗传操作。采用实数表达法不必进行数制转换,可直接在解的表现型上进行遗传操作。
2.1.3 多参数级联编码
把每个参数先进行二进 制编码得到子串,再把这些子串连成一个完整的染色体。多参数映射编码中的每个子串对应各自的编码参数, 所以,可以有不同的串长度和参数的取值范围。
2.2 群体设定
2.2.1 初始种群产生
(1)根据问题固有知识,把握最优解所占空间在整 个问题空间中的分布范围,然后,在此分布范围内设 定初始群体。
(2)随机产生一定数目的个体,从中挑选最好的个 体加到初始群体中。这种过程不断迭代,直到初始群 体中个体数目达到了预先确定的规模。
2.2.2 种群规模的确定
(1)群体规模太小,遗传算法的优化性能不太好,易陷入局部最优解。
(2)群体规模太大,计算复杂。
模式定理表明:若群体规模为M,则遗传操作可从这M 个个体中生成和检测 M^3个模式,并在此基础上能够不断形成和优化积木块,直到找到最优解。
2.3 适应度函数
2.3.1 将目标函数映射成适应度函数的方法
若要保证函数值非负,则进行如下映射。
存在界限值预选估计困难或者不能精确估计的问题。
2.3.2 适应度函数的尺度变换
1.线性变换
2.非线性变换
2.4 选择
2.4.1 个体选择概率分配方法
选择操作也称为复制(reproduction)操作:从当前 群体中按照一定概率选出优良的个体,使它们有机会 作为父代繁殖下一代子孙。
判断个体优良与否的准则是各个个体的适应度值: 个体适应度越高,其被选择的机会就越多。
1.适应度比例方法(fitness proportional model) 或蒙特卡罗法(Monte Carlo)
各个个体被选择的概率和其适应度值成比例。
个体 被选择的概率为:
2. 排序方法 (rank-based model)
(1) 线性排序:J. E. Baker
(2)非线性排序: Z. Michalewicz
2.4.2 选择个体的方法
1.轮盘赌选择
先按个体的选择概率生成一个圆轮盘,轮盘每个区的角度与个体的选择概率成比例,然后产生一个随机数,它落入转盘的哪个区域就选择相应的个体交叉。在实际计算时,可以按照个体顺序求出每个个体的累积概率,然后产生一个随机数,它落入累计概率的哪个区域就选择相应的个体交叉。
2.锦标赛选择
从群体中随机选择K个个体,将其中适应度最高的个体保存到下一代。这一过程反复执行,直到保存 到下一代的个体数达到预先设定的数量为止。
3.Boltzmann锦标赛选择
…
4.最佳个体保存方法
把群体中适应度最高的个体不进行交叉而直接复制到下一代中,保证遗传算法终止时得到的最后结果一定是历代出现过的最高适应度的个体。
2.5 交叉
2.5.1 基本的交叉算子
1.一点交叉
在个体串中随机设定一个交叉点,实行 交叉时,该点前或后的两个个体的部分结构进行互换, 并生成两个新的个体。
2.二点交叉
随机设置两个交叉点,将两个交叉点之间的码串相互交换。
3.均匀交叉
按照均匀概率抽取一些位,每一位是否 被选取都是随机的,并且独立于其他位。然后将两个 个体被抽取位互换组成两个新个体。
2.5.2 修正的交叉算子
1.部分匹配交叉PMX
2.顺序交叉OX
3.循环交叉CX
…
实数编码的交叉方法
1.离散交叉
部分离散交叉:在父解向量中选择一部分分量,然后交换这些分量。
整体离散交叉:以0.5的概率交换父体s1和s2的所有分量。
2.算数交叉
2.6 变异
2.6.1 整数编码的交叉方法
1.位点变异
群体中的个体码串,随机挑选一个或多个基因座,并对这些基因座的基因值以变异概率作变动。
2.逆转变异
在个体码串中随机选择两点(逆转点),然后将两点之间的基因值以逆向排序插入到原位置中。
3.插入变异
在个体码串中随机选择一个码,然后将此码插入随机选择的插入点中间。
4.互换变异
随机选取染色体的两个基因进行简单互换。
5.移动变异
随机选取一个基因,向左或者向右移动一个随机位数。
6.自适应变异
类似于位点变异,但变异概率随群体中个体的多样性程度而自适应调整。
2.6.2 整数编码的交叉方法
1.均匀性变异
2.正态性变异
3.非一致性变异
4.自适应变异
2.7 遗传算法的一般步骤
来源:CSDN
作者:柳希及
链接:https://blog.csdn.net/Liu_Xiji/article/details/103831688