ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:193.80KB ,
资源ID:8012097      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8012097.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人工智能.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

人工智能.docx

1、人工智能遗传算法的TSP (旅行商问题)的求解摘 要遗传算法是根据自然界的“物竞天择,适者生存”现象而提出的一种有效搜索算法。经典遗传算法对单一种群进行选择、交叉及变异操作,对于在进化过程中出现的超级个体容易过早的陷入局部最优解。遗传算法具有天然的并行性,适用于并行求解,因此可以用并行遗传算法研究典型的TSP问题的求解。本文提出了一种有效的基于多种群的并行遗传算法,各个种群相互独立进化,对不同的种群应用不同的搜索策略,比如不同的交叉及变异概率,以达到不同的搜索目的;同时在各个种群之间利用迁移算子每隔一定进化代数相互传递遗传信息,迁移算子用源种群的最优个体去替换目标种群的最差个体;从而解决经典遗

2、传的收敛到局部最优值的问题。实验表明,该方法在解的质量上优于经典的遗传算法。关键词:遗传算法;旅行商问题(TSP);并行遗传算法;多种群;迁移算子AbstractGenetic algorithm is based on natures natural selection, survival of the fittest situation and made an effective search algorithm. Classical genetic algorithm uses a single species to carry out selection, crossover and

3、mutation operation; if evolution occurred at super-individual, then the algorithm easy to prematurely into a local optimal solution. Genetic algorithm has a natural parallelism for parallel solving, so we can use parallel genetic algorithm for a typical problem solving TSP. This paper presents a var

4、iety of effective group-based parallel genetic algorithm, each species evolved independently of each other, the different species use different search strategies, such as different cross and mutation probability in order to achieve different search purposes; simultaneously in various species migrate

5、 between the use of operator algebra at the evolution of each other must pass genetic information, migration operator with the optimal source of individual species to replace the worst individual target species; in order to address the convergence of classical genetic value to the local optimum prob

6、lem. Through the experiments we can see that the method in the solution quality is superior to the classical genetic algorithm.Keywords: genetic algorithm; traveling salesman problem(TSP); parallel genetic algorithms; a variety of groups; transport operator目 录第一章 前言 11.1 遗传算法 11.2 TSP问题 21.3 本文的工作 2

7、第二章 基于多种群的并行遗传算法的TSP求解 32.1 TSP编码问题与适应度函数 42.2 遗传算法的算子设计 52.2.1 选择算子的设计 52.2.2 交叉算子的设计 62.2.3 变异算子的设计 72.2.4 迁移算子的设计 82.3 各子种群的初始化与搜索策略 9第三章 算法的实现 103.1 程序模块 113.2 核心代码描述 113.3 运行界面与结果 13第四章 实验结果与分析 154.1 实验说明 154.2 实验结果 16第五章 结论 185.1 本设计的总结 185.2 本设计的不足 195.3 类似的算法比较 20参考文献 21致谢 22第一章 前言本文针对传统的单一种

8、群的遗传算法解决TSP时易陷入未成熟收敛以及算法收敛速度较慢等缺点,提出了一种基于多种群的并行遗传算法。该方法比较有效地克服了以上两个缺陷,同时带来了解的质量上的提高。1.1 遗传算法遗传算法是根据自然界的“物竞天择,适者生存”现象而提出的一种有效的随机搜索算法,20世纪70年代由美国的密执根大学的Holland教授首先提出。1该算法是一种模拟生物进化过程的全局收敛算法13,将寻求优异解的过程看作生物种群遗传进化的过程,在不断的遗传进化过程中,较优个体逐渐淘汰较劣个体,从而最终寻得较优解。遗传算法只需要计算当前代个体的适应值,而不需要获得其他信息,即不依赖于问题的具体领域,就可以实现有效的搜索

