- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
遗传算法求解函数优化问题的比较
遗传算法求解函数优化问题的比较
多极值点函数具有多个极值,对此问题,传统的优化技术很容易陷入局部最优解,求得全局优化解的概率不高,可靠性低;为此,建立尽可能大概率的求解全局优化解算法是求解函数优化的一个重要问题。
遗传算法是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传制)演化而来的随机搜索和优化方法,是当今影响最广泛的进化计算方法之一,是进化计算理论体系的中心。遗传算法借鉴了物种进化的思想,将欲求解问题编码,把可行解表示成字符串形式。初始化随机产生一个种群,用合理的评价函数对种群进行评估,在此基础上进行选择、交叉及变异等遗传操作。选择算子根据父代中个体适值大小进行选择或淘汰,它保证了算法的最优搜索方向。交叉算子模拟基因重组及随机信息交换,产生更好个体,使其在可行域内有效搜索。变异算子模拟基因突变,保证了遗传算法的全局搜索能力。遗传算法的搜索能力主要由选择算子及交叉算子赋存,变异算子尽可能保证算法达到全局最优,避免陷入局部最优。
遗传算法中的各个模块如下所示
1、编码
将数据进行二进制编码,其规则如下:设某一参数的取值范围为(L,U),使用长度为k的二进制编码表示该参数,则它共有2k种不同的编码。该参数编码时代对应关系为
00000000000000=0->L
00000000000001=1->L+Δ
00000000000010=2->L+2Δ
00000000000011=3->L+3Δ
……
11111111111111=2k-1->U
2、解码
解码的目的是为了将不直观的二进制数据串还成十进制。是编码过程的逆过程。
3、初始种群
随机产生k位的0、1排列,将该排列数来表示一个染色体,每个染色体代表一个初始值。初始种群就是随机产生数量为群体规模的染色体。
4、选择
这里选择轮盘赌方法,轮盘赌选择又称适应度比例选择方法,是最常见也是最为著名的选择方法,由Holland 教授提出。基本原理是根据个体适应值的比例来确定个体的选择概率,是一个随机采样的过程。为了防止当前群体的最优个体在下一代发生丢失,导致遗传算法不能收敛到全局最优解,引入了精英选择策略。
5、杂交
假设个体A和B被选择进行杂交。首先在个体中随机选择一个交配区域,如随机产生一个1到k的数,在个体A、B在该随机数后的染色体进行交换。如
交换前
A110000
B001111
交换后
A001111
B110000
6、变异
为了避免在算法迭代后期出现种群过早收敛,对于二进制的基因码组成的个体种群,实行基因码的小概率翻转,对于二进制编码即0变成1,而1变成0。例如个体01100000001111的第2个位发生变异,则个体变为00100000001111.
7、个体适应度评估
遗传算法利用个体的适应度函数搜索基本不利于外部信息的因素,在算法设计时,适应度函数决定系统是否能寻找到系统最优解。由目标函数变换而成的适应度函数在设计时应考虑一下几个因素:适应度函数是否能反映解的优劣,该函数是否是单值的和非负的,只有满足以上因素才能设计出合理的算法。对于函数优化问题,适应度可取为函数值。
8、复制
将子代复制为父代。begin
t<-0
初始化P(t)
评价P(t)
while(终止条件不满足) do
begin
杂交P(t)以产生C(t)
变异C(t)
评价C(t)
从P(t)和C(t)中选择P(t+1)
t<-t+1
end
end
函数y=x.*sin(10*pi*x)+2的图像如下图所示:
从上图可以看出,该函数在区间[-1 2]上有很多个极大值。
用遗传算法计算函数y=x.*sin(10*pi*x)+2在区间[-1 2]上的最大值,得到
如下图像:
从上图看出,在17代时,种群中出现了最大值,该种群几乎收敛于最优值。此时函数自变量x的取值为1.853511,函数值y的值为3.842246。
用遗传算法计算10次求得函数的最大值1次 3.8484 第2次 3.65928 第3次 3.85022 第4次 3.82508 第5次 3.84111 第6次 3.8489 第7次 3.7734 第8次 3.84869 第9次 3.65031 第10次 3.64293 平均值 3.73883
从上表看出,遗传算法每次得到的结果基本相同(除3.642933数据较小外),可见遗传算法具有较强的适应性。
附录:
%主程序:用遗传算法求解y=x.*sin(10*pi*x)+2在[-2 2]区间上的最大值
clc;
clear all;
close all;
global BitLength %全局变量,计算如果满足求解精度至少需要编码的长度
global boundsbe
文档评论(0)