Professional Documents
Culture Documents
2.1 遗传算法概述
2.1.1 生物学中的遗传概念
2.1.2 遗传算法的基本思想
2.1.3 遗传算法的一般流程
2.1.4 遗传算法的特点
2.2 遗传算法的理论基础
2.2.1 遗传算法的模式理论
2.2.2 遗传算法的收敛性分析
2.4 计算机实现及应用示例
2.4.1 遗传算法实现中的一些基本问题
2.4.2 TSP
2.4.3 控制系统参数优化
开始 交叉
子
变异
代
常规优化算法:
解析法:只能得到局部最优解,且要求目标函数连
续光滑及可微信息;
枚举法:虽然克服了这些缺点,但计算效率太低,
且对于实际问题往往由于搜索空间大而不能将所有
的情况都搜索到;
动态规划法:存在“指数爆炸”问题,它对于中等规
模和适度复杂性的问题,也常常无能为力。
Holland 实现了第一个基于遗传算法的机器学习
系统 ---- 分类器系统,开创了基于遗传算法学
习的新概念,为分类器系统构造出了一个完整
的框架。
表的个体表示为一个二进制串,串长取决于求
解的精度。本题取位串为 22 位,将一个二进
制串( b21b20…b0 )转化为区间 [-1, 2] 内对应的
实数值很简单,只需要采取以下两步:
i =0
2 −1
2(15. 6%)
3(47. 0%)
例 2 : 利用遗传算法求 Rosenbrock 函数
的极大值
f 2 ( x1 , x2 ) = 100( x12 − x2 ) 2 + (1 − x1 ) 2
− 2.048 ≤ xi ≤ 2.048 (i = 1,2)
求解该问题遗传算法的构造过程:
( 1 )确定决策变量和约束条件;
( 2 )建立优化模型;
( 3 )确定编码方法
x : 0000110111 1101110001
例如:
表示一个个体的基因型,其中前
12/01/09 第二章 遗传算法2009
10 位表示 44
( 4 )确定解码方法:解码时需要将 20 位
长的二进制编码串切断为两个 10 位长的二
进制编码串,然后分别将它们转换为对应
的十进制整数代码,分别记为 y1 和 y2 。
依据个体编码方法和对定义域的离散化
方法可知,将代码 y 转换为变量 x 的解码公
式为 y i
xi = 4.096 × − 2.048 (i = 1,2)
1023
x : 0000110111 1101110001
12/01/09 第二章 遗传算法2009 45
它由两个代码所组成
y1 = 55, y 2 = 881
上述两个代码经过解码后,可得到两
个实际的值 x = −1.828, x = 1.476
1 2
( 5 )确定个体评价方法:由于
Rosenbrock 函数的值域总是非负的,并且
优化目标是求函数的最大值,故可将个体
的适应度直接取为对应的目标函数值,即
F ( x) = f ( x1 , x2 )
12/01/09 第二章 遗传算法2009 46
选个体适应度的倒数作为目标函数
1
J ( x) =
F ( x)
( 6 )设计遗传算子: 选择运算使用比例选
择算子,交叉运算使用单点交叉算子,变异
运算使用基本位变异算子。
( 7 )确定遗传算法的运行参数:群体大小
M=80 ,终止进化代数 G=100 ,交叉概率
Pc=0.60 ,变异概率 Pm=0.10 。
上述七个步骤构成了用于求函数极大值
的优化计算基本遗传算法。
12/01/09 第二章 遗传算法2009 47
采用上述方法进行仿真,经过 100 步迭
代,最佳样本为
BestS = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
即当 x1 = −2.0480 ,x 2 = − 2.0480 时,
Rosenbrock 函数具有极大值,极大值为
3905.9 。
仿真程序: chap10_1.m
12/01/09 第二章 遗传算法2009 48
遗传算法的优化过程是目标函数 J 和
适应度函数 F 的变化过程。
由仿真结果可知,随着进化过程的进
行,群体中适应度较低的一些个体被逐渐
淘汰掉,而适应度较高的一些个体会越来
越多,并且它们都集中在所求问题的最优
点附近,从而搜索到问题的最优解。
求解该问题遗传算法的构造过程:
( 1 )确定决策变量和约束条件;
( 2 )建立优化模型;
( 3 )确定编码方法:用 2 个实数分别表
示两个决策变量,分别将的定义域离散化
为从离散点 -2.048 到离散点 2.048 的
Size
12/01/09
个实数。 第二章 遗传算法2009 50
( 4 )确定个体评价方法:
个体的适应度直接取为对应的目标函
数值,即
F ( x ) = f ( x1 , x 2 )
选个体适应度的倒数作为目标函数
1
J ( x) =
F ( x)
即变异概率与适应度有关,适应度越小,变
异概率越大。
12/01/09 第二章 遗传算法2009 52
4.2.1 遗传算法的模式理论
从上一节简单遗传算法的操作中,我们可以
看到寻优问题的性能是朝着不断改进的方向发
展的。但是我们怎么能知道对某一特定问题使
用遗传算法会得到优化或接近优化的解呢?
从上一节简单遗传算法的操作中,我们可以看到
寻优问题的性能是朝着不断改进的方向发展的。
但是我们怎么能知道对某一特定问题使用遗传
算法会得到优化或接近优化的解呢?
f (H )
m( H , t + 1) = m( H , t ) ⋅ (2 − 1)
f
f +cf
m( H , t + 1) = m( H , t )
f
= (1 + c )m( H , t ) (2 − 2)
%%%%%
即形如 *****
的模式个数,其中%表示该位置要么取
原位串的值 (0 或 1), 要么是 * 。
显然,共有 2l 个该模式。
重复的。
所以在产生新的一代的过程中,遗传算法处理
的模式数的数量级为 O(n3) ,这是遗传算法的一
个重要特征。
12/01/09 第二章 遗传算法2009 82
结论
在产生新的一代的过程中,遗传算法处理的模式数
的数量级为 O(n3) ,这是遗传算法的一个重要特征
。
尽管我们只完成了正比于种群规模 n 的计算量,
但处理的模式数却正比于种群规模的立方。这就
是遗传算法隐含的并行机制,或者说是遗传算法
在计算上的并行性。
遗传算法是通过定义长度短、确定位数少、适配
值高的模式反复抽样、组合来寻找最佳点的。称
这些使遗传算法有效工作的模式为建筑块。
f '
2 favg
favg
fm in
0
fm in favg fm ax f
图 4-4 正常条件下的线性调整法
12/01/09 第二章 遗传算法2009 92
线性调整法在遗传算法的后期可能产生的一个
问题是,一些个体的适配值远远小于平均适配
值与最大适配值,而往往平均适配值与最大适
配值又十分接近, cmin 的这种选择方法将原是适
配值函数伸展成负数,如图 4-5 所示,当无法
找到一个合适的 cmin 时,我们仍保持 f ’avg= f
avg ,而将 f min 映射到 f ’min=0
Í ¼ 4 - 5 Ï ß Ð ÔÓ ³ É ä · ½ · ¨ Ö ®Ò »
2 =k
l l'
U max − U min
δ= (2 − 10)
2l − 1
12/01/09 第二章 遗传算法2009 101
为了设计多参数编码,我们可以把互相关联的参
数按要求简化成若干单一参数代码。每一个代码
可以有它自己的“子长度” [Umin, Umax] ,如图
4-6 所示。单参数x (l = 4)
1 1
0 0 0 0 → U min
1 1 1 1 → U max
(中间值线性映射)
多参数编码(10个参数)
0 0 0 1 0 1 0 1 11 0 0 1111
x1 x2 x9 x10
图4 − 6 多参数级联定点映射编码
12/01/09 第二章 遗传算法2009 102
假设有 n 个参数需要编码:
x1 ∈ [U (1)
min ,U (1)
max ]; x2 ∈ [U ( 2)
min ,U ( 2)
max ]
xn ∈ [U (n)
min ,U (n)
max ]
采用二进制编码,先对各参数分别编码:
2 −1
U ( 2)
− U ( 2)
x2: l2 位, U 2 ∈ [0,2l1 ];δ 2 = maxl2 min
2 −1
U (n)
−U (n)
xn: ln 位, U n ∈ [0,2 ];δ n = l1 max min
2 −1
ln
建立映射
xi = U (i )
min + U iδ i (4 − 11)
位串
x3 x4
1 。复制
复制操作可以通过随机方法来实现。首先产
生 0~1 之间均匀分布的随机数,若某串的
复制概率为 40% ,则当产生的随机数在
0.40~1.0 之间时,该串被复制,否则被淘
汰。
kk=1;
for i=1:1:Size
for j=1:1:fi_S(i) %Select and Reproduce
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1; %kk is used to reproduce
end
end
for i=1:1:Size
for j=1:1:2*CodeL
temp=rand;
if pm>temp %Mutation Condition
if TempE(i,j)==0
TempE(i,j)=1;
else
TempE(i,j)=0;
end
end
end
end
1 。自适应变异,交叉因子
2 。实数编码
交换方法的改进:多点交换;重组运算
重组运算:解决染色体分布过于集中问题。把适应度函数做进
一步处理。
n
f s ( xi ) = f ( xi ) / ∑s(d ( xi , x j ))
j =1
s (d ) 是共享度函数
2 )算法的改进
微种群遗传算法( GA )
双种群遗传算法( DPGA )
12/01/09 第二章 遗传算法2009 113
µ GA 算法
T
J=t∫
() et d
t
0
1 。遗传算法的基本原理
选择( selection ) , 复制 (reproduction ),
交叉 (crossover) ,变异 (mutation)
2 。模式定理
f (H ) δ( H )
m( H , t +1) ≥ m( H , t ) [1 −Pc −O ( H ) Pm ]
f l −1