为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 算法合集之《遗传算法的特点及其应用》

算法合集之《遗传算法的特点及其应用》

2017-11-28 37页 doc 68KB 7阅读

用户头像

is_594886

暂无简介

举报
算法合集之《遗传算法的特点及其应用》算法合集之《遗传算法的特点及其应用》 IOI2002集训队论文 遗传算法的特点及其应用 张宁 上海复旦大学附属中学 张宁 TSP 1 TSP 第 1 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 遗传算法作为一门新兴学科,在信息学竞赛中还未普及,但由于遗传算法对 许多用传统数学难以解决或明显失效的复杂问题,特别是优化问题,提供了一个 行之有效的新途径,且能够较好地解决信息学竞赛中的NP难题,因此值得我们进行深入的讨论。 要掌握遗传算法的应用技巧,就要了解它的各方面的特点。首先,让我们来 了...
算法合集之《遗传算法的特点及其应用》
算法合集之《遗传算法的特点及其应用》 IOI2002集训队论文 遗传算法的特点及其应用 张宁 上海复旦大学附属中学 张宁 TSP 1 TSP 第 1 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 遗传算法作为一门新兴学科,在信息学竞赛中还未普及,但由于遗传算法对 许多用传统数学难以解决或明显失效的复杂问,特别是优化问题,提供了一个 行之有效的新途径,且能够较好地解决信息学竞赛中的NP难题,因此值得我们进行深入的讨论。 要掌握遗传算法的应用技巧,就要了解它的各方面的特点。首先,让我们来 了解一下什么是遗传算法。 遗传算法(Genetic Algorithms,简称GA)是人工智能的重要新分支,是基于达尔文进化论,在计算机上模拟生命进化机制而发展起来的一门新学科。它 第 2 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 根据适者生存,优胜劣汰等自然进化规则来进行搜索计算和问题求解。 对许多用传统数学难以解决或明显失效的复杂问题,特别是优化问题,GA提供了一个行之有效的新途径,也为人工智能的研究带来了新的生机。 GA由美国J. H. Holland博士1975年提出,当时并没有引起学术界的关注, 因而发展比较缓慢。从80年代中期开始,随着人工智能的发展和计算机技术的 进步,遗传算法逐步成熟,应用日渐增多,不仅应用于人工智能领域(如机器学 习和神经网络),也开始在工业系统,如控制、机械、土木、电力工程中得到成 功应用,显示出了诱人的前景。与此同时,GA也得到了国际学术界的普遍肯定。 从1985年至今国际上已举行了五届遗传算法和进化计算会议,第一本《进 化计算》杂志1993年在MIT创刊,1994年IEEE神经网络汇刊出版了进化规划 理论几应用专集,同年IEEE将神经网络,模糊系统,进化计算三个国际会议合 并为’94IEEE全球计算智能大会(WCCI),会上发表进化计算方面的论文255篇,引起了国际学术界的广泛关注。 目前,GA已在组合优化问题求解、自适应控制、程序自动生成、机器学习、 神经网络训练、人工生命研究、经济组合等领域取得了令人著目的应用成果,GA也成为当前人工智能及其应用的热门课题。 遗传算法(Genetic Algorithms,以下简称GA)是基于自然选择,在计算 机上模拟生物进化机制的寻优搜索算法。 在自然界的演化过程中,生物体通过遗传(传种接代,后代与夫辈非常相像)、 变异(后代与夫辈又不完全相像)来适应外界环境,一代又一代地优胜劣汰,发 展进化。 GA则模拟了上述进化现象。它把搜索空间(欲求解问题的解空间)映射为 遗传空间,即把每一个可能的解编码为一个向量(二进制或十进制数字串),称 为一个染色体(chromosome,或个体),向量的每一个元素称为基因(genes)。所有染色体组成群体(population,或集团)。并按预定的目标函数(或某种评价 指标,如商业经营中的利润、工程项目中的最小费用、最短路径等)对每个染色 提进行评价,根据其结果给出一个适应度的值。 算法开始时先随机地产生一些染色体(欲求解问题的侯选解),计算其适应 度,根据适应度对诸染色体进行选择、交换、变异等遗传操作,剔除适应度低(性 能不佳)的染色体,留下适应度高(性能优良)的染色体,从而得到新的群体。 由于新群体的成员是上一代群体的优秀者,继承了上一代的优良性态,因而 在总体上明显优于上一代。GA就这样反复迭代,向着更优解的方向进化,直至 满足某种预定的优化指标。上述GA的工作过程可用图1简要描述。 第 3 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 问题的初始(侯选)解 编码为染色体(向量) 种群P(t) 计算各染色体适应度 复制 种群P(t),种群P(t+1) 交换 通过遗传运算存优去劣 变异 种群P(t+1) N 种群满足预定指标 Y 解码染色体 问题解答空间 图1 遗传算法工作原理示意图 简单遗传算法的三个基本运算是选择、交换、变异,下面详细介绍。 选择运算又称为繁殖、再生,或复制运算,用于模拟生物界去劣存优的 自然选择现象。它从旧种群中选择出适应性强的某些染色体,放入匹配集(缓 冲区),为染色体交换和变异运算产生新种群做准备。适应度越高的染色体被 选择的可能性越大,其遗传基因在下一代群体中的分布就越广,其子孙在下 一代出现的数量就越多。有多种选择方法,使用比较普遍的一种是适应度比 例法,简述如下: 适应度比例法又称为轮转法,它把种群中所有染色体适应度的总和看作 一个轮子的圆周,而每个染色体按其适应度在总和中所占的比例占据轮子的 一个扇区。每次染色体的选择可看作轮子的一次随机转动,它转到哪个扇区 停下来,那个扇区对应的染色体就被选中。其实就是将适应度值视为其权值, 权值大的被选中的概率也大。尽管这种选择方法是随机的,但它与各染色体 适应度成比例。某一染色体被选中的概率(选择概率)为 第 4 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 Pc,f(x)c/f(x)i, 式中x为种群中第i个染色体对应的数字串,f(x)是第i个染色体的适ii 应度值,是种群中所有染色体的适应度值之和。 f(xi), 用适应度比例法进行选择时,首先计算每个染色体的适应度,然后按比 例于各染色体适应度的概率进入交换(匹配)集的染色体,其具体步骤如下: (1) 计算每个染色体的适应度值f(x); i (2) 累加所有染色体的适应度值,得最终累加值SUM=,记录对f(xi), 应于每个染色体的中间累加值g(x); i (3) 产生一个随机数N,0标准
或条件。在本例中,假定已知染色体数字串1111代表的是已 知的最好利润15%,则遗传算法停止运行。 [例4]:函数优化问题 设有函数f(x)=2x 2-5x+4(x?Z,x?[0,63]),求其在区间内的最大值。下 面用遗传算法求解这一问题。 (1) 确定适当的编码,把问题的可能解表示为染色体数字串。因为有一个决策 6变量x,其取值范围为[0,63],2=64,使用6位无符号二进制数组成染 色体数字串,即可表达变量x,以及问题的解答。 (2) 选择初始种群。通过随机的方法产生由4个染色体数字串组成的初始种 群,见表7。 (3) 计算适应度值及选择概率。此问题中染色体的适应度取函数自身 2f(x)=2x-5x+4。将每个染色体的f(x)计算出来,作为适应度值。在此基 础上计算选择概率P=f/f。 s,i 表7 函数优化过程 编号 染色体 X值 适应度(目标函数)选择概率实选染色2f(x)=2x-5x+4 体编号 f/f ,i 1 011010 26 1226 0.15 1 2 100100 36 2416 0.29 1 3 010101 21 781 0.09 0 4 101110 46 4006 0.48 2 和 8429 1 4 平均 2107.25 0.25 1 最大 4006 0.49 2 (4) 选择进入交换集的染色体。按适应度比例法,选择进入交换集的染色体串, 如表8。可见,染色提1和2都被选择了1次;染色体4被选择了2次; 染色体3没有被选择。所选的4个染色体被送到交换集,准备参加交换。 (5) 交换染色体。首先对进入交换集的染色体进行随机配对,此例中是染色体 1和3配对,染色体2和4配对。接着随机确定交换位置,结果是第1对 染色体的交换位置是1,第2对染色体的交换位置是4。经过交换操作后 第 8 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 得到的新种群如表8所示。 (6) 变异。若此例中变异概率取0.01。由于种群中4个染色体总共只有24位 代码,变异的期望值为24*0.01=0.24位,可以忽略不计。 表8 函数优化过程 复制后交交换配对 交换位置 新染色体 X值 适应度(目标函 2换集种群 数)f(x)=2x-5x+4 011010 3 3 001110 14 326 100100 4 4 100110 38 2702 101110 1 3 111010 58 6442 101110 2 4 101100 44 3656 和 13126 平均 3281.5 最大 6442 从表8可以看出,虽然仅进行了一代遗传操作,但种群适应度的平均值及最 大值却比初始群有了很大提高,平均值由2107.25变到3281.5,最大值由4006变到6442。这说明随着遗传运算的进行,种群正向着优化的方向发展。 1.[例5]:GA在子集和问题上的应用 子集和问题SUBSET_SUM:给定正整数集合S和一个整数t,判定是否存在S的一个子集 S',S使得S’中整数的和为t。 例如,若S={1,4,16,64,256,1040,1041,1093,1284,1344}且t=3754,则子集S’={1,16,64,256,1040,1093,1284}是一个解。 设子集和问题的一个实例为。其中,S是一个正整数的集合{x,x,„,12x},t是一个正整数。子集和问题要求判定是否存在S的一个子集S’,使得n x,t。我们已知道该问题是一个NP-完全问题。在实际应用中,我们常遇,ix,S'i 到的是最优化子集和问题。在这种情况下,我们要找出S的一个子集S’,使得 其和不超过t,但又尽可能接近于t。例如,我们有一辆载重车,其载重量不能 超过t公斤。有n个不同的箱子要用载重车来装运,其中第i个箱子重x公斤。i我们希望在不超过载重限制的前提下将载重车尽可能地装满。这个问题实质上就 是一个最优化形式的子集和问题。 下面用遗传算法来解决: 若集合S中元素的个数为n,每个元素只有两种可能:属于S’或不属于S’。 因此我们可以用n为二进制数来表示每个染色体。每一位,若为0则说明这个元素不属于S’,若为1则说明这个元素属于S’。 确定了问题的描述方式,我们只需随机取出染色体组成初始群体。接着,便 可以按前所述,进行选择、交换以及变异运算。 我们将染色体所表示的子集的元素和与所给t的差异记为适应度。 即令染色体x的每一位为x ,所表示元素的值为S则 ii f(x),S,t ,ix,0i 第 9 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 但是经过实践后发现由于适应度相对差异较小,使得适应度非常接近,难以 区分优秀的染色体,使得遗传进化变得非常缓慢,且f(x)可能为负值,因此还 需对适应度函数做一下变换,才可以适合本题的要求。 令|f(k)|为当前群体中所有染色体适应度的最大值 f’(x)=|f(k)-f(x)| 所以适应度为f’(x)。 选择时可以用前面所介绍的适应度比例法,但采用随机方式,可能会出现随 机错误,使得优秀的染色体没有子孙。因此,在这里我们对选择方法作一下改进, 采用确定性选择法,使得选择不依靠随机的好坏,先计算群体中每个串的生存概 率 ,1q then begin k:=p; p:=q; q:=k; end; k:=0; for j:=p to q do inc(k,pop[u,j]-pop[v,j]);{计算交换部分差距} if not (((f1[u]<0) and (f1[v]>0) and (k>0)) or ((f1[u]>0) and (f1[v]<0) and (k<0))) then{若差异变大则不交换} 第 15 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 continue; dec(f1[u],k); inc(f1[v],k); for j:=p to q do begin{交换} k:=pop[u,j]; pop[u,j]:=pop[v,j]; pop[v,j]:=k; end; end; end; procedure variety;{变异运算} var i,j,k:integer; begin for i:=1 to pr do begin j:=random(pl)+1;{染色体} k:=random(n)+1;{基因} if ((f1[j]<0) and (pop[j,k]=0)) or {变异} ((f1[j]>0) and (pop[j,k]=1)) then begin inc(f1[j],(1-2*pop[j,k])*sset[k]); pop[j,k]:=1-pop[j,k]; end; end; end; begin if sum<=t then exit; work:=true; pr:=round(n*pl*pv);{计算变异次数} dc:=0; while work do begin select;{选择} if dc>ec then exit;{是否满足结束条件} if work then begin cross;{交换} variety;{变异} end; end; end; procedure output;{输出} var fout:text; i,k:integer; s:longint; begin assign(fout,out); rewrite(fout); 第 16 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 s:=0; k:=0; for i:=1 to maxn do if result[i]=1 then begin inc(s,sset[i]); inc(k); end; writeln(fout,s); writeln(fout,k); for i:=1 to maxn do if result[i]=1 then writeln(fout,i); close(fout); end; begin{主程序} input; init; solve; output; end. 说明: 在子集和问题中,随机构造的数据基本上都能达到最优解,偶尔也会收敛到 准最优解。总体情况非常良好。 2. 例6 TSP问题源程序 program TSP_GA; const inp='tsp.in';{输入文件} out='tsp.out'; {输出文件} maxn=100;{城市最大值} pl=100;{染色体个数} pv=0.1;{遗传概率} ec=100;{结束条件} no=10000;{无通路} type ch=array[1..maxn] of integer; var d:array[1..maxn,1..maxn] of integer;{邻接矩阵} pop,pop1:array[1..pl] of ch;{染色体} result:ch;{结果} n:integer;{城市个数} min:longint;{当前最短路径长度} procedure input;{输入} var i,j:integer; fin:text; begin assign(fin,inp); reset(fin); readln(fin,n); 第 17 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 for i:=1 to n do for j:=1 to n do begin read(fin,d[i,j]); if d[i,j]=-1 then d[i,j]:=no; end; close(fin); end; procedure init;{初始化} var temp:ch; i:integer; procedure greedy;{贪心} var use:array[1..maxn] of boolean; i,j,k,min,r:integer; begin r:=random(n)+1; fillchar(use,sizeof(use),true); temp[1]:=r; use[r]:=false; for i:=2 to n do begin min:=no+1; k:=0; for j:=1 to n do if use[j] then if d[r,j]fm then fm:=f[i]; end; inc(dc); fs:=0; for i:=1 to pl do inc(fs,fm+1-f[i]); for i:=1 to pl do g[i]:=trunc((fm+1-f[i])/fs*pl); k:=0; for i:=1 to pl do for j:=1 to g[i] do begin inc(k); pop1[k]:=pop[i]; f1[k]:=f[i]; end; for i:=k+1 to pl do begin pop1[i]:=result; f1[i]:=min; end; pop:=pop1; end; procedure variety;{变异} var i,j,k,l,p:integer; t:longint; 第 19 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 temp:ch; begin for i:=1 to pr do begin j:=random(pl)+1; k:=random(n)+1; l:=random(n)+1; temp:=pop[j]; p:=temp[k]; temp[k]:=temp[l]; temp[l]:=p; t:=suit(temp); if tec then exit; if work then variety; end; end; procedure output;{输出} var i:integer; fout:text; begin assign(fout,out); rewrite(fout); for i:=1 to n do writeln(fout,result[i]); close(fout); end; begin{主程序} input; init; solve; output; end. 说明: 第 20 页 共20页 IOI2002集训队论文 遗传算法的特点及其应用 张宁 由于TSP问题本身就是一个NP问题。对于随机构造的数据,无从知道最优 解,而且由于随机性,最优解与局部最优解的差距不会非常明显,虽然差距不明 显,但是可能路线截然不同。因此,可能会收敛到局部最优解。而人为构造的数 据,最优解有较明显的区别时,一般可以收敛到最优解。 1.邵军力 张 景 魏长华 《人工智能基础》 电子工业出版社 2.傅清祥 王晓东 《算法与数据结构》 电子工业出版社 3.吴文虎 王建德 《实用算法的分析与程序》 电子工业出版社 第 21 页 共20页
/
本文档为【算法合集之《遗传算法的特点及其应用》】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索