改进遗传算法
利用上篇文章上的 遗传算法,对控制尺寸参数进行优化时一些问题:
-
优化10代左右就很快收敛
-
使用优化后的参数计算的适应度函数并不是最大的
初步考虑是种群早熟引起的,因此从参考了下面这文献
参考文献:[1]于光帅,于宪伟.一种改进的自适应遗传算法[J].数学的实践与认识,2015,45(19):259-264.
IAGA自适应遗传算法
IAGA算法是对(AGA)自适应遗传算法的改进,其中
p
c
p_c
pc和
p
m
p_m
pm表达式如下:
p
c
=
{
p
c
1
−
(
p
c
1
−
p
c
2
)
(
f
−
f
a
v
g
)
f
m
a
x
−
f
a
v
g
f
≥
f
a
v
g
p
c
1
f
<
f
a
v
g
p
m
=
{
p
m
1
−
(
p
m
1
−
p
m
2
)
(
f
a
v
g
−
f
′
)
f
m
a
x
−
f
a
v
g
f
≥
f
a
v
g
p
m
1
f
<
f
a
v
g
p_c= \begin{cases} p_{c1}-\frac{(p_{c1}-p_{c2})(f-f_{avg})}{f_{max}-f_{avg}}&f\geq f_{avg}\\ p_{c1}&f<f_{avg} \end{cases}\\ p_m= \begin{cases} p_{m1}-\frac{(p_{m1}-p_{m2})(f_{avg}-f')}{f_{max}-f_{avg}}&f\geq f_{avg}\\ p_{m1}&f<f_{avg} \end{cases}
pc={pc1−fmax−favg(pc1−pc2)(f−favg)pc1f≥favgf<favgpm={pm1−fmax−favg(pm1−pm2)(favg−f′)pm1f≥favgf<favg
式中,
f
m
a
x
f_{max}
fmax代表群体中的最大适应度值,
f
a
v
g
f_{avg}
favg代表群体的平均适应度值,
f
f
f代表交叉两个个体适应度值较大的较大值,
f
′
f'
f′代表待变异个体的适应度值。
p
c
1
=
0.9
,
p
c
2
=
0.6
,
p
m
1
=
0.1
,
p
m
2
=
0.01
p_{c1}=0.9,p_{c2}=0.6,p_{m1}=0.1,p_{m2}=0.01
pc1=0.9,pc2=0.6,pm1=0.1,pm2=0.01。
IAGA算法使
p
c
p_c
pc和
p
m
p_m
pm随着每代个体适应度值的变化而自行调整,既保护了群体中优质的个体,又令具有最大适应度的个体的
p
c
p_c
pc和
p
m
p_m
pm不为0,这会使每代的最优个体不会处于一种不发生变化的状态,但根据公式,当种群中优良个体数目过大时,整体会陷入停滞不前,不易跳出局部最优解,造成未成熟收敛。以个体为单位,缺乏整体精神,当出现未成熟收敛的趋势时无法处理,因此文献作者提出了一种新的自适应遗传算法。
改进的IAGA算法
p
c
=
{
0.8
f
m
a
x
−
f
a
v
g
f
a
v
g
−
f
m
i
n
+
λ
当
f
m
a
x
−
f
a
v
g
f
a
v
g
−
f
m
i
n
+
λ
<
1
且
M
1
>
M
2
时
p
c
1
−
(
p
c
1
−
p
c
2
)
(
f
−
f
m
i
n
)
f
m
a
x
−
f
m
i
n
其
它
p
m
=
{
0.1
f
m
a
x
−
f
a
v
g
f
a
v
g
−
f
m
i
n
+
λ
当
f
m
a
x
−
f
a
v
g
f
a
v
g
−
f
m
i
n
+
λ
<
1
且
M
1
>
M
2
时
p
m
1
−
(
p
m
1
−
p
m
2
)
(
f
′
−
f
m
i
n
)
f
m
a
x
−
f
m
i
n
其
它
p_c= \begin{cases} 0.8\frac{f_{max}-f_{avg}}{f_{avg}-f_{min}+\lambda}&当\frac{f_{max}-f_{avg}}{f_{avg}-f_{min}+\lambda}<1且M_1>M_2时\\ p_{c1}-\frac{(p_{c1}-p_{c2})(f-f_{min})}{f_{max}-f_{min}}&其它 \end{cases}\\ p_m= \begin{cases} 0.1\frac{f_{max}-f_{avg}}{f_{avg}-f_{min}+\lambda}&当\frac{f_{max}-f_{avg}}{f_{avg}-f_{min}+\lambda}<1且M_1>M_2时\\ p_{m1}-\frac{(p_{m1}-p_{m2})(f'-f_{min})}{f_{max}-f_{min}}&其它 \end{cases}
pc={0.8favg−fmin+λfmax−favgpc1−fmax−fmin(pc1−pc2)(f−fmin)当favg−fmin+λfmax−favg<1且M1>M2时其它pm={0.1favg−fmin+λfmax−favgpm1−fmax−fmin(pm1−pm2)(f′−fmin)当favg−fmin+λfmax−favg<1且M1>M2时其它
式中,
f
m
i
n
f_{min}
fmin代表群体中的最小适应度值;
M
1
M_1
M1代表每代个体中适应度值大于平均适应度值的个体数目;
M
2
M_2
M2代表每代个体中适应度值小于平均适应度值的个体数目;
λ
\lambda
λ为一无穷小正数,主要为了防止分母等于0;其余同上。