当前位置:
文档之家› 第三章 经典进化计算——遗传算法_2
第三章 经典进化计算——遗传算法_2
解 (1) 设定种群规模 , 编码染色体,产生初始 种群。 将种群规模设定为 4 ;用 5 位二进制数编码 染色体;取下列个体组成初始种群S1: s1= 13 (01101), s2= 24 (11000) s3= 8 (01000), s4= 19 (10011)
(2) 定义适应度函数,
取适应度函数:f (x)=x2
s3=11000
81
576
0.04
0.32
0.48
0.80
0
1
s4=10011
361
0.20
1.00
1
设这一轮的选择-复制结果为:
s1’=11100(28), s2’=11100(28)
s3’=11000(24), s4’=10011(19) 做交叉运算,让s1’与s4’,s2’与s3’ 分别交换 后两位基因,得 s1’’=11111(31), s2’’=11100(28) s3’’=11000(24), s4’’=10000(16) 这一轮仍然不会发生变异。
3.3—遗传算法的模式理论
指导遗传算法的基本理论,是J.H.Holland教授创 立的模式理论。该理论揭示遗传算法的基本机理。
一、基本概念 二、模式定理 三、建筑块假说 四、隐含并行性
一、基本概念
1.1 问题的引出
例: 求 max f(x)=x2 x {0,31}
[分析] • 当编码的最左边字符为“1”时,其个体适应度较大,如2号个体和4号个体, 我们将其记为 “ 1**** ”; 其中2号个体适应度最大,其编码的左边两位都是1,我们记为 “ 11*** ”; • 当编码的最左边字符为“0”时,其个体适应度较小,如1号和3号个体, 我们记为 “ 0**** ”。
——遗传算法总是在寻找优解, 而不像图搜 索那样并非总是要求优解, 而一般是设法尽快 找到解, 所以遗传算法又是一种优化搜索算法。
——遗传算法的搜索过程是从空间的一个点 集(种群)到另一个点集(种群)的搜索,而不像图 搜索那样一般是从空间的一个点到另一个点地 搜索。 因而它实际是一种并行搜索, 适合大规 模并行计算,而且这种种群到种群的搜索有能力 跳出局部最优解。
j 1
选择-复制
设从区间[0, 1]中产生4个随机数如下: r1 = 0.450126, r2 = 0.110347 r3 = 0.572496, r4 = 0.98503
染色体 适应度 选择概率 积累概率 选中次数
s1=01101
s2=11000 s3=01000
169
576 64
0.14
0.49 0.06
——遗传算法的适应性强 , 除需知适应度 函数外, 几乎不需要其他的先验知识。 ——遗传算法长于全局搜索 , 它不受搜索 空间的限制性假设的约束,不要求连续性, 能以 很大的概率从离散的、多极值的、 含有噪声的 高维问题中找到全局最优解。
◆遗传算法的应用
函数优化
是遗传算法的经典应用领域; 组合优化 实践证明,遗传算法对于组合优化中的NP完全问题 非常有效; 自动控制 如基于遗传算法的模糊控制器优化设计、基于遗传算 法的参数辨识、利用遗传算法进行人工神经网络的结构 优化设计和权值学习等; 机器人智能控制 遗传算法已经在移动机器人路径规划、关节机器人运 动轨迹规划、机器人逆运动学求解、细胞机器人的结构 优化和行动协调等;
于是,得第四代种群S4:
s1=11111(31), s2=11100(28)
s3=11000(24), s4=10000(16)
显然,在这一代种群中已经出现了适应度 最高的染色体s1=11111。于是,遗传操作终止, 将染色体“11111”作为最终结果输出。 然后,将染色体“11111”解码为表现型,即 得所求的最优解:31。 将31代入函数y=x2中,即得原问题的解,即 函数y=x2的最大值为961。
0.14
0.63 0.69
1
2 0
s4=10011
361
0.31
1.00
1
于是,经复制得群体:
s1’ =11000(24), s2’ =01101(13)
s3’ =11000(24), s4’ =10011(19)
交叉
设交叉率 pc=100% ,即 S1 中的全体染色体都 参加交叉运算。
设s1’与s2’配对,s3’与s4’配对。分别交换后 两位基因,得新染色体: s1’’=11001(25), s2’’=01100(12)
第二代种群S2中各染色体的情况 染色体 s1=11001 s2=01100 s3=11011 s4=10000 适应度 625 144 729 256 选择概率 0.36 0.08 0.41 0.15 积累概率 0.36 0.44 0.85 1.00 估计的 选中次数 1 0 2 1
假设这一轮选择-复制操作中,种群S2中的
• 阶次越低,模式的概括性越强,所代表的编码串个体数也越多,反之亦然; • 当模式阶次为零时,它没有明确含义的字符,其概括性最强。
模式的定义长度( Schema Defining Length) ——指模式中第一个和最后一个具有明确含意的字符之间的距离,记作 (s)。 例如,模式( 011*l** ) 的第一个字符为0,最后一个字符为l,中间有3个 字符,其定义长度为4,记作 ( 011*l** ) = 4 ;模式 ( 0****** ) 的长度是0,记 作 ( 0****** ) = 0 ;
4个染色体都被选中,则得到群体:
s1’=11001(25), s2’= 01100(12)
s3’=11011(27), s4’= 10000(16)
做交叉运算,让s1’与s2’,s3’与s4’ 分别交换 后三位基因,得 s1’’ =11100(28), s2’’ = 01001(9)
s3’’ =11000(24), s4’’ = 10011(19)
这一轮仍然不会发生变异。
于是,得第三代种群S3:
s1=11100(28), s2=01001(9)
s3=11000(24), s4=10011(19)
第三代种群S3中各染色体的情况 染色体 s1=11100 适应度 784 选择概率 0.44 积累概率 0.44 估计的 选中次数 2
s2=01001
• 一般地,有式子 (s)=b – a 式中 b—模式s 中最后一个明确字符的位置; a—模式s 中最前一个明确字符的位置。 • 模式的长度代表该模式在今后遗传操作(交叉、变异)中被破坏的可能性: 模式长度越短,被破坏的可能性越小,长度为0的模式最难被破坏。
1.3 编码字符串的模式数目
(1) 模式总数
• 二进制字符串 假设字符的长度为,字符串中每一个字符可取( 0, 1, * ) 三个符号中任意 一个,可能组成的模式数目最多为: 3 3 3 … 3 = (2+1) • 一般情况下, 假设字符串长度为,字符的取值为 k 种,字符串组成的模式数目 n1 最多 为: n1=(k+1)
s3’’=11011(27), s4’’=10000(16)
变异
设变异率pm=0.001。
这样,群体S1中共有
5×4×0.001=0.02
位基因可以变异。 0.02位显然不足 1位,所以本轮遗传操作不 做变异。
于是,得到第二代种群S2:
s1=11001(25), s2=01100(12)
s3=11011(27), s4=10000(16)
(3) 计算各代种群中的各个体的适应度 , 并
对其染色体进行遗传操作,直到适应度最高的个
体(即31(11111))出现为止。
首先计算种群S1中各个体 s1= 13(01101), s2= 24(11000) s3= 8(01000), s4= 19(10011) 的适应度f (si) 。 容易求得 f (s1) = f(13) = 132 = 169 f (s2) = f(24) = 242 = 576 f (s3) = f(8) = 82 = 64 f (s4) = f(19) = 192 = 361
[结论] 从这个例子可以看比,我们在分析编码字符串时,常常只关心某一位或某几位 字符,而对其他字符不关心。换句话讲.我们只关心字符的某些特定形式,如 1****,11***,0****。这种特定的形式就叫模式。
Hale Waihona Puke 1.2 模式、模式阶及模式定义长度
模式(Schema)——指编码的字符串中具有类似特征的子集。 以五位二进制字符串为例,模式 *111* 可代表4个个体: 01110,01111, 11110,11111;模式 *0000 则代表2个个体:10000,00000 。
Y
Y
y=x2
y =x2
8 Y
13
19 24
X Y
12 16
25 27
X
第一代种群及其适应度
第二代种群及其适应度
y=x 2
y=x2
9
19 24 28
X
16
24 28 31 X
第三代种群及其适应度
第四代种群及其适应度
二、遗传算法的特点与优势
◆遗传算法的主要特点 ——遗传算法一般是直接在解空间搜索 , 而不像图搜索那样一般是在问题空间搜索 , 最 后才找到解。 ——遗传算法的搜索随机地始于搜索空间 的一个点集 , 而不像图搜索那样固定地始于搜 索空间的初始节点或终止节点 , 所以遗传算法 是一种随机搜索算法。
• 个体是由二值字符集 V={0, 1} 中的元素所组成的一个编码串; • 而模式却是由三值字符集 V={0, 1,* } 中的元素所组成的一个编码串,其中 “ * ” 表示通配符,它既可被当作 “1” 也可被当作 “0”。 模式阶 (Schema Order) ——指模式中已有明确含意(二进制字符时指0或1)的字符个数, 记做 o(s),式中 s 代表模式。 例如,模式 ( 011*1** ) 含有4个明确含意的字符,其阶次是4, 记作 o( 011*1** ) =4; 模式 ( 0****** ) 的阶次是1,记作 o( 0****** ) =1。