二、基本遗传算法
笔者最近在学习遗传算法,希望可以通过笔记对遗传算法做一个简要的介绍与记录。也欢迎小伙伴们一起学习交流。
文章目录
2.1 基本遗传算法描述
基本遗传算法只使用选择算子、交叉算子和变异算子这三种基本算子。
2.1.1 基本遗传算法的构成要素
- 染色点编码方法。基本遗传算法使用固定长度的二进制符号串来表示群体中的个体。
- 个体适应度评价。必须预先确定好由目标函数值到个体适应度之间的转换规则
- 遗传算子:
- 选择算子
- 单点交叉算子
- 基本位变异算子或者均匀变异算子
- 基本遗传算法的运行参数。
- M:群体大小,一般取20-100
- T: 终止进化代数,一般取100-500
- P c P_c Pc: 交叉概率,一般0.4-0.99
- P m P_m Pm: 变异概率,一般为0.0001-0.1
2.1.2 基本遗传算法描述
2.1.3 基本遗传算法的形式化定义
S
G
A
=
(
C
,
E
,
P
0
,
M
,
Φ
,
Γ
,
Ψ
,
T
)
SGA=(C,E,P_0,M,\varPhi,\Gamma,\varPsi,T)
SGA=(C,E,P0,M,Φ,Γ,Ψ,T),
其由次序分别表示
- 个体编码方法
- 个体适应度评价函数
- 初始群体
- 群体大小
- 选择算子
- 交叉算子
- 变异算子
- 遗传运算终止条件
2.2 基本遗传算法的实现
2.2.1 个体适应度评价
为了满足适应度取非负值的要求,基本遗传算法采用如下的两种方法将目标函数值f(X)转换到个体的适应度F(X)
方法一:对于求目标函数最大值的优化问题,变换方法为:
F
(
X
)
=
{
f
(
X
)
+
C
m
i
n
i
f
f
(
X
)
+
C
m
i
n
>
0
0
i
f
f
(
X
)
+
C
m
i
n
≤
0
F(X)=\left\{ \begin{aligned} f(X)+C_{min} && && && if &&f(X)+C_{min}>0\\ 0 && && && if &&f(X)+C_{min}\leq0\\ \end{aligned} \right.
F(X)={f(X)+Cmin0ififf(X)+Cmin>0f(X)+Cmin≤0
在式中,
C
m
i
n
C_{min}
Cmin为一个适当的相对比较小的数,它可以用下面几种方法之一选取:
- 预先指定的一个较小的数
- 进化到当前代为止最小目标函数值
- 当前代或者最近几代群体中的最小目标函数值
方法二:对于求目标函数最小值的优化问题,变换方法为:
F
(
X
)
=
{
C
m
a
x
−
f
(
X
)
i
f
f
(
X
)
<
C
m
a
x
0
i
f
f
(
X
)
≥
C
m
a
x
F(X)=\left\{ \begin{aligned} C_{max}-f(X) && && && if &&f(X)<C_{max}\\ 0 && && && if &&f(X) \geq C_{max}\\ \end{aligned} \right.
F(X)={Cmax−f(X)0ififf(X)<Cmaxf(X)≥Cmax
在式中,
C
m
a
x
C_{max}
Cmax为一个适当的相对比较大的数,它可以用下面几种方法之一选取:
- 预先指定的一个较大的数
- 进化到当前代为止最大目标函数值
- 当前代或者最近几代群体中的最大目标函数值
2.2.2 比例选择算子
所谓的比例选择算子,就是指个体被选中并且遗传到下一代群体中的概率与该个体的适应度大小成正比。
- 先计算出群体中所有个体的适应度的总和。
- 其次计算出每个个体的相对适应度的大小,它即为各个个体被遗传到下一代群体中的概率
- 最后再使用模拟操作来确定各个个体被选中的次数。
2.2.3 单点交叉算子
1.对群体中的个体进行两两随机配对
2.对每一对相互配对个体,随机设置某一基因座之后的位置为交叉点。
3.依照设定的交叉概率
p
c
p_c
pc交叉后产生两个新的个体。
2.2.4基本位变异算子
- 对个体的每一个基因座,依变异概率 p m p_m pm指定其为变异点
- 对每一个变异点,对其基因值进行取反操作,产生新个体。
2.3 基本遗传算法应用举例
可行解的编码方法、遗传算子的设计是构造遗传算法时需要考虑的两个主要问题。