算法合集之遗传算法的特点及其应用.doc
《算法合集之遗传算法的特点及其应用.doc》由会员分享,可在线阅读,更多相关《算法合集之遗传算法的特点及其应用.doc(21页珍藏版)》请在冰豆网上搜索。
IOI2002集训队论文遗传算法的特点及其应用张宁
遗传算法的特点及其应用
上海复旦大学附属中学张宁
目录
【关键词】
【摘要】
【正文】
§1遗传算法的基本概念
§2简单的遗传算法
1.选择
2.交换
3.变异
§3简单的遗传算法运算示例
1.计算机公司的经营策略优化问题
2.函数优化问题
§4遗传算法应用举例
1.子集和问题
2.TSP(旅行商)问题
§5结束语
【附录】
1.子集和问题源程序
2.TSP(旅行商)问题源程序
【参考文献】
【关键词】
遗传算法遗传变异染色体基因群体
【摘要】
遗传算法是基于达尔文进化论,在计算机上模拟生命进化机制而发展起来的一门新学科。
它根据适者生存,优胜劣汰等自然进化规则来进行搜索计算和问题求解。
文章的第一部分介绍了遗传算法的基本概念。
第二部分介绍了遗传算法的原理以及三种运算:
选择、交换、变异。
第三部分着重介绍三种运算的具体实现,以及简单实例,主要体现遗传算法的实现过程。
第四部分介绍了两个具体问题,都是属于NP-完全问题,如何用遗传算法来解决,以及实现时的一些基本问题。
文章在介绍遗传算法的原理以及各种运算的同时,还分析了一些应用中出现的基本问题,对于我们的解题实践有一定的指导意义。
【正文】
遗传算法作为一门新兴学科,在信息学竞赛中还未普及,但由于遗传算法对许多用传统数学难以解决或明显失效的复杂问题,特别是优化问题,提供了一个行之有效的新途径,且能够较好地解决信息学竞赛中的NP难题,因此值得我们进行深入的讨论。
要掌握遗传算法的应用技巧,就要了解它的各方面的特点。
首先,让我们来了解一下什么是遗传算法。
§1遗传算法的基本概念
遗传算法(GeneticAlgorithms,简称GA)是人工智能的重要新分支,是基于达尔文进化论,在计算机上模拟生命进化机制而发展起来的一门新学科。
它根据适者生存,优胜劣汰等自然进化规则来进行搜索计算和问题求解。
对许多用传统数学难以解决或明显失效的复杂问题,特别是优化问题,GA提供了一个行之有效的新途径,也为人工智能的研究带来了新的生机。
GA由美国J.H.Holland博士1975年提出,当时并没有引起学术界的关注,因而发展比较缓慢。
从80年代中期开始,随着人工智能的发展和计算机技术的进步,遗传算法逐步成熟,应用日渐增多,不仅应用于人工智能领域(如机器学习和神经网络),也开始在工业系统,如控制、机械、土木、电力工程中得到成功应用,显示出了诱人的前景。
与此同时,GA也得到了国际学术界的普遍肯定。
从1985年至今国际上已举行了五届遗传算法和进化计算会议,第一本《进化计算》杂志1993年在MIT创刊,1994年IEEE神经网络汇刊出版了进化规划理论几应用专集,同年IEEE将神经网络,模糊系统,进化计算三个国际会议合并为’94IEEE全球计算智能大会(WCCI),会上发表进化计算方面的论文255篇,引起了国际学术界的广泛关注。
目前,GA已在组合优化问题求解、自适应控制、程序自动生成、机器学习、神经网络训练、人工生命研究、经济组合等领域取得了令人著目的应用成果,GA也成为当前人工智能及其应用的热门课题。
§2简单的遗传算法
遗传算法(GeneticAlgorithms,以下简称GA)是基于自然选择,在计算机上模拟生物进化机制的寻优搜索算法。
在自然界的演化过程中,生物体通过遗传(传种接代,后代与夫辈非常相像)、变异(后代与夫辈又不完全相像)来适应外界环境,一代又一代地优胜劣汰,发展进化。
GA则模拟了上述进化现象。
它把搜索空间(欲求解问题的解空间)映射为遗传空间,即把每一个可能的解编码为一个向量(二进制或十进制数字串),称为一个染色体(chromosome,或个体),向量的每一个元素称为基因(genes)。
所有染色体组成群体(population,或集团)。
并按预定的目标函数(或某种评价指标,如商业经营中的利润、工程项目中的最小费用、最短路径等)对每个染色提进行评价,根据其结果给出一个适应度的值。
算法开始时先随机地产生一些染色体(欲求解问题的侯选解),计算其适应度,根据适应度对诸染色体进行选择、交换、变异等遗传操作,剔除适应度低(性能不佳)的染色体,留下适应度高(性能优良)的染色体,从而得到新的群体。
由于新群体的成员是上一代群体的优秀者,继承了上一代的优良性态,因而在总体上明显优于上一代。
GA就这样反复迭代,向着更优解的方向进化,直至满足某种预定的优化指标。
上述GA的工作过程可用图1简要描述。
Y
问题的初始(侯选)解
种群满足预定指标
编码为染色体(向量)
种群P(t)
计算各染色体适应度
通过遗传运算存优去劣
种群P(t+1)
复制
交换
变异
种群P(t)ß种群P(t+1)
解码染色体
问题解答空间
N
图1遗传算法工作原理示意图
简单遗传算法的三个基本运算是选择、交换、变异,下面详细介绍。
1.选择
选择运算又称为繁殖、再生,或复制运算,用于模拟生物界去劣存优的自然选择现象。
它从旧种群中选择出适应性强的某些染色体,放入匹配集(缓冲区),为染色体交换和变异运算产生新种群做准备。
适应度越高的染色体被选择的可能性越大,其遗传基因在下一代群体中的分布就越广,其子孙在下一代出现的数量就越多。
有多种选择方法,使用比较普遍的一种是适应度比例法,简述如下:
适应度比例法又称为轮转法,它把种群中所有染色体适应度的总和看作一个轮子的圆周,而每个染色体按其适应度在总和中所占的比例占据轮子的一个扇区。
每次染色体的选择可看作轮子的一次随机转动,它转到哪个扇区停下来,那个扇区对应的染色体就被选中。
其实就是将适应度值视为其权值,权值大的被选中的概率也大。
尽管这种选择方法是随机的,但它与各染色体适应度成比例。
某一染色体被选中的概率(选择概率)为
式中xi为种群中第i个染色体对应的数字串,f(xi)是第i个染色体的适应度值,是种群中所有染色体的适应度值之和。
用适应度比例法进行选择时,首先计算每个染色体的适应度,然后按比例于各染色体适应度的概率进入交换(匹配)集的染色体,其具体步骤如下:
(1)计算每个染色体的适应度值f(xi);
(2)累加所有染色体的适应度值,得最终累加值SUM=,记录对应于每个染色体的中间累加值g(xi);
(3)产生一个随机数N,0(4)选择其对应的中间累加值满足g(xi-1)(5)重复(3),(4),直到交换集中包含足够多的染色体数字串为止。
重复上述过程,直到交换集中包含足够多的染色体为止。
显然,此法要求染色体的适应度应为正值。
请看下例:
[例1]:
某种群包含10个染色体,按适应度比例法选择进入交换集的过程示于表1及表2。
表1
染色体编号
1
2
3
4
5
6
7
8
9
10
适应度
8
2
3
16
6
12
11
7
3
7
选择概率
0.11
0.03
0.04
0.21
0.08
0.16
0.15
0.09
0.04
0.09
适应度累加值
8
10
13
29
35
47
58
65
68
75
表2
随机数
23
49
70
14
28
37
57
所选染色体号
4
7
10
4
4
6
7
由表1,表2可以看到,3号染色体的选择概率最高,被选中的次数最多,其他选择概率较低的染色体被选中的次数就少。
当然,用适应度比例法进行选择时,性能最坏的染色体也可能被选择,但概率极小,当种群长度较大时,这种情况可以忽略不计。
2.交换
复制操作虽然能够从旧种群中选择出优秀者,但不能创造新的染色体,因此,遗传算法的开创者提出了交换操作。
它模拟生物进化过程中的繁殖现象,优良品种,即:
在匹配集中任选两个染色体(称为双亲的染色体);随机选择一点或多点交换点位置J(0也就是说,交换操作能够创造新的染色体(子孙染色体),从而允许测试在搜索空间中的新点。
交换也体现了自然界中信息交换的思想。
请看下例:
[例2]:
从匹配集中取出的一对染色体为:
染色体A0111|1010
染色体B0101|0010
随机产生的一点交换位置是4,交换染色体A,B中第4位右边的部分——1010和0010,则得两个下一代(子孙)染色体数字串:
染色体A’01111010
染色体B’01010010
3.变异
变异运算用来模拟生物在自然界的遗传环境中由于各种偶然因素引起的基因突变,它以很小概率随机地改变遗传基因(表示染色体的符号串的某一位)的值。
在染色体以二进制编码的系统中,它随机地将染色体的某一个基因由1变成0,或由0变成1。
若只有选择和交换,而没有变异操作,则无法在初始基因组合以外的空间进行搜索,使进化过程在早期就陷入局部解而终止进化过程,从而使解的质量受到很大限制。
通过变异操作,可确保群体中遗传基因类型的多样性,以使搜索能在尽可能大的空间中进行,避免丢失在搜索中有用的遗传信息而陷入局部解,获得质量较高的优化解答。
§3简单的遗传算法运算示例
让我们从下面两个非常简单的例子来具体了解一下简单遗传算法的各种操作。
虽然下面的例子都有更好处理方式,但为了深入了解遗传算法的各种操作,还是从简单的例子入手:
[例3]:
计算机公司的经营策略优化问题
一个计算机公司追求的目标是最高的利润,为达此目标,必须选择适当的经营策略。
一种可能的策略是对以下四个问题作出决策:
·每台PC计算机的价格定为5000元(低价)还是8000元(高价);
·与PC机配套的免费软件是Windows2000还是Linux;
·是否提供网络技术服务;
·提供保修期为半年或是一年;
下面用遗传算法来解决这个决策优化问题。
(1)把问题的可能解表示为染色体数字串。
因为有四个决策变量,而每个变量只有两种选择,其取值可用0或1来表示,于是,可用四位的二进制数表示一种可能的经营策略,解的搜索空间为24=16,即共有16种经营策略可供选择,表3表示出了其中计算机公司经理已知的4种经营策略(初始解答)。
表中数字串的第一位取0表示高价,1表示低价;第二位取0表示Windows2000,1表示配套Linux;第三位取0表示不支持网络技术服务,1表示支持网络技术服务;第四位取0表示保修期为一年,1表示表示保修期为半年。
表3问题的初始解答
序号
价格
配套软件
网络服务
保修期
染色体数字串
1
高
Linux
支持
一年
0110
2
高
Windows2000
支持
半年
0011
3
低
Linux
不支持
一年
1100
4
高
Linux
不支持
半年
0101
(2)求各染色体的适应度。
在这个问题中,我们不妨设染色体的适应度就是染色体的二进制数字串的数值,对应经营策略的利润。
表4第0代种群的适应度
序号i
染色体串xi
适应度f(xi)
1
0110
6
2
0011
3
3
1100
12
4
0101
5
适应度总和
26
最坏适应度
3
最好适应度
12
平均适应度
6.5
(3)选择进入交换集的染色体
由表4可知,所有染色体串适应度的总和是26,串1100的适应度是12,占适应度总和的6/13,也就是串1