用于函数优化的遗传算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用于函数优化的遗传算法
一、遗传算法介绍
1.综述
遗传算法(Genetic Algorithm )是由美国Michigan 大学Holland 教授和他 的学生发展建立起来的,其思想是起源于生物遗传学适者生存的自然规律,是一种新兴的自适应随机搜索方法,它对优化对象既不要求连续,也不要求可微,并具有极强的鲁棒性和内在的并行计算的机制,特别适合于非凸空间中复杂的多极值优化和组合优化问题。 2.基本原理
传统的优化理论都是通过调整模型的参数来得到期望的结果,而遗传优化算法是根据生物界的遗传和自然选择的原理来实现的,它的学习过程是通过保持和修改群体解中的个体特性,并且保证这种修改能够使下一代的群体中的有利于与期望特性相近的个体在整个群体份额中占有的比例越来越多。与基于代数学的优化方法一样,遗传算法是通过连续不断地队群体进行改进来搜索函数的最大值。遗传算法的搜索结果会有很大的差异。遗传学习的基本机理是使那些优于群体中其他个体的个体具有生存、繁殖以及保持更多基因给下一代的机会。遗传算法实质上是在群体空间中寻求较优解。
3.主要构成
遗传算法主要由编码、适应度、遗传算子(选择算子、交叉算子、变异算子)构成,包含的主要进化参数有编码长度、种群规模、交叉概率、变异概率、终止进化代数。
4.基本步骤
(1)初始化:确定种群规模,交叉概率c P ,变异概率m
P 和终止进化准则,
随机生成初始种群()
X t ;置0t ;
(2)个体评价:计算或估计()
X t 中各个个体的适应度。
(3)选择:从()X t 运用选择算子选择出一些母体。
(4)交叉:对所选个体依概率c P 执行交叉,形成新的种群。 (5)变异:随所选个体依概率m P 执行变异,形成新的种群。 反复执行步骤(2)-(4),直到满足终止进化准则为止。
二、遗传算法的设计流程图
三、二进制遗传算法的设计与实现
1、编码
本次实验我们选择二进制编码方案,它是遗传算法中最常用的一种编码方法,以二进制字符0和1为等位基因的定长字符串编码。如果给定编码精度ε,取编码长度m 为满足
ε<--=
∆1
2m a
b 的最小整数。其中[a,b]是优化区间。 在实验中,由于有两个自变量我们选定长度=2*Length ,每个自变量编码长度
为Length=10;其解码公式为
1
2
)
2
(
1
1
-
-
+
=∑
=
-
i
m
i
i
m
j
j
j
i
i
a
b
b
a
x
,其中i=1,2是两个
自变量的编号。
2、适应度函数
对优化的目标函数处理,使其转化为适应度函数。满足适应度大于0的条件,对于求函数的极大值,只须做非负化处理。对于求极小值的情况则在目标函数前加负号作为适应度函数转换为求极大值。
3、选择算子
本次实验采用的是转盘式选择算子和最优保留策略相结合的方法来实现。计算种群中每个个体的适应度F,将适应度最大的五个个体保留下来不进行交叉变异而直接进入下一代,然后将每个个体的适应度求和得到ada_sum最为选择概率pi,选择时产生一个rand*ada_sum的随机数,如果
)(
)2(
F(1)
rand
*
ada_sum
)1
(
)2(
)1(i
F
F
i
F
F
F K
K+
+
<
<
-
+
+
+则选择个体i。
我们采取的策略是最优个体保留和转盘式算子结合的方法,目的是在遗传操作中,不仅能不断提高群体的平均适应度,而且能保证最佳个体的适应值不减小。
4、交叉算子
我们采用的是单点交叉的方法。它是等概率的随机指定一个基因位置作为交叉点,把母体对中两个个体从交叉点分为前后两段,确定一个交叉概率Pc=0.9,当产生的随机数小于交叉概率时将两个个体的后半部分交换,得到两个新的个体。
5、变异算子
我们选择变异概率Pm=0.05对个体编码串每一位进行变异运算,采用单点变异作为变异算子,当某位基因处产生的随机数小于变异概率时实施变异操作。当该位基因是0时变异为1,基因是1时变异为0。
6、终止条件
我们以进化代数作为遗传算法的终止条件。对于不同的测试函数,我们选用了不同的迭代次数。
四、运行结果及结果分析
1、运行结果
我们选择了八个检测函数对程序进行了实验,每个函数运行10次取最优值和最差值,表1为函数优化结果
检测函数1二维球形函数运行结果
图一检测函数2De Jong函数运行结果见图二
检测函数3Goldstein--price函数运行结果为图三
检测函数4himmelbaut函数运行结果如图四
检测函数5Six-hump camelback函数运行结果如图五
图五
检测函数6Bohachevsk y函数运行结果如图六
图六检测函数7Shubert函数运行结果如图七
检测函数8多峰函数运行结果如图八
图八
2、结果分析
我们选用赌盘选择法和最优个体保留法相结合的选择方案,保证每次迭代的适应度较高的个体保存下来,直接遗传进入下一代。使得局部最优个体不被淘汰,从而使算法的全局搜索能力增强。从表一中可以看出运行10次的结果偏差较小,最优值接近实际最优值。从函数的运行结果曲线可以看出收敛特性较好,结果比较稳定。算法寻优能力较强,说明此方法较为可靠。