9、;这种特性使遗传算法在组合优化问题中获得广泛的应用,并成为研究热点。遗传算法以种群为单位进行选择、交叉以及变异等操作,因此其具有天然的并行性,很容易联想到多个子种群同时进行遗传进化的并行遗传算法;同时传统的遗传算法以单一种群为基础,在种群的遗传进化过程中容易过早地陷入局部最优解。可以通过并行遗传算法来避免传统遗传算法的早熟现象。并行遗传算法的特点是多个子种群同时进行遗传进化,子种群与子种群之间定期进行遗传信息交流;并行遗传算法已经成为遗传算法的发展方向与研究趋势。并行遗传算法的研究已有多年,成果也较多,已提出多种并行实现方案,其中主要的有两种:主从式模型以及独立式模型。主从式并行模型将种群分成

10、若干个子种群,每个进程处理单个子种群。同时主从式模型还设置了一个主进程,来完成对各个从进程之间的通信与协调。这种并行模型在1992年由Abramson在共享存储器的并行计算机上实现。由于在主从式并行模型中,各个从进程只能而且都要和主进程进行通信来达到各个子种群之间的协调进化,因此需要很强的同步性,而且主进程和各个从进程之间的负载也很不平衡,同时大量的通信也影响了整体的效率。独立式模型也将种群分成若干个子种群,不同的是取消了主从式并行模型中主进程的作用,取而代之的是各个子进程独立处理各个子种群,各个子种群独立进化,在必要的时候(比如每隔一定代数)进行遗传信息交流。由于各个子种群之间独自进行选择交

11、叉变异等操作,因此各个进程之间负载相对平衡,克服了主从式并行模型的相关缺陷,是当前应用最广泛的并行模型。独立式模型也称孤岛模型8。本论文采用独立式并行模型。1.2 TSP问题旅行商问题(Traveling Salesman Problem, TSP)可以描述如下:设有n个城市,城市间的距离用矩阵D=dij(i,j=1,2,n)表示,其中dij表示城市i与城市j之间的距离。当问题对称时,有dij=dji。有一个旅行商从一个城市出发,每个城市访问一次,并且只能访问一次,最后再回到出发城市。问如何行走才能使得行走的路径长度最短。1TSP问题是典型的组合优化问题,并且是NP难问题,是许多领域内出现的多

12、种复杂问题的集中概括和简约形式。针对TSP问题已提出过很多算法,如穷举搜索法、贪心法、动态规划法、分支界定法等等,但是没有一个算法可以在多项式时间内获得解。2TSP问题的所有路线的组合有(n-1)!/2种,因此它的搜索空间随着城市数n的增大而迅速地增加,从而不可避免地出现“组合爆炸”的问题。例如当n=3时,路线组合有(3-1)!/2=1种;当n=20时,路线组合有(20-1)!/2=60822550204416000种;而当n=100时,路线组合有(100-1)!/2=4.6663107721972075e+157种。如此庞大的搜索空间,要想从中寻找到最优解是很困难的。因此,研究相应的有效算法

13、求解其最优解或近似解具有重要的意义6。遗传算法并没有所谓的“组合爆炸”问题,因为它的种群的大小是一定的,比如48个城市的TSP问题,我们可以设定种群大小为20,在种群遗传进化过程中,种群大小维持20不变。遗传算法最终求得的是近似解。1.3 本文的工作实验结果表明,本文所设计的多种群并行遗传算法相对传统的单一种群的遗传算法在解的质量上更优,并且寻求最优解的收敛速度更快,同时随着多种群并行遗传算法的子种群数量的增加,算法的收敛速度以及解的质量也相应地加快与提高;该算法有效地避免了未成熟收敛的问题。这说明本设计所提的算法的有效性。本实验的代码是基于Windows XP运行平台,采用eclipse集成

14、开发环境,用java语言编写而成的。第二章 基于多种群的并行遗传算法的TSP求解本章描述多种群并行遗传算法各个组成部分的设计,包括编码问题的解决、染色体适应度函数的选择、各个遗传算子的设计,以及本设计的算法描述等等。2.1 TSP编码问题与适应度函数在遗传算法求解时,首先需要对问题的解进行编码,使之成为染色体进行各种遗传算子(比如交叉、变异等等)的操作。遗传算法的编码方式有多种形式14,最简单也最常见的编码方式是二进制形式的编码。如果采用二进制形式的编码,对于有n个城市的TSP来说,可以用n*n位二进制位来表示。例如n=4,假设城市表示为1、2、3、4,那么解2=3=4=1=2就可以表示为:0

