1、I题目:遗传算法求解旅行商问题的计算机仿真II遗传算法求解 TSP 问题的计算机仿真摘要由于遗传算法在整体搜索策略和优化搜索方法上不依赖梯度信息或其他辅助知识,只需要影响搜索方向的目标函数和相应的适应度函数,所以提供了一种求解复杂系统问题的通用框架,因此遗传算法广泛应用于数学问题、组合优化、机械设计、人工智能等领域。遗传算法(Genetic Algorithms,简称 GA)是模拟自然界生物自然选择和进化的机制而发展起来的一种高度并行、自适应的随机搜索算法。特别适合于求解传统的搜索算法不好处理的复杂的最优解问题。旅行商问题(Traveling Salesman Problem)就是要决定一条经
2、过路线中所有城市当且仅当一次且距离最短的路线,即距离最短的 Hamilton 回路。旅行商问题是一个具有十分广泛的实用背景和重要理论价值的组合优化问题。目前求解 TSP 问题的主要方法有模拟退火算法、遗传算法、Hopfield 神经网络算法、启发式搜索法、二叉树描述算法。本文选用遗传算法求解 45 个城市的 TSP 问题,基于Microsoft Visual C+环境,采用 Grefenstette 等提出的一种新的巡回路线编码方法,变异算子采用了常规的基本位变异法,通过多组实验和数据近似的求解出了 45 个城市的最优解,实现了计算机仿真求解 TSP 问题。关键字:旅行商问题;遗传算法;变异算
3、法;编码方式IIIThe computer simulation of genetic algorithm to solve TSP problemAbstractDue to genetic algorithm on the overall search strategy and optimization search method does not depend on the gradient information or other auxiliary knowledge, only need to influence the search direction of the object
4、ive function and the corresponding fitness function, and so provides a generic framework for solving complicated system problem, so the genetic algorithm is widely used in mathematical problem, combinatorial optimization, mechanical design, artificial intelligence, etc Genetic algorithm (based Algor
5、ithms, the GA) is mimic natural biological natural selection and evolution mechanism and developed a kind of highly parallel, adaptive random search algorithm. Particularly suitable for solving the traditional search algorithm is not good to deal with complex optimal solution of problem. Traveling S
6、alesman Problem (ll Salesman Problem) is to determine a through route if and only if all cities in time and distance is the shortest route, the shortest distance of Hamilton loop. Traveling salesman problem is a very wide range of practical background and important theoretical value of the combinato
7、rial optimization problem. At present the main method of solving TSP problem with simulated annealing algorithm, genetic algorithm and Hopfield neural network algorithm, the heuristic search method, the binary tree described algorithm. This article chooses 45 cities genetic algorithm to solve the TS
8、P problem, based on Microsoft Visual c + + environment, use the proposed a new tour routes such as Grefenstette coding method, mutation operator adopted conventional basic variation method, through multiple sets of experimental data and the approximate solution of the 45 cities the optimal solution,
9、 has realized the computer simulation to solve the TSP problem.KEY WORDS: TRAVELING SALESMAN PROBLEM. GENETIC ALGORITHM; MUTATION ALGORITHM; IV目录遗传算法求解 TSP 问题的计算机仿真 .IAbstract.II1 绪论 .11.1 研究背景 .11.2 研究意义 .21.3 研究内容 .21.4 本文的结构 .32 遗传算法理论概述 .42.1 遗传算法的产生及发展 .42.2 遗传算法基本原理 .52.3 遗传算法基本步骤 .62.4 遗传算法算法
10、流程图 .62.5 遗传算法的特点 .72.6 遗传算法的应用 .83 基于遗传算法求解 TSP 问题 .103.1 旅行商问题的描述与建模 .103.2 编码方式 .103.3 遗传算子的设计(交叉、选择、变异) .123.3.1 交叉算子 .123.3.2 选择算子 .133.3.3 变异算子 .143.4 适应度函数 .153.5 遗传算法求解 TSP 问题的具体流程图 .164 45 个城市旅行商问题的仿真软件的设计 .174.1 系统设计模块 .17V4.2 系统详细设计 .174.2.1 演示模块设计 .184.2.2 帮助模块设计 .214.3 测试结果及分析 .224.3.1
11、测试一 .224.3.2 测试二 .244.3.3 测试三 .264.3.4 测试四 .284.3.5 测试五 .295 结论 .31参考文献 .32谢 辞 .33附录一程序 .34附录二外文翻译 .5511 绪论自 20 世纪 60 年代以来,一种模拟生物自然遗传与进化过程并将生物进化原理、最优化技术和计算机技术结合起来的优化方法遗传算法(Genetic Algorithm,简称 GA)被提出并得到广泛研究,该算法特别适用于处理传统搜索方法难以解决的复杂和非线性问题,可以广泛应用于人工智能、机械设计、自适应控制等领域。遗传算法固有的并行性和并行计算的能力,使在搜索过程中不容易陷入局部最优。即
12、使在所定义的适应度函数中是不连续的、不规则的情况下,也可以很大概率找到全局最优解。采用自然进化机制来表现复杂的现象,能够快速可靠地解决求解非常困难的问题,非常适用于本课题涉及的 TSP问题的求解与研究。旅行商问题(Traveling Salesman Problem ,TSP)是一个非常经典的组合优化问题的NP 难题,长期以来都没有一个十分有效的算法来解决它,但 TSP 本身在许多领域有着重要的应用,如连锁店的货物配送路线、计算机网络路由器遍历、印刷电路板的钻孔路线等问题都可以建模为旅行商问题。TSP 问题其实是 “哈密顿回路问题”中的“哈密顿最短回路问题” 。在本系统就是要应用遗传算法求解
13、45 个城市的 TSP 问题。因为遗传算法本身是模拟生物自然选择和遗传的过程的,所以用遗传算法求解 TSP 最先要确定的是问题的建模,即如何用遗传学的算子来表示旅行商问题中的变量。必需要非常的了解,并熟悉每一个遗传学中的术语在遗传学中的具体作用,然后应用到求解具体问题当中来。应用遗传算法求解旅行商问题最关键的是编码方式、交叉、选择、变异算子的设计,直接关系到算法能否求出最优解或近似最优解。所以要在编码方式的确定上做好足够的功夫,以确定程序求解的精确度。本章主要论述本文所研究的主要内容,并对论文的章节结构进行规划。1.1 研究背景旅行商问题(Traveling Salesman Problem,
14、 TSP),也称旅行推销员问题,具体的数学模型可以这样理解:现在给定以下几个城市的位置,旅行商从其中的某一个城市出发,不重复地访问其余的每一个城市,最后又返回到原出发点城市,要求找出这样一条路线,使旅行所付出的代价最小。虽然它是一个比较古老的问题,最早可以追溯到 Euler 提出的骑士旅行问题,但同时它也是一个新的问题,因为它的计算复杂度较高,虽然人们一直在尝试用新的方法来改进求解该问题的复杂度,但是这一类问题距今都没有能找到一个有效的算法来解决。2TSP 问题可以形式化描述为:设 G=(V,A,D)是一个图,其中 V 是 n 个顶点的集合,A 是弧线或边集,D=( )是与 A 关联的距离或费
15、用矩阵。旅行商问题就是要解决一个ij最小回路问题,回路中所有顶点有且仅经过一次。对于具有一个城市的旅行商问题,其可能的路径数目为(n-1)!/2,5 个城市的问题模型就对应 120/10=12 条路线,10 个城市的问题模型对应 3628800/20=181440 条路线。所以当输入越大,则耗费的时间就是个天文数字了,因此旅行商问题至今都没有能找到一种有效的求解方法。寻求一种能短时间求解出高精度解的算法,已成为此问题研究的热门。尽管旅行商问题至今仍然没有找到最优解,但求解它的算法已经在不断的改进。目前,求解 TSP 问题常用的算法主要有遗传算法和蚁群算法,另外还有爬山法、模拟退火算法、神经网络
16、方法、贪婪算法、禁忌搜索算法等。1980Crowder 和 Padberg 求解了 318 个城市的 TSP 问题;1987 年 Padberg 和Rinaldi 成功将城市数量增加到了 2392 个;最大的成功求解的旅行商问题已经增加到24798 个城市。1.2研究意义首先旅行商问题是用于求解 N 个城市存在(N-1)条闭合路径的排列方案,对于这一类问题很难用全局搜索法精确地求出最优解,这一问题已经困扰众多学者许多年,因此研究相应的算法寻找其最优或近似最优解是非常必要的。其次,随着旅游业的快速发展,大量的旅客在旅途中浪费了不必要的时间和金钱,而这些不必要的浪费完全可以通过对旅行路线的合理规划
17、来避免。而在互联网继续扩大普及的时代,电子商务也迎来了期待已久的春天,同时物流产业也随之水涨船高。毫无疑问,高效、低成本、低能耗成了各个物流企业追求的目标,更加合理的配送路线能明显地为物流公司增大利润。再比如在装配线的流程中,对每个工件为完成装配过程节约的少许时间意味着一天的产量的相应增加。由于旅行商问题在计算机网络、物流、旅游业、交通运输等许多领域都有着十分广泛的应用,因此寻找一个求解这类问题的求解方法有很高的应用价值因此,对旅行商问题有效算法的研究不仅具有重要的理论意义,而且具有重大的实际应用价值。1.3研究内容本文采用遗传算法求解 45 个城市的旅行商问题,并对其实现计算机仿真。遗传算法
18、(Genetic Algorithms,GA)又叫基因进化算法或进化算法,是一种通过模拟自然界生物适者生存、优胜劣汰的进化过程而形成的一种自适应、具有全局优化能力的随机搜索算法。应用遗传算法求解旅行商问题,最难得地方在于问题建模,如城市编码方式以及交叉、变异、选择算子的确定等。本文采用的是 Grefenstette 等提出的一种新的巡回路线编码方法,其可以在一定程度上克服常规巡回路线编码方法在交异操作时易产生不满足问题约束条件或无实际意义的巡回路线的缺点。交叉算法采用的是常规的单点交叉,之所以可以用这一常规的交叉法,是因为在编码方式上使用的是 Grefenstette 等提出的一种新的巡回路线
19、编码方法,它可以3最大化交叉后后代与其父代的性状差异,有利于算法的全局性。变异算法采用的是基本位变异法,即只是根据变异概率随机改变染色体中的某一段染色体,具体会在后文中做详细说明。在遗传算法中,以个体适应度的大小来确定该个体被遗传到下一代群体中的概率。本课题中以每条路径长度的倒数作为适应度函数值。在求出之后将其按照从大到小的顺序排列,以便于后面找出路径之和最小的城市序列。1.4 本文的结构本文一共分为 5 章,结构如下:第一章绪论。这一章主要论述旅行商问题的基本概念,以及本课题主要的研究方法及其研究意义,并对论文的章节结构加以论述。第二章遗传算法理论概述。这一章主要论述遗传算法的起源发展及其实
20、际应用,重点介绍了遗传算法的算法原理及步骤。第三章基于遗传算法求解 TSP 问题。本章主要介绍了本系统具体使用什么方式实现求解过程,包括编码方式、选择、交叉、变异算子的具体选取。第四章 45 个城市旅行商问题的仿真软件的设计。本章主要对系统模块进行了介绍,而且对应用系统进行了多组试算,最后得出结论。第五章结论。对本文的内容进行总结。42 遗传算法理论概述2.1 遗传算法的产生及发展最早由美国 Michigan(密执安大学)的 Hollang 教授提出,起源于 60 年代对自然和人工自适应系统的研究。1967 年,他的学生 Bagley J.D.首次提出“遗传算法” 一词,并发展了复制、交叉、变
21、异、显性、倒位等遗传算子。70 年代 De Jong 基于遗传算法的思想在计算机上进行了大量纯数值函数优化计算实验,建立了著名的 De.Jong 五函数测试平台。在一系列研究工作的基础上 80 年代 Goldberg 进行总结归纳,形成了遗传算法的基本框架;Smith 将遗传算法应用于机械学习领域;Bethke 对函数优化的遗传算法进行了系统的研究。进入 90 年代,遗传算法进入了兴盛期,无论是理论研究还是实际应用都成了十分热门的课题。如今遗传算法已经被广泛的应用于计算机科学、人工智能、机械设计、图像处理等各个领域,不仅如此,利用遗传算法进行理论研究的优化和最优解问题的解决能力也显著提高。下面
22、是一些在遗传算法发展进程中做出杰出贡献的人物:1 J.H.Holland60 年代提出在研究和设计人工自适应系统时,可以借鉴生物遗传的机制;70 年代初提出了遗传算法的基本定理模式定理(Schema Theorem),从而奠定了遗传算法的理论基础; 80 年代实现了第一个基于遗传算法的机器学系统分类器系统(Classifier Systems),开创了基于遗传算法的机器学习的新概念。2 J.D.Bagley1967 年在其博士论文中首次提出了:“遗传算法”一词,发展了复制、交叉、变异、显性、倒位等遗传算子,创立了自适应遗传算法的概念。3 K.A.De Jong1975 年在其博士论文中结合模式
23、定理进行了大量的纯数值函数优化计算实验,树立了遗传算法的工作框架,定义了评价遗传算法性能的在线指标和离线指标。4 D.J.Golgberg1989 年出版了专著搜索、优化和机器学习中的遗传算法(Genetic Algorithms in Search,Optimization and Machine Learning) ,系统总结了遗传算法的主要研究成果,全面而完整的论述了遗传算法的基本原理及其应用。5 L.Davis1991 年编辑出版了遗传算法手册 (Handbook of Genetic Algorithms)书中包括遗传算法在科学计算、工程技术和社会经济中的大量应用实例。6J.R.Koza1992 年将遗传算法应用于计算机程序的优化设计及自动生成,提出了遗传编程 (Genetic Programming) 的概念,并成功的将其提出的遗传编程应用于人工智能、机器学33习符号处理等方面。