智能控制(第三版)chap10-智能算法及其应用2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一点交叉示意图
7
(3)变异(Mutation Operator) • 模拟基因突变现象,以小概率随机改变遗传基因
的值。 • 在染色体以二进制编码的系统中,它随机地将染
色体的某一个基因位由1变为0,或由0变为1。 • 优点:可使进化过程逃离局部最优解。
1011 0011 1011 1011
8
10.2 遗传算法的特点
• 因此,采用寻优算法求极大值时,需要避免陷 入局部最优解。
21
函数f(x1, x2)的三维图
22
10.5.1 二进制编码遗传算法求函数极大值
采用遗传算法求解该问题的构造过程: (1)确定决策变量和约束条件; (2)建立优化模型; (3)确定编码方法。
23
➢ 用长度为10位的二进制编码来分别表示两个决策 变量x1, x2。
为:
xi
4.096 yi 2.048 1023
(i 1,2)
例如,对染色体x:0000110111 1101110001,切断后
得到y1=55,y2=881。解码后,得到x1=-1.828, x2=1.476。
26
(5)确定个体评价方法:由于优化目标是求函数的 最大值,故可将个体的适应度直接取为对应的目标 函数值,即
上述七个步骤构成了用于求函数极大值的优化计算 基本遗传算法。
28
采用上述方法进行仿真,经过100步迭代,最佳样本为
BestS [00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
即当x1=-2.0480,x2=-2.0480时,Rosenbrock函 数具有极大值,极大值为3905.9。 仿真程序:chap10_1.m
解码 寻优结束
新种群
19
10.5 遗传算法求函数极大值
利用遗传算法求Rosenbrock函数的极大值
f
(x1,
x2
)
100(
x12
x2
)2
(1
x1 ) 2
2.048 xi 2.048
(i 1, 2)
20
• 函数f(x1, x2)的三维图如图10-2所示,可以发现 该函数在指定的定义域上有两个靠近的极值点, 即一个全局极大值和一个局部极大值。
第i+1个个体与第i个个体进行交叉
TempE(i,:)=alfa*E(i+1,:)+(1-alfa)*E(i,:); %交叉操作
• 周而复始,使群体中个体适应度不断提高,直到 满足一定的条件。
• 遗传算法可并行处理,得到全局最优解。
4
遗传算法的基本操作为: (1)复制(Reproduction Operator) • 从旧种群中选择生命力强的个体产生新种群。 • 通过随机方法实现。若设定复制概率阈值为40%,
当产生的随机数在0.4~1之间时,该个体被复制到子 代,否则该个体被淘汰。
遗传算法是以达尔文的自然选择学说为基础,包括 以下三个方面:
2
(1)遗传:亲代把生物信息交给子代,子代总是和亲 代具有相同或相似的性状。生物有了这个特征,物种 才能稳定存在。
(2)变异:亲代和子代之间以及子代的不同个体之间 的差异,称为变异。变异是随机发生的,变异的选择 和积累是生命多样性的根源。
5
(2)交叉(Crossover Operator) • 通过两个染色体的交换组合产生新的优良个体。 • 任选两个染色体,随机选择一点或多点交换点位置;
交换双亲染色体在交换点右边的部分,即可得到两 个新的染色体数字串。 • 有一点交叉、多点交叉等。 • 一点交叉:染色体断点仅有一处,例:
6
A: 101100 1110 101100 0101 B: 001010 0101 001010 1110
(1)对参数编码进行操作,而非对参数本身。因此, 在参数优化过程中可借鉴生物学中染色体和基因等概 念,模仿生物进化等机理; (2)同时使用多个搜索点的搜索信息。传统方法往往 是从解空间的单个初始点开始最优解的迭代搜索过程, 效率不高,有时甚至会陷入局部最优解而停滞不前。 以群体为基础进行搜索,效率高。
36
(5)设计遗传算子:选择运算使用比例选择算子, 交叉运算使用单点交叉算子,变异运算使用基本位变 异算子。 (6)确定遗传算法的运行参数:群体大小M=500,终 止进化代数G=200,交叉概率Pc=0.90,采用自适应变 异概率
Pm 0.101 fit[1:1:Size]/Size
即变异概率与适应度有关,适应度越小,变异概率越 大。
12
10.4 遗传算法的设计
10.4.1 遗传算法的构成要素
(1)染色体编码方法 基本遗传算法使用固定长度的二进制符号来表示群
体中的个体,其等位基因是由二值符号集{0, 1}所组成。 初始个体基因值可用均匀分布的随机值生成,如
x 10 0111 0010 0010 1101
表示一个个体,该个体的染色体长度是18。
m2=m(CodeL+1:1:2*CodeL); %取第2个变量x2的染色体 for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1); end x2=(umax-umin)*y2/1023+umin; F(s)=100*(x1^2-x2)^2+(1-x1)^2; %目标函数值 end
Best J
13
(2)个体适应度评价:每个个体的适应度代表了其遗 传到下一代的概率。为正确计算这个概率,要求所有个 体的适应度必须为正数或零。因此,必须先确定由目标 函数值J到个体适应度f之间的转换规则。
14
(3)遗传算子:三种基本遗传算子包括 ① 选择运算:使用比例选择算子; ② 交叉运算:使用单点交叉算子; ③ 变异运算:使用基本位变异算子或均匀变异算子。
书中程序出错!
29
%Generic Algorithm for function f(x1,x2) optimum clear all; close all;
%Parameters Size=80; %种群大小 G=100; %遗传代数 CodeL=10; %每个变量的染色体长度(2进制编码) umax=2.048; %两个变量的取值范围是相同的 umin=-2.048;
(3)生存斗争和适者生存:具有适应性变异的个体被 保留下来,不具有适应性变异的个体被淘汰,通过一 代代的生存环境的选择作用,性状逐渐与祖先有所不 同,演变为新的物种。
3
• 遗传算法引入“优胜劣汰,适者生存”的生物进 化机制,按所选择的适应度函数对个体进行筛选。
• 适应度高的个体被保留下来,组成新的群体,新 的群体既继承了上一代的信息,又优于上一代。
-4
x 10 3.5 3.4 3.3 3.2 3.1
3 2.9 2.8 2.7 2.6
0
20
40
60
Times
80
100
Best F
3900 3800 3700 3600 3500 3400 3300 3200 3100 3000 2900
0
20
40
60
80
100
times
遗传算法的优化过程是目标函数J和适应度函数F 的变化过程。
15
(4)基本遗传算法的运行参数 有下述4个运行参数需要提前设定:
M:群体大小,即群体中所含个体的数量,一般取为 20~100; G:遗传算法的终止进化代数,一般取为100~500; Pc:交叉概率,一般取为0.4~0.99;
Pm:变异概率,一般取为0.0001~0.1。
16
10.4.2 遗传算法的应用步骤
第10章 智能算法及其应用
1. 随着优化理论的发展,一些智能算法成为解决传 统系统辨识问题的新方法,如遗传算法、 蚁群 算法、 粒子群算法、差分进化算法等。
2. 都是通过模拟揭示自然现象来实现的。 3. 本章介绍遗传算法的基本概念和方法。
10.1 遗传算法的基本原理
遗传算法简称GA(Genetic Algorithms)是1962年 由美国Holland教授提出的模拟自然界生物进化机制 的一种并行随机搜索最优化方法。
10
(6)遗传算法对于待寻优的函数基本无限制,它既不 要求函数连续,也不要求函数可微,既可以是数学解 析式所表示的显函数,又可以是映射矩阵甚至是神经 网络的隐函数,因而应用范围较广; (7)遗传算法具有并行计算的特点,因而可通过大规 模并行计算来提高计算速度,适合大规模复杂问题的 优化。
11
10.3 遗传算法的发展及应用 自学。
9
(3)遗传算法直接以目标函数作为搜索信息,无需目 标函数的导数值等其他一些辅助信息。适用于目标函 数无法求导数或导数不存在的优化问题,或者组合优 化问题等。 (4)遗传算法使用概率搜索技术。各种操作:选择、 交叉、变异等都是以概率的方式进行的。 (5)遗传算法在解空间进行高效启发式搜索,而非盲 目地穷举或完全随机搜索;
S5:设计遗传算子,即确定选择、交叉、变异运算等 遗传算子的具体操作方法;
S6:确定遗传算法的有关运行参数,即M, G, Pc, Pm 等参数;
S7:确定解码方法,即确定出由个体表现形式到个体 基因的对应关系或转换方法。
18
遗传算法流程图
参数 编码
种群
计算适应度
是 满足要求?
复制 交叉 变异
否 遗传操作
➢ 将x1, x2的定义域离散化为1023个均等的区域,共 获得1024个离散点。
➢ 离散点分别与取值区间的二进制编码相对应。
0000000000(0) -2.048
Biblioteka Baidu
1111111111(1023) 2.048
24
➢ 将x1, x2的编码串接在一起,得到20位长的参数编码。 这就是该函数优化问题的染色体编码。
37
上述六个步骤构成了用于求函数Rosenbrock极大值 的实数编码遗传算法,仿真程序见chap10_2.m。
%************ Step 3 : 交叉操作 ************
Pc=0.90; %交叉概率
for i=1:2:(Size-1)
temp=rand;
if Pc>temp alfa=rand;
(3)确定编码方法:用2个实数分别表示两个 决策变量x1, x2,分别将x1, x2的定义域离散化 为从离散点-2.048到离散点2.048的Size个实 数。
35
(4)确定个体评价方法: 个体的适应度直接取为对应的目标函数值,
即 F(x) f (x1, x2 )
选个体适应度的倒数作为目标函数
J(x) 1 F(x)
F(x) f (x1, x2 )
选择个体适应度的倒数作为目标函数 min J ( x) 1 F(x)
27
(6)设计遗传算子:选择运算使用比例选择算子,交 叉运算使用单点交叉算子,变异运算使用基本位变异 算子。 (7)确定遗传算法的运行参数:群体大小M=80,终 止 进 化 代 数 G=100 , 交 叉 概 率 Pc=0.60 , 变 异 概 率 Pm=0.10。
由仿真结果可知,随着进化过程的进行,群体中 适应度较低的一些个体被逐渐淘汰掉,而适应度较高 的一些个体会越来越多,并且它们都集中在所求问题 的最优点附近,从而搜索到问题的最优解。
34
10.5.2 实数编码遗传算法求函数极大值
求解该问题遗传算法的构造过程:
(1)确定决策变量和约束条件;
(2)建立优化模型;
构造遗传算法解决优化问题的步骤: S1:确定决策变量及各种约束条件,即确定个体的表
现形式和问题的解空间; S2:建立优化模型,即确定目标函数的描述形式或量
化方法; S3:确定表示可行解的染色体编码方法,即确定个体
的基因形式及遗传算法的搜索空间;
17
S4:确定个体适应度的量化评价方法,即确定由目标 函数值J(x)到个体适应度函数F(x)的转换规则;
➢ 解空间和搜索空间具有一一对应关系。 例如:某个体的基因型如下
x : 0000110111 1101110001
其中前10位表示x1,后10位表示x2。
25
(4)解码时,将20位长的二进制编码串切断为两个
10位长的二进制编码串,然后分别将它们转换为对应
的十进制整数代码,分别记为y1和y2。 依据前面的方法,将代码yi转换为变量xi的解码公式
%初始种群的染色体 E=round(rand(Size, 2*CodeL));
for k=1:1:G time(k)=k;
for s=1:1:Size m=E(s,:); y1=0; y2=0;
m1=m(1:1:CodeL); %取第1个变量x1的染色体 for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1); %求对应的十进制数 end x1=(umax-umin)*y1/1023+umin; %解码,求变量x1的值
7
(3)变异(Mutation Operator) • 模拟基因突变现象,以小概率随机改变遗传基因
的值。 • 在染色体以二进制编码的系统中,它随机地将染
色体的某一个基因位由1变为0,或由0变为1。 • 优点:可使进化过程逃离局部最优解。
1011 0011 1011 1011
8
10.2 遗传算法的特点
• 因此,采用寻优算法求极大值时,需要避免陷 入局部最优解。
21
函数f(x1, x2)的三维图
22
10.5.1 二进制编码遗传算法求函数极大值
采用遗传算法求解该问题的构造过程: (1)确定决策变量和约束条件; (2)建立优化模型; (3)确定编码方法。
23
➢ 用长度为10位的二进制编码来分别表示两个决策 变量x1, x2。
为:
xi
4.096 yi 2.048 1023
(i 1,2)
例如,对染色体x:0000110111 1101110001,切断后
得到y1=55,y2=881。解码后,得到x1=-1.828, x2=1.476。
26
(5)确定个体评价方法:由于优化目标是求函数的 最大值,故可将个体的适应度直接取为对应的目标 函数值,即
上述七个步骤构成了用于求函数极大值的优化计算 基本遗传算法。
28
采用上述方法进行仿真,经过100步迭代,最佳样本为
BestS [00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
即当x1=-2.0480,x2=-2.0480时,Rosenbrock函 数具有极大值,极大值为3905.9。 仿真程序:chap10_1.m
解码 寻优结束
新种群
19
10.5 遗传算法求函数极大值
利用遗传算法求Rosenbrock函数的极大值
f
(x1,
x2
)
100(
x12
x2
)2
(1
x1 ) 2
2.048 xi 2.048
(i 1, 2)
20
• 函数f(x1, x2)的三维图如图10-2所示,可以发现 该函数在指定的定义域上有两个靠近的极值点, 即一个全局极大值和一个局部极大值。
第i+1个个体与第i个个体进行交叉
TempE(i,:)=alfa*E(i+1,:)+(1-alfa)*E(i,:); %交叉操作
• 周而复始,使群体中个体适应度不断提高,直到 满足一定的条件。
• 遗传算法可并行处理,得到全局最优解。
4
遗传算法的基本操作为: (1)复制(Reproduction Operator) • 从旧种群中选择生命力强的个体产生新种群。 • 通过随机方法实现。若设定复制概率阈值为40%,
当产生的随机数在0.4~1之间时,该个体被复制到子 代,否则该个体被淘汰。
遗传算法是以达尔文的自然选择学说为基础,包括 以下三个方面:
2
(1)遗传:亲代把生物信息交给子代,子代总是和亲 代具有相同或相似的性状。生物有了这个特征,物种 才能稳定存在。
(2)变异:亲代和子代之间以及子代的不同个体之间 的差异,称为变异。变异是随机发生的,变异的选择 和积累是生命多样性的根源。
5
(2)交叉(Crossover Operator) • 通过两个染色体的交换组合产生新的优良个体。 • 任选两个染色体,随机选择一点或多点交换点位置;
交换双亲染色体在交换点右边的部分,即可得到两 个新的染色体数字串。 • 有一点交叉、多点交叉等。 • 一点交叉:染色体断点仅有一处,例:
6
A: 101100 1110 101100 0101 B: 001010 0101 001010 1110
(1)对参数编码进行操作,而非对参数本身。因此, 在参数优化过程中可借鉴生物学中染色体和基因等概 念,模仿生物进化等机理; (2)同时使用多个搜索点的搜索信息。传统方法往往 是从解空间的单个初始点开始最优解的迭代搜索过程, 效率不高,有时甚至会陷入局部最优解而停滞不前。 以群体为基础进行搜索,效率高。
36
(5)设计遗传算子:选择运算使用比例选择算子, 交叉运算使用单点交叉算子,变异运算使用基本位变 异算子。 (6)确定遗传算法的运行参数:群体大小M=500,终 止进化代数G=200,交叉概率Pc=0.90,采用自适应变 异概率
Pm 0.101 fit[1:1:Size]/Size
即变异概率与适应度有关,适应度越小,变异概率越 大。
12
10.4 遗传算法的设计
10.4.1 遗传算法的构成要素
(1)染色体编码方法 基本遗传算法使用固定长度的二进制符号来表示群
体中的个体,其等位基因是由二值符号集{0, 1}所组成。 初始个体基因值可用均匀分布的随机值生成,如
x 10 0111 0010 0010 1101
表示一个个体,该个体的染色体长度是18。
m2=m(CodeL+1:1:2*CodeL); %取第2个变量x2的染色体 for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1); end x2=(umax-umin)*y2/1023+umin; F(s)=100*(x1^2-x2)^2+(1-x1)^2; %目标函数值 end
Best J
13
(2)个体适应度评价:每个个体的适应度代表了其遗 传到下一代的概率。为正确计算这个概率,要求所有个 体的适应度必须为正数或零。因此,必须先确定由目标 函数值J到个体适应度f之间的转换规则。
14
(3)遗传算子:三种基本遗传算子包括 ① 选择运算:使用比例选择算子; ② 交叉运算:使用单点交叉算子; ③ 变异运算:使用基本位变异算子或均匀变异算子。
书中程序出错!
29
%Generic Algorithm for function f(x1,x2) optimum clear all; close all;
%Parameters Size=80; %种群大小 G=100; %遗传代数 CodeL=10; %每个变量的染色体长度(2进制编码) umax=2.048; %两个变量的取值范围是相同的 umin=-2.048;
(3)生存斗争和适者生存:具有适应性变异的个体被 保留下来,不具有适应性变异的个体被淘汰,通过一 代代的生存环境的选择作用,性状逐渐与祖先有所不 同,演变为新的物种。
3
• 遗传算法引入“优胜劣汰,适者生存”的生物进 化机制,按所选择的适应度函数对个体进行筛选。
• 适应度高的个体被保留下来,组成新的群体,新 的群体既继承了上一代的信息,又优于上一代。
-4
x 10 3.5 3.4 3.3 3.2 3.1
3 2.9 2.8 2.7 2.6
0
20
40
60
Times
80
100
Best F
3900 3800 3700 3600 3500 3400 3300 3200 3100 3000 2900
0
20
40
60
80
100
times
遗传算法的优化过程是目标函数J和适应度函数F 的变化过程。
15
(4)基本遗传算法的运行参数 有下述4个运行参数需要提前设定:
M:群体大小,即群体中所含个体的数量,一般取为 20~100; G:遗传算法的终止进化代数,一般取为100~500; Pc:交叉概率,一般取为0.4~0.99;
Pm:变异概率,一般取为0.0001~0.1。
16
10.4.2 遗传算法的应用步骤
第10章 智能算法及其应用
1. 随着优化理论的发展,一些智能算法成为解决传 统系统辨识问题的新方法,如遗传算法、 蚁群 算法、 粒子群算法、差分进化算法等。
2. 都是通过模拟揭示自然现象来实现的。 3. 本章介绍遗传算法的基本概念和方法。
10.1 遗传算法的基本原理
遗传算法简称GA(Genetic Algorithms)是1962年 由美国Holland教授提出的模拟自然界生物进化机制 的一种并行随机搜索最优化方法。
10
(6)遗传算法对于待寻优的函数基本无限制,它既不 要求函数连续,也不要求函数可微,既可以是数学解 析式所表示的显函数,又可以是映射矩阵甚至是神经 网络的隐函数,因而应用范围较广; (7)遗传算法具有并行计算的特点,因而可通过大规 模并行计算来提高计算速度,适合大规模复杂问题的 优化。
11
10.3 遗传算法的发展及应用 自学。
9
(3)遗传算法直接以目标函数作为搜索信息,无需目 标函数的导数值等其他一些辅助信息。适用于目标函 数无法求导数或导数不存在的优化问题,或者组合优 化问题等。 (4)遗传算法使用概率搜索技术。各种操作:选择、 交叉、变异等都是以概率的方式进行的。 (5)遗传算法在解空间进行高效启发式搜索,而非盲 目地穷举或完全随机搜索;
S5:设计遗传算子,即确定选择、交叉、变异运算等 遗传算子的具体操作方法;
S6:确定遗传算法的有关运行参数,即M, G, Pc, Pm 等参数;
S7:确定解码方法,即确定出由个体表现形式到个体 基因的对应关系或转换方法。
18
遗传算法流程图
参数 编码
种群
计算适应度
是 满足要求?
复制 交叉 变异
否 遗传操作
➢ 将x1, x2的定义域离散化为1023个均等的区域,共 获得1024个离散点。
➢ 离散点分别与取值区间的二进制编码相对应。
0000000000(0) -2.048
Biblioteka Baidu
1111111111(1023) 2.048
24
➢ 将x1, x2的编码串接在一起,得到20位长的参数编码。 这就是该函数优化问题的染色体编码。
37
上述六个步骤构成了用于求函数Rosenbrock极大值 的实数编码遗传算法,仿真程序见chap10_2.m。
%************ Step 3 : 交叉操作 ************
Pc=0.90; %交叉概率
for i=1:2:(Size-1)
temp=rand;
if Pc>temp alfa=rand;
(3)确定编码方法:用2个实数分别表示两个 决策变量x1, x2,分别将x1, x2的定义域离散化 为从离散点-2.048到离散点2.048的Size个实 数。
35
(4)确定个体评价方法: 个体的适应度直接取为对应的目标函数值,
即 F(x) f (x1, x2 )
选个体适应度的倒数作为目标函数
J(x) 1 F(x)
F(x) f (x1, x2 )
选择个体适应度的倒数作为目标函数 min J ( x) 1 F(x)
27
(6)设计遗传算子:选择运算使用比例选择算子,交 叉运算使用单点交叉算子,变异运算使用基本位变异 算子。 (7)确定遗传算法的运行参数:群体大小M=80,终 止 进 化 代 数 G=100 , 交 叉 概 率 Pc=0.60 , 变 异 概 率 Pm=0.10。
由仿真结果可知,随着进化过程的进行,群体中 适应度较低的一些个体被逐渐淘汰掉,而适应度较高 的一些个体会越来越多,并且它们都集中在所求问题 的最优点附近,从而搜索到问题的最优解。
34
10.5.2 实数编码遗传算法求函数极大值
求解该问题遗传算法的构造过程:
(1)确定决策变量和约束条件;
(2)建立优化模型;
构造遗传算法解决优化问题的步骤: S1:确定决策变量及各种约束条件,即确定个体的表
现形式和问题的解空间; S2:建立优化模型,即确定目标函数的描述形式或量
化方法; S3:确定表示可行解的染色体编码方法,即确定个体
的基因形式及遗传算法的搜索空间;
17
S4:确定个体适应度的量化评价方法,即确定由目标 函数值J(x)到个体适应度函数F(x)的转换规则;
➢ 解空间和搜索空间具有一一对应关系。 例如:某个体的基因型如下
x : 0000110111 1101110001
其中前10位表示x1,后10位表示x2。
25
(4)解码时,将20位长的二进制编码串切断为两个
10位长的二进制编码串,然后分别将它们转换为对应
的十进制整数代码,分别记为y1和y2。 依据前面的方法,将代码yi转换为变量xi的解码公式
%初始种群的染色体 E=round(rand(Size, 2*CodeL));
for k=1:1:G time(k)=k;
for s=1:1:Size m=E(s,:); y1=0; y2=0;
m1=m(1:1:CodeL); %取第1个变量x1的染色体 for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1); %求对应的十进制数 end x1=(umax-umin)*y1/1023+umin; %解码,求变量x1的值