15、100 0010 0001 1000,也就是说,对于第i个n位二进制数,如果1所在的位数是j,那么就表示这个解的第i个走的城市是j;因此,0100 0010 0001 1000,第1个走的城市是2,第2个走的城市是3,第3个走的城市是4,第4个走的城市是1,即表示解2=3=4=1=2。那么对于城市数为n的TSP,用n*n位二进制位可以来表示一条完整的旅行路线。然而,对于这种编码方式,一个n*n的二进制位可以表示的编码个数为2n*n,然而所有可能的解只有n!/2,因此在整个编码空间内,解只占了很小的一部分;并且对于交叉变异等遗传操作来说,如果改变其中的一位(比如将0变成1),就会造成解的不正确。

16、因此,二进制编码方式将造成求解效率的低下。对于n个城市的旅行顺序,一个很自然的想法就是对n个城市进行编号(从1到n进行编号),那么1到n的数的一个排列就代表了TSP的一个可行解。1对于这种整数编码方式,所用的位数很少(只需n位),所面临的问题是交叉与变异过程中确保解的正确性问题。本文采用这种整数编码方式。对于一条染色体,所对应的回路的总路径越短,表示这条染色体对环境的适应值越大;因此,可以用总路径长度的倒数来表示一条染色体的适应值,用数学公式表示如下,其中,f表示解的适应值,d(i,j)表示从城市i到城市j的路径长,c(i)表示处于解的第i位的城市编号。2.2 遗传算法的算子设计在多种群并行遗

17、传算法中,总共有四种遗传算子选择算子、交叉算子、变异算子以及迁移算子。跟传统的单一种群的遗传算法相比,并行遗传算法多了一个迁移算子;各个子种群通过迁移算子定期进行遗传信息的交流。2.2.1 选择算子的设计选择算子要体现自然界生物进化过程中“优胜劣汰,适者生存”的选择规律,从群体中选择优胜的个体,淘汰劣质的个体11。从具有N条染色体规模的群体中选择出若干条染色体作为一个种群,在这里种群的规模与群体规模一样,都具有N条染色体。选择操作要依据适应值的大小,适应值是模拟自然界生物对环境的适应能力。适应值大的染色体存活的机率大,并且在选择过程中可能不止一次地被选择;而适应值小的染色体存活的机率小,并且在

18、选择过程中可能被淘汰。因此在选择出来的敌群中,适应值大的染色体可能被多次地选择保存下来,而适应值小的染色体被选择的次数小甚至没有,这正体现了“优胜劣汰,适者生存”的选择规律。对于选择算子的设计,目前有多种设计可供参考,比如轮盘赌选择方法1、确定性选择方法1等等。其中轮盘赌选择方法是最被经常使用的方法。本设计采用的正是轮盘赌算法。轮盘赌的方法描述如下:假设群体的规模为N,xi(i=1,2,,N)表示群体的各条染色体,f(xi)表示染色体xi的适应值,p(xi)表示染色体xi被选择的概率,那么,显然有公式 1可以这样设计轮盘赌:一个转盘有N个格子,每个格子代表着一条染色体,格子的长度与该格子所代表

19、的染色体的p(xi)成正比,这样p(xi)越大则被选择的概率越大;在转盘上有一个固定的指针,转动转盘,待转盘停止之后,指针指向的格子所代表的染色体就是被选择的染色体。在本设计中,模拟轮盘赌的算法如下:double r = Math.random(); int j = 0; double selectP = proj; while (r selectP) +j; selectP += proj;/ j指向最大的那个pro的概率最大 for (int k = 0; k =1&i=1&i=n,n为染色体基因个数)。子代1的前i个基因完全复制父代1的前i个基因,后n-i个基因则从父代2中顺序选取子代1

20、中还没有出现过的基因;子代2的基因选取和子代1相似。举例说明如下:设有两个要交配的父染色体a和b,表示如下:a:5 6 4 1 8 7 2 3b:1 6 3 2 5 4 8 7假设随机产生的交配位是4,那么常规交配法的交配过程如下:5 6 4 1 | 8 7 2 3 5 6 4 1| 5 4 8 71 6 3 2 | 5 4 8 7 1 6 3 2 | 8 7 2 3图2 常规交配法示意图1其中子代1的前4个基因复制父代1的前4个基因5 6 4 1,后4个基因从父代2中顺序选取后四位基因,选取的结果是5 4 8 7,所以,子代1的染色体表示为5 6 4 1 5 4 8 7;类似地,子代2的染色

21、体为:1 6 3 2 8 7 2 3。2.2.3 变异算子的设计变异一般发生在某条染色体的某个基因上,在二进制编码的染色体中,一般先随机产生一个变异位,然后将该变异位的基因由0变成1,或者由1变成0。例如,如果随机产生的变异位是4,参与变异操作的染色体为100110,那么,变异的过程如下:变异前:1 0 0 1 1 0 变异后:1 0 0 0 1 0变异位,基因由1变成0图3 变异前后的编码变化1然而,与交叉算子的设计相似,当染色体是以整数形式进行编码时,还是考虑算子操作后形成的新染色体的合理性。如果将某一位的整数基因变成另一个整数,就可能造成新染色体所代表的整数排列不是从1到n的一个排列,造

22、成解的无效。对于整数编码的变异算子,目前有很多种设计,比如有基于位置的变异、基于次序的变异和打乱变异等待。在本设计中,变异算子采用基于次序的变异。基于次序的变异算子先随机地产生两个变异位,然后将参与变异的染色体变异位对应的两个基因互换,形成新的染色体。例如,假如随机产生的两个变异位是3和8,而参与变异的染色体是5 2 1 6 3 4 8 9 7,那么变异的过程如下:变异前染色体为:5 2 1 6 3 4 8 9 7,变异位3和8对应的基因是1和9,1和9互换,变异后的染色体为:5 2 9 6 3 4 8 1 7。变异算子将可变性引入了种群中,增加了种群的多样性,在一定程度上避免了陷入局部最优的

23、现象。然而,变异操作也可能会破坏优秀个体对环境的适应性,因此变异算子一般以一种很低的概率进行。2.2.4 迁移算子的设计传统的单一种群的遗传算法并没有迁移算子3的概念,迁移算子的设计,是为了实现多种群并行遗传算法中各个子种群之间的遗传信息的交流。迁移算子的引入,使得各个子种群之间得以进行遗传信息的交流,并且协调各个子种群之间的进化。迁移操作是并行遗传算法粗粒度模型中普遍采用的信息交互方式,实现的关键在于迁移策略、迁移周期和迁移规模的选择4。迁移算子的策略常见的有“一对多”和“一对一”。4 “一对多”的策略要求子种群的优秀个体同时向多个子种群传播,同时也可能同时接收多个其他子种群发送来的优秀个体

24、,这种策略使得优秀个体得以较大范围地传播,也使得一个子种群能够获知较多子种群的遗传信息;然而同时这种迁移策略要求较多的通信开销,同时对通信的协调有较高的要求,因此会影响算法的整体效率。“一对一”的策略要求子种群的优秀个体向某一子种群传播,同时也接收某一子种群发送过来的优秀个体,这种策略下优秀个体虽然不像“一对多”的策略下传播得广,但是在实现适度的遗传信息交流的情况下,减少了通信的开销与协调,因此在本设计中采用“一对一”的迁移策略,具体的方法是将当前进程下的子种群的最优的若干个个体去替换下一个进程的子种群的最差的相同数量的个体,而最后一个进程则向第一个进程迁移。迁移算子的周期必须适当。如果迁移算

25、子的迁移频率过慢,比如每隔20代甚至更多代才进行一次遗传信息的交流,那么种群中出现的优秀个体不能及时地传播到其他种群,不利于各子群之间的交流与协调;然而如果迁移算子的迁移频率过快,比如每隔一代就进行一次遗传信息的交流,那么这样固然有利于优秀个体的传播,有利于各子种群之间的交流与协调,但是同时过于频繁的交流意味着过多的通信操作,大规模的通信开销势必造成算法效率的低下,同时频繁的交流也会破坏各个子种群的遗传进化的独立性。一般而言,迁移周期可以每隔几代进行一次,在本设计中,根据概率进行一次迁移。迁移算子的规模必须适当。和迁移周期类似,过大的迁移规模(比如一次迁移种群一半的个体)会导致过大的通信开销,

26、而且破坏各个子种群之间遗传信息的相对独立性,而过小的迁移规模(比如一次只迁移种群的1%的个体)又不利于传播优秀的个体到其他种群,不利于各子种群之间的交流。一般而言,迁移的规模是种群中个体数目的10%20%4。本设计的迁移规模高计为种群中个体数目的20%。本设计的迁移算子的算法描述如下:a) 如果当前代数不是4的倍数,则转到g);b) size=种群大小*20%;c) 选取种群中最优的size个个体;d) 将这size个个体发送给下一个子种群,如果当前子种群排在最后,则发送给第一个子种群;e) 接收来自上一个子种群的size个个体,如果当前子种群排在第一,则接收排在最后的子群;f) 用这size

27、个体去替换最差的size个个体;g) 结束。2.3 各子种群的初始化与搜索策略对于子种群的初始化,比较常用的是随机产生个体的方法。随机初始化法能够快速地产生初始种群,并且随机的特性能够保证种群的多样性,因此本设计采用随机初始化法初始各个子种群,即随机产生N条染色体作为初始的种群(N为群体规模)。对于N的确定,应当适当。如果N过大,固然可以增强种群的多样性,最终进化得到的解也可能更优化,然而这也增加了计算的复杂度,拖慢算法的效率;如果N过小,则不利于种群的多样性。一般N选择为10504,本设计选取N的大小为30。在多种群并行遗传算法中,多个子种群代替传统遗传算法的单一种群,各个子种群之间相互独立

28、进化,并且每隔若干代进行一次子种群之间的遗传信息的交流。各个子种群不必具有相同的搜索策略,我们可以设置不同子种群具有不同的交叉和变异概率,使得不同的子种群能够以不同的搜索策略进化,达到不同的搜索目的。当交叉概率以及变异概率比较大时,种群在进化过程中不断地大量产生全新的染色体,种群的稳定性会糟到一定程度的破坏,然而多样性会大大增加;交叉概率以及变异概率比较小时,种群在进化过程具有较好的稳定性,然而这样也降低了种群的多样性。基于这种思想,在本设计中,子种群的数量一般选择在3个以上。第一个子种群的交叉概率以及变异概率都比较大,使得该子种群具有较强的多样性,能够在全局范围内进行搜索,并且在遗传进化过程

29、中不断提供大量全新的染色体,在进化过程中出现的超级个体的作用也不会太明显,这样就克服了过早收敛,我们称之为探测子种群4;第二个子种群的交叉概率以及变异概率都比较小,使得该子种群具有较强的稳定性,能够在局部范围内稳步进化,在局部范围内寻求最优解,我们称之为开发子种群4;第三个子种群的交叉概率以及变异概率处于以上两者的中间,兼具两者的特点,既保持了一定的多样性,也具有较好的稳定性,我们称之为探测开发子种群4。第三章 算法的实现本实验的代码是基于Windows XP运行平台,采用eclipse集成开发环境,用java语言编写而成的.主要代码包括在一个类里面.:GATSP代码:类变量及说明private int popSize;/ 种群规模(偶数) private double crossPro;/ 交配概率(0-1) private double mutationPro;/ 变异概率(0-1) private int generationMaxNum;/ 最大迭代次数 private int distanceMatrix;/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1