MATLAB遗传算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB遗传算法
能源与动力工程学院
College of Energy and Power Engineering
研 究 生:王宇 日 期:2018-5-14
規格嚴格 功夫到家
基本原理
一、遗传算法的简单原理
遗传算法(Genetic Algorithm)是一种基于自然群体遗传演化机制的高效 探索算法,它摒弃了传统的搜索方式,模拟自然界生物进化过程,采用人工 进化的方式对目标空间进行随机化搜索。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
• 遗传算法运算流程
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
四、遗传算法基本原理与方法
1、编码
程。遗传算法使用选择算子来对群体中的个体进行优胜劣汰操作: 根据每个个体的适应度值大小选择,适应度较高的个体被遗传到下 一代的概率较大,适应度较低的个体被遗传到下一代的概率较小。 这样就可以使群体中个体的适应度值不断接近最优解。
选择的方式有轮盘赌选择、随机竞争选择、最佳保留选择、无 回访随机选择、均匀选择等。
PRECI
lb
ub
FieldD= code
scale
lbin
ubin
PRECI表示二进制的位数,lb、ub表示未知数求解区间上下限 ,code是二进制行向量,指明每个子串是怎样编码的。Code(i)=1 表示二进制编码, Code(i)=0表示格雷编码。Scale指明每个子串 是否使用对数或者算术刻度。Lbin和ubin表示是否包含每个边界。 以上步骤称为解码。
U1 [x1, x2 ] U2 [x1, x2 ] .... U10 [x1, x2 ]
第四步,确定个体评价方法 (1).评价目标函数 f (xk , xk )
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
2、群体搜索特性。遗传算法同时处理群体中的多个个体,即对搜索 空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本 身易于实现并行化。
3、不需要辅助信息。遗传算法基本上不用搜索空间的知识或其它辅 助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。 适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。这 一特点使得遗传算法的应用范围大大扩展。
6、具有自组织、自适应和自学习性。遗传算法利用进化过程获得的 信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更 适应环境的基因结构。
(2)遗传算法的缺点
1、编码不规范及编码存在表示的不确定性 。
2、遗传算法通常效率比其他传统的优化方法低。
3、遗传算法容易出现过早收敛。
4、遗传算法在算法的精度、可信度、计算复杂性等方面,还没有有 效的定量分析方法。
ObjV OBJFUN (Phen)
y1,1 y1,2
y2,1 ...
y 2,2
y y Nind ,1 Nind ,2
... y 1,Nvar ... y 2,Nvar
...
... y Nind ,Nvar
适应度值是由目标函数值通过计算或者评定等级而得出的。适应
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
4、遗传算法不是采用确定性规则,而是采用概率的wenku.baidu.com迁规则来指导 他的搜索方向。
5、遗传算法在搜索中不容易陷入局部最优,即在所定义的适应度函 数是不连续的、非规则的或者有噪声的情况下,也能以很大的概率找到 全局最优解。
它将问题域中的可能解看作是群体的一个个体或染色体,并将每一个体 编码成符号串形式,模拟达尔文的遗传选择和自然淘汰的生物进化过程,对 群体反复进行基于遗传学的操作(遗传,交叉和变异),根据预定的目标适 应度函数对每个个体进行评价,依据适者生存,优胜劣汰的进化规则,不断 得到更优的群体,同时以全局并行搜索方式来搜索优化群体中的最优个体, 求得满足要求的最优解。
U10 [000110100000101011000000011101010]
(2)交叉运算
假设使用某种交叉方式,U5和U7 被选择为交叉的父辈,随机选择一个
整数作为交叉点,则成为
U
5*和U
* 7
(3)变异运算
假设染色体 U1 的某一位基因产生变异,即如果该位基因是1,则变
异后为0,即 U1变为U1* 。将变异概率设为 Pm 0.01 ,就是说希望平均水 平上,种群内所有基因的1%要进行变异。在变异完成后,得到最终的下
遗传算法
初始种群可生成如下:
U1 [101010100000101011000000011101010] U2 [101110010100101011000000011101010] .... U10 [000110100000101011000000011101010]
第三步,确定解码方法。 即将随机产生初始种群的二进制串返回一个实际值。
度是一存在长度为 Nind 的列向量中。以下给出例子
Fitnv FITNESS(ObjV );
f1
=
f2
...
fNind
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
3、选择 又称为复制,是群体中选择生命力强的个体产生新的群体的过
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
从二进制初值到实值需要进行转换,以便进行后期适应度计算 ,工具箱中使用bs2rv函数实现。通用表达式如下: bs2rv(Chrom,FieldD) 根据译码矩阵FieldD将二进制串矩阵Chrom 转换为实值矩阵。其中, FieldD有如下结构:
由以上数据可以得出,最虚弱和最健壮的染色体。 第五步,设计遗传算子和确定遗传算法的运行参数
(1)选择算子的使用。使用一定的选择方法选出新的种群。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
U1 [101010100000101011000000011101010] U2 [101110010100101011000000011101010] ....
第二步,确定编码方法。
将变量转换成二进制串,首先随机生成二进制的初始种群。根据精度 要求设置初始变量串的长度。本例中假设x1的二进制码为18位,x2的二进制 码为15位,随机产生的个体数目为10个。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
通常,目标函数被存储在大小为 Nind * Nobj 的数字矩阵中,这里 Nind
是目标的数量。每一行对应一单独个体的目标矢量。目标函数值数据 结构例子在下面给出,用OBJFUN表示一任意的目标函数。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
一代种群;
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
U1* [101010100000101011000000011101010]
U
* 2
[101110010100101011000000011101010]
....
U1*0 [000110100000101011000000011101010]
相应的变量的适应度值为
eval(U1*) f [x1, x2 ] y1*
eval
(U
* 2
)
f [x1, x2 ]
y2*
....
eval(U1*0 ) f [x1, x2 ] y1*0
至此,完成了遗传算法的第一代操作流程。设计中止代数为N,可 以找到最佳的染色体 U * 。得到适应度为 eval(U *) f [x1, x2 ] y* 即目标函 数的最大值为 f [x1, x2 ] y*
工具箱中使用select函数实现,表达式如下 SelCh=select(‘sus’,Chrom,Fitnv,GGAP),第一项为选择方式, 通常用sus函数(轮盘赌选择)和rws函数(随机遍历抽样)进行选 择。Chrom,表示种群Fitnv指适应度的值,GGAP是可选参数,指出了 代沟,部分种群被复制。表示有父代GGAP倍的部分筛选存活下来, 通常选取0.6-0.9.
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
二、遗传算法基本步骤
遗传算法模拟了自然选择和遗传中发生的复制、交叉和变异等现象, 从任一初始种群出发,通过随机选择、交叉和变异操作,产生一群更适合 环境的个体,使得群体进化到搜索空间越来越好的区域,这样一代一代地 不断繁衍进化,最后收敛到一群最适合环境的个体,求得问题的最优解。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
2、适应度函数
适应度函数也称为评价函数,是根据目标函数确定的用于区分群 体中个体好坏的标准,用其来度量各个个体在优化计算中能达到或者接 近于或有助于找到最优解的优良程序。
适应度函数总是非负的,任何情况下都是希望其值越大越好。而 目标函数可能有正有负,即有时求最大值,有时求最小值,因此需要 在目标函数和适应度函数之间进行变换。
在遗传算法中,把一个问题的可行解从其解空间转换到遗传算 法所能处理的搜索空间的转换方法就成为编码。
二进制编码:是遗传算法中最主要的编码方法,使用的编码符 号是由二进制的0和1组成的二值符号集,它所构成的个体基因型是一个 二进制编码符号串。它具有以下特点:(1) 简单易行;(2) 符合最小字 符集编码原则;(3) 便于用模式定理进行分析。
通过一个简单例子来了解遗传算法的原理: 假定我们要求函数
max f (x1, x2 ) 21.5 x1 sin(4 x1) x2 sin(20 x2) -3 x1 12.1, 4.1 x2 5.8
下面介绍优化问题遗传算法的构造过程。
第一步,确定变量和约束条件,建立优化模型。
格雷码编码:格雷码是二进制码的一种变形。浮点数编码方法、 多参数交叉编码
程序编写中用工具箱中crtbp建立二进制初始种群,通用表达式 如下: Chrom=crtbp(NIND,PRECI) ,PRECI表示二进制的位数,NIND表 示个体数目。这样,初始种群可用随机产生数来生成,这一步骤是编码 。
能源与动力工程学院
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
二、遗传算法的特点
(1)遗传算法的优点
1、对可行解表示的广泛性。遗传算法的处理对象不是参数本身,而 是那些通过参数进行编码得到的基因个体。此编码操作使得遗传算法可 以直接对结构对象进行操作。所谓结构对象,泛指集合、序列、树、和 表等各种一维或二维甚至多维结构形式的对象。这一特点使得遗传算法 具有广泛的应用领域。
(2)将目标函数转为适应度。对于极大值问题,适应度就等于目标函 数,即
eval(Uk ) f (xk , xk ), k 1, 2,...
在遗传算法中,评价函数起着自然进化中环境的角色,它通过染色 体的适应度进行评价。上述染色体的适应度如下:
eval(U1) f [x1, x2 ] y1 eval(U2 ) f [x1, x2 ] y2 .... eval(U10 ) f [x1, x2 ] yk
能源与动力工程学院
College of Energy and Power Engineering
研 究 生:王宇 日 期:2018-5-14
規格嚴格 功夫到家
基本原理
一、遗传算法的简单原理
遗传算法(Genetic Algorithm)是一种基于自然群体遗传演化机制的高效 探索算法,它摒弃了传统的搜索方式,模拟自然界生物进化过程,采用人工 进化的方式对目标空间进行随机化搜索。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
• 遗传算法运算流程
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
四、遗传算法基本原理与方法
1、编码
程。遗传算法使用选择算子来对群体中的个体进行优胜劣汰操作: 根据每个个体的适应度值大小选择,适应度较高的个体被遗传到下 一代的概率较大,适应度较低的个体被遗传到下一代的概率较小。 这样就可以使群体中个体的适应度值不断接近最优解。
选择的方式有轮盘赌选择、随机竞争选择、最佳保留选择、无 回访随机选择、均匀选择等。
PRECI
lb
ub
FieldD= code
scale
lbin
ubin
PRECI表示二进制的位数,lb、ub表示未知数求解区间上下限 ,code是二进制行向量,指明每个子串是怎样编码的。Code(i)=1 表示二进制编码, Code(i)=0表示格雷编码。Scale指明每个子串 是否使用对数或者算术刻度。Lbin和ubin表示是否包含每个边界。 以上步骤称为解码。
U1 [x1, x2 ] U2 [x1, x2 ] .... U10 [x1, x2 ]
第四步,确定个体评价方法 (1).评价目标函数 f (xk , xk )
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
2、群体搜索特性。遗传算法同时处理群体中的多个个体,即对搜索 空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本 身易于实现并行化。
3、不需要辅助信息。遗传算法基本上不用搜索空间的知识或其它辅 助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。 适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。这 一特点使得遗传算法的应用范围大大扩展。
6、具有自组织、自适应和自学习性。遗传算法利用进化过程获得的 信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更 适应环境的基因结构。
(2)遗传算法的缺点
1、编码不规范及编码存在表示的不确定性 。
2、遗传算法通常效率比其他传统的优化方法低。
3、遗传算法容易出现过早收敛。
4、遗传算法在算法的精度、可信度、计算复杂性等方面,还没有有 效的定量分析方法。
ObjV OBJFUN (Phen)
y1,1 y1,2
y2,1 ...
y 2,2
y y Nind ,1 Nind ,2
... y 1,Nvar ... y 2,Nvar
...
... y Nind ,Nvar
适应度值是由目标函数值通过计算或者评定等级而得出的。适应
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
4、遗传算法不是采用确定性规则,而是采用概率的wenku.baidu.com迁规则来指导 他的搜索方向。
5、遗传算法在搜索中不容易陷入局部最优,即在所定义的适应度函 数是不连续的、非规则的或者有噪声的情况下,也能以很大的概率找到 全局最优解。
它将问题域中的可能解看作是群体的一个个体或染色体,并将每一个体 编码成符号串形式,模拟达尔文的遗传选择和自然淘汰的生物进化过程,对 群体反复进行基于遗传学的操作(遗传,交叉和变异),根据预定的目标适 应度函数对每个个体进行评价,依据适者生存,优胜劣汰的进化规则,不断 得到更优的群体,同时以全局并行搜索方式来搜索优化群体中的最优个体, 求得满足要求的最优解。
U10 [000110100000101011000000011101010]
(2)交叉运算
假设使用某种交叉方式,U5和U7 被选择为交叉的父辈,随机选择一个
整数作为交叉点,则成为
U
5*和U
* 7
(3)变异运算
假设染色体 U1 的某一位基因产生变异,即如果该位基因是1,则变
异后为0,即 U1变为U1* 。将变异概率设为 Pm 0.01 ,就是说希望平均水 平上,种群内所有基因的1%要进行变异。在变异完成后,得到最终的下
遗传算法
初始种群可生成如下:
U1 [101010100000101011000000011101010] U2 [101110010100101011000000011101010] .... U10 [000110100000101011000000011101010]
第三步,确定解码方法。 即将随机产生初始种群的二进制串返回一个实际值。
度是一存在长度为 Nind 的列向量中。以下给出例子
Fitnv FITNESS(ObjV );
f1
=
f2
...
fNind
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
3、选择 又称为复制,是群体中选择生命力强的个体产生新的群体的过
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
从二进制初值到实值需要进行转换,以便进行后期适应度计算 ,工具箱中使用bs2rv函数实现。通用表达式如下: bs2rv(Chrom,FieldD) 根据译码矩阵FieldD将二进制串矩阵Chrom 转换为实值矩阵。其中, FieldD有如下结构:
由以上数据可以得出,最虚弱和最健壮的染色体。 第五步,设计遗传算子和确定遗传算法的运行参数
(1)选择算子的使用。使用一定的选择方法选出新的种群。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
U1 [101010100000101011000000011101010] U2 [101110010100101011000000011101010] ....
第二步,确定编码方法。
将变量转换成二进制串,首先随机生成二进制的初始种群。根据精度 要求设置初始变量串的长度。本例中假设x1的二进制码为18位,x2的二进制 码为15位,随机产生的个体数目为10个。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
通常,目标函数被存储在大小为 Nind * Nobj 的数字矩阵中,这里 Nind
是目标的数量。每一行对应一单独个体的目标矢量。目标函数值数据 结构例子在下面给出,用OBJFUN表示一任意的目标函数。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
一代种群;
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
U1* [101010100000101011000000011101010]
U
* 2
[101110010100101011000000011101010]
....
U1*0 [000110100000101011000000011101010]
相应的变量的适应度值为
eval(U1*) f [x1, x2 ] y1*
eval
(U
* 2
)
f [x1, x2 ]
y2*
....
eval(U1*0 ) f [x1, x2 ] y1*0
至此,完成了遗传算法的第一代操作流程。设计中止代数为N,可 以找到最佳的染色体 U * 。得到适应度为 eval(U *) f [x1, x2 ] y* 即目标函 数的最大值为 f [x1, x2 ] y*
工具箱中使用select函数实现,表达式如下 SelCh=select(‘sus’,Chrom,Fitnv,GGAP),第一项为选择方式, 通常用sus函数(轮盘赌选择)和rws函数(随机遍历抽样)进行选 择。Chrom,表示种群Fitnv指适应度的值,GGAP是可选参数,指出了 代沟,部分种群被复制。表示有父代GGAP倍的部分筛选存活下来, 通常选取0.6-0.9.
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
二、遗传算法基本步骤
遗传算法模拟了自然选择和遗传中发生的复制、交叉和变异等现象, 从任一初始种群出发,通过随机选择、交叉和变异操作,产生一群更适合 环境的个体,使得群体进化到搜索空间越来越好的区域,这样一代一代地 不断繁衍进化,最后收敛到一群最适合环境的个体,求得问题的最优解。
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
2、适应度函数
适应度函数也称为评价函数,是根据目标函数确定的用于区分群 体中个体好坏的标准,用其来度量各个个体在优化计算中能达到或者接 近于或有助于找到最优解的优良程序。
适应度函数总是非负的,任何情况下都是希望其值越大越好。而 目标函数可能有正有负,即有时求最大值,有时求最小值,因此需要 在目标函数和适应度函数之间进行变换。
在遗传算法中,把一个问题的可行解从其解空间转换到遗传算 法所能处理的搜索空间的转换方法就成为编码。
二进制编码:是遗传算法中最主要的编码方法,使用的编码符 号是由二进制的0和1组成的二值符号集,它所构成的个体基因型是一个 二进制编码符号串。它具有以下特点:(1) 简单易行;(2) 符合最小字 符集编码原则;(3) 便于用模式定理进行分析。
通过一个简单例子来了解遗传算法的原理: 假定我们要求函数
max f (x1, x2 ) 21.5 x1 sin(4 x1) x2 sin(20 x2) -3 x1 12.1, 4.1 x2 5.8
下面介绍优化问题遗传算法的构造过程。
第一步,确定变量和约束条件,建立优化模型。
格雷码编码:格雷码是二进制码的一种变形。浮点数编码方法、 多参数交叉编码
程序编写中用工具箱中crtbp建立二进制初始种群,通用表达式 如下: Chrom=crtbp(NIND,PRECI) ,PRECI表示二进制的位数,NIND表 示个体数目。这样,初始种群可用随机产生数来生成,这一步骤是编码 。
能源与动力工程学院
能源与动力工程学院
College of Energy and Power Engineering
規格嚴格 功夫到家
遗传算法
二、遗传算法的特点
(1)遗传算法的优点
1、对可行解表示的广泛性。遗传算法的处理对象不是参数本身,而 是那些通过参数进行编码得到的基因个体。此编码操作使得遗传算法可 以直接对结构对象进行操作。所谓结构对象,泛指集合、序列、树、和 表等各种一维或二维甚至多维结构形式的对象。这一特点使得遗传算法 具有广泛的应用领域。
(2)将目标函数转为适应度。对于极大值问题,适应度就等于目标函 数,即
eval(Uk ) f (xk , xk ), k 1, 2,...
在遗传算法中,评价函数起着自然进化中环境的角色,它通过染色 体的适应度进行评价。上述染色体的适应度如下:
eval(U1) f [x1, x2 ] y1 eval(U2 ) f [x1, x2 ] y2 .... eval(U10 ) f [x1, x2 ] yk