智能算法之仿生算法:
仿生全局优化算法
算子(3个,可提高种群中个体的适应性):选择、交叉、变异
核心思想:物竞天择,适者生存
天——适应度函数
生物学基础:达尔文进化论
基因——复制、交叉、变异
表现型——对环境的适应性
基本内容 | 含义 |
---|---|
编码方案 | 怎么把优化问题的解进行编码 |
适应度函数 | 怎么根据目标函数构建适应度函数 |
选择策略 | 优胜劣汰 |
控制参数 | 种群的规模、算法执行的最大代数、执行不同遗传操作的概率,等 |
遗传算子 | 选择、交叉、变异 |
算法终止准则 | 规定一个最大的演化代数,或算法在连续多少代以后解的适应值没有改进 |
m a x : f ( x ) = x 2 ( 0 < = x < = 31 ) max:f(x)=x^2(0<=x<=31) max:f(x)=x2(0<=x<=31)
1:编码
概念 | 含义 |
---|---|
编码 | 用字符串来表达研究的问题 |
染色体 | 表达问题的字符串 |
个体 | 每个字符 |
群体 | 每一遗传代次中个体的组合 |
二进制数表示x值,32=2^5,因此用5位字符表示个体
2:形成初始群体
随机生成一组任意排序的字符串
假设拥有4个个体的初始群体:01101、11000、01000、10011
3:计算适应度
适应度:衡量字符串(染色体)好坏,即目标函数
依次计算 f ( x i ) 、 Σ f ( x i ) 、 f a v g 依次计算f(x_i)、Σf(x_i)、f_{avg} 依次计算f(xi)、Σf(xi)、favg
**相对适应度:**反映个体之间的相对优劣性
f ( x i ) / f a v g f(x_i) / f_{avg} f(xi)/favg
占比:
f ( x ) / Σ f ( x i ) f(x)/Σf(x_i) f(x)/Σf(xi)
4:复制
选择的依据:个体适应度的大小,即相对适应度
适应度大的个体复制,适应度小的个体删除
5:交叉
随机定位,确定母体交叉换位的位置,分别从字符串左数第 i 个字符及之后
6:变异
事先给定变异概率,决定个体是否变异、在哪个字符变异
7:终止
重复3到6的工作,直至得到最优解
1:位串编码
(1)二进制编码
优点:类似生物染色体的组成,可解释性强,算子操作易实现,算法处理的模式数最多
缺点:Hamming距离大导致搜索效率低,需要预先给出求解的精度,高维问题字符串长
(2)Gray编码
二进制编码 转 格雷编码
γ 1 = β 1 γ_1=β_1 γ1=β1
γ k = β k − 1 异或 β k ( k > 1 ) γ_k=β_{k-1}异或β_k(k>1) γk=βk−1异或βk(k>1)
优点:克服Hamming距离
2:实数编码
不必进行数制转换,直接在解的表型上遗传操作
用于求解高维或复杂优化问题
3:多参数级联编码
用于多参数优化问题
把每个参数先进行二进制编码得到子串,再把这些子串连成一个完整的染色体
每个子串对应各自的编码参数,可以有不同的串长度和参数的取值范围
1:初始种群的产生
把握最优解所占空间在整个问题空间的分布范围
随机产生一定数目的个体,挑选最好的个体加入初始群体,迭代该过程产生足够的规模
2:种群规模的确定
群体规模 | 结果 |
---|---|
太小 | 算法的优化性能不好,易陷入局部最优解 |
太大 | 计算复杂 |
模式定理:若群体规模为M,则遗传操作可从M个个体中生成和检测M^3个模式,并不断优化寻找最优解
一般种群规模设置为40—100
1:将目标函数映射成适应度函数的方法
目标函数 | 适应度函数 |
---|---|
最大化问题 | Fit(f(x))=f(x) |
最小化问题 | Fit(f(x))=1/f(x) |
将目标函数转换为求最大值的形式,且保证函数值非负
目标函数 | 适应度函数 |
---|---|
最大化问题 | (1) |
最小化问题 | (2) |
(1)
Fit(f(x))=f(x)-Cmin(f(x) > Cmin)
Fit(f(x))=0(else)
(2)
Fit(f(x))=Cmax-f(x)(f(x) < Cmin)
Fit(f(x))=0(else)
2:适应度函数的尺度变换
下面两种情况妨碍适应度值高的个体产生
过早收敛:缩小个体适应度
停滞现象:改变原始适应值的比例关系
尺度变换/定标:对适应度函数值域的某种映射变换
(1)线性变换
f ′ = a f + b f^{'}=af+b f′=af+b
(2)幂函数变换
f ′ = f K f^{'}=f^K f′=fK
(3)指数变换
f ′ = e − a f f^{'}=e^{-af} f′=e−af
1:个体选择概率分配方法
(1)适应度比例方法/蒙塔卡罗法
每个个体被选择的概率和其适应度值成比例
个体i被选择的概率(M为群体规模):
p s i = f i / Σ i = 1 M f i p_{si}=f_i/Σ_{i=1}^{M}f_i psi=fi/Σi=1Mfi
(2)排序方法
线性排序:个体按照适应度值从高到低排序
个体i被选择的概率:
p i = ( a − b i ) / M ( M + 1 ) p_i=(a-bi)/M(M+1) pi=(a−bi)/M(M+1)
非线性排序:个体按照适应度值从高到低排序
个体i被选择的概率:
p i = q ( 1 − q ) i − 1 ( i < M ) p_i=q(1-q)^{i-1}(i
p M = ( 1 − q ) M − 1 p_M=(1-q)^{M-1} pM=(1−q)M−1
其他非线性函数也可以,只需要满足以下两点
1:f(xi)递减且pi递减
2:pi求和为1
2:选择个体方法
(1)转盘赌选择
(2)锦标赛选择:从群体中随机选择个体,将其中适应度最高的个体保存到下一代。每次按赌轮选择方法选取一对个体,然后让这两个个体进行竞争,适应度高者获胜(随机竞争方法)
(3)最佳个体保存:把群体中适应度最高的个体不进行交叉而直接复制到下一代中,保证遗传算法终止时得到的最后结果一定是历代出现过的最高适应度的个体
(1)一点交叉
在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新的个体
(2)二点交叉
随机设置两个交叉点,将两个交叉点之间的码串相互交换
(1)位点变异:随机1或多个字符变动
(2)逆转变异:随机选2个点作为逆转点,将2点之间的字符逆向排序
(3)插入变异:个体字符串中随机选择1个字符,插入随机选择的位置
(4)互换变异:随机选取字符串的2个字符进行交换
(5)移动变异:随机选取1个字符,向左或右移动1个随机位数
1:计算函数极值
2:巡回旅行商问题TSP,数据集(https://www.math.uwaterloo.ca/tsp/)
关于遗传算法操作算子的验证
(1)遗传算法搜索求解能力与【群体规模、选择算子、交叉率、变异率】有关
(2)从主到次依次是:交叉率、群体规模、选择算子、变异率
1:基本思想
显性、隐性染色体同时进化,采用显性遗传
2:设计
编码/解码——复制算子(按照显性染色体的复制概率,将个体复制到下一代群体)——交叉算子——变异算子——显隐性重排算子(适应值大的染色体设为显性,适应值小的染色体设为隐性)
1:基本思想
交换种群间优秀个体,有利于跳出局部最优
建立两个遗传算法群体,分别独立地运行复制、交叉、变异操作,同时当每一代运行结束以后,选择两个种群中的随机个体及最优个体分别交换
2:设计
编码/解码——交叉算子、变异算子——杂交算子(随机数n,从2个种群分别选择n个待交换个体和1个最优个体)
1:基本思想
AGA:当种群各个体适应度趋于一致或者趋于局部最优时,增加Pc和Pm;当群体适应度比较分散时,减少Pc和Pm
对于适应度高于群体平均适应值的个体,选择较低的Pc和Pm;对低于平均适应值的个体,选择较高的Pc和Pm
换种群间优秀个体,有利于跳出局部最优
建立两个遗传算法群体,分别独立地运行复制、交叉、变异操作,同时当每一代运行结束以后,选择两个种群中的随机个体及最优个体分别交换
2:设计
编码/解码——交叉算子、变异算子——杂交算子(随机数n,从2个种群分别选择n个待交换个体和1个最优个体)
1:基本思想
AGA:当种群各个体适应度趋于一致或者趋于局部最优时,增加Pc和Pm;当群体适应度比较分散时,减少Pc和Pm
对于适应度高于群体平均适应值的个体,选择较低的Pc和Pm;对低于平均适应值的个体,选择较高的Pc和Pm
应用:深度学习网络的优化和特征选择