毕业论文题目基于遗传算法的tsp问题研究学院计算机与科学技术专业计算机科学与技术学号200213137193学生姓名张三指导教师李四日期二·〇〇八年六月摘要TSP问题又称为货郎担问题。TSP是一个典型的优化组合问题,它需要求出旅行商从某一城市出发经过所有城市所走路程的最短路径,其可能的路径数与城市个数成指数关系增长。找出有效的近似求解算法具有重要的意义。选择用遗传算法去解决TSP问题。本论文对各个算子分别选择的是基于序的评估函数、轮盘赌选择法、两点交叉法、两点区间随机排序变异法,并且通过30个城市的实际的例子来验证,结果求出最短路径为421.5977,优于二叉树描述法的结果428.90,启发式搜索法的结果436.01,表明遗传算法在求解TSP问题上是有效的。关键词:组合优化;TSP问题;遗传算法;最短路径AbstractTSPproblemisalsoknownasthetravelingsalesmanproblem.TSPisatypicalportfoliooptimizationproblemandneedstocalculatetheshortestpaththatatravelingsalesmangoesthroughallcities.Thenumberofthepossiblepathsmaygrowwithindexofthenumberofcities.Itisofgreatsignificancetofindoutaneffectiveapproximatealgorithm.ItisusedgeneticalgorithmstosolvetheTSPproblem.Inthispaper,theoperatorsarefitnessfunctionbasedonsequencechoice,selectionwiththelawofroulettegambling,two-pointcrossover,two-pointrandomintervalmutation.Anactualexamplethrough30citiesisgot.Theresultis421.5977oftheshortestpath,whichisbetterthanbinarytreedescriptionwiththeresultof428.90,heuristicsearchwiththeresultof436.01,andshowsthatthegeneticalgorithmforTSPiseffective.Keywords:CombinatorialOptimization;TSP;GeneticAlgorithm;theShortestPath目录目录..............................................................................................................................4绪论................................................................................................................................51遗传算法的设计思想............................................................................................82系统实现................................................................................................................93程序的运行演示..................................................................................................124测试运行..............................................................................................................134.1模块测试....................................................................................................134.2整体测试....................................................................................................134.2.1在测试过程中使用到的调试技术:..............................................134.2.2评估运行的可靠性问题:..............................................................134.3测试结论....................................................................................................14结论..............................................................................................................................15参考文献......................................................................................................................16绪论一、遗传算法概述和发展背景(1)遗传算法简介遗传算法(GeneticAlgorithm,简称GA)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《AdaptationinNaturalandArtificialSystems》,GA这个名称才逐渐为人所知,J.Hilland教授所提出的GA通常为简单遗传算法(SGA)。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。这个过程将导致种群像自然进化一样,后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解[1]。(2)遗传算法特点遗传算法是一类可用于复杂系统优化的具有鲁棒性的搜索算法,与传统的优化算法相比,主要有以下特点:(1)遗传算法以决策变量的编码作为运算对象。传统的优化算法往往直接决策变量的实际植本身,而遗传算法处理决策变量的某种编码形式,使得我们可以借鉴生物学中的染色体和基因的概念,可以模仿自然界生物的遗传和进化机理,也使得我们能够方便地应用遗传操作算子。(2)遗传算法直接以适应度作为搜索信息,无需导数等其它辅助信息。二、关于TSP问题的简介TSP(TravelingSalesmanProblem)[2]问题又称为货郎担问题、旅行商问题,是出现在许多应用中的一个组合优化问题。该问题可简单的描述为:已知n个城市各城市间的相对距离,某一旅行商从某个城市出发访问每个城市一次且仅一次,最后回到出发城市,怎样安排才使其所走路线最短。TSP是一个典型的优化组合问题,它需要求出旅行商从某一城市出发经过所有城市所走路程的最短路径,其可能的路径数与城市个数成指数关系增长[3]。用图论的术语来说,假设有一个图G=(V,E),其中V是顶点集,E是边集,设D=(dij)是由顶点i与顶点j间的距离所组成的距离矩阵,TSP就是求出一条通过所有顶点且每个顶点通过一次的最短路径的哈密尔顿回路[4]。通常说的TSP都指对称型的TSP。若对于n个城市V={V1,V2,…,Vn}的一个访问顺序为T=(t1,t2,…,tn),其中ti∈V(i=1,2,…,n),且记tn+1=t1。则数学模型可以描述为公式(1.1)。𝑃𝑖=𝐹𝑖/∑𝐹𝑗𝑁𝑖=1(𝑖=1,…,𝑁)(1.2)三、本论文的研究内容本次设计的研究内容包括:(1)用C++写出基于遗传算法解决TSP问题的核心程序,本系统用的是两点交叉法和两点区间随机排序的变异法;(2)用C++写出一个界面来调用所写的遗传算法程序解决给定的数据;1遗传算法的设计思想以遗传算法的思想去解决TSP问题,即要在众多的城市路径中找到一个最短的,我们模拟生物进化的程序,即遗传的方式,我们先以一定的方式生成一个初始化群体,为每个染色体计算评价函数,然后群体竞争选择,种群交叉种群变异,如此迭代下去直到迭代代数达到要求找到最短的路径。下面从遗传算法的具体方面来进行设计思想的分析:一、算法设计目前,求解TSP问题的较为常用的方法有二叉树描述法、启发式搜索法、最近邻法、神经网络法、模拟退火法、遗传算法等。遗传算法是模拟生物在自然界中的遗传和进化过程而形成的一种自适应全局概率搜索算法,具有良好的全局寻优能力,成为解决TSP问题的有效方法之一。二、遗传编码遗传算法的编码时将待求问题的解的形式变换成遗传算法所面对的基本编码窜对象,以便于遗传运算。对于最短路径问题,其可行解的形式一般为结点下标联结成的数字串,因此在遗传算法中的编码方式一般为符号编码。具体可以分为以下几种:近邻编码、序编码(Grefenstette编码)、边编码、自然编码等。在本设计中用到的是自然编码。2系统实现本系统使用vc++编写,将遗传算法和界面程序分开编写,这样修改起来就比较方便,并且程序的结构看起来也很清晰,理解也很容易。在本程序中有一个功能模块,通过这个模块我们可以读取已经保存好在文件中的城市坐标文件,然后可以通过运行遗传算法来计算给出的数据并得出所要求的结果。本论文通过调用OpenDataFile()函数读取城市坐标信息。该函数输入参数是strFileName,表示文件名称字符串引用,函数返回值是文件中所含城市个数。其中,城市坐标文件的格式要求为:城市名称X轴坐标Y轴坐标读取城市坐标文件的内容到一个容器名为vecCity的结构中,主要代码如图2.1所示。图2.1读取城市坐标代码轮盘赌方式竞争选择染色体的模型如图2.2所示。if(FileType==1){intncityindex=1;while(DataFile.ReadString(strReadString)){strReadString.TrimLeft();strReadString.TrimRight();CStringcityName,citycodx,citycody;intnspace=0;nspace=strReadString.Find();//将得到文件串的左边子串传给cityName作为城市名;if(nspace0)cityName=strReadString.Left(nspace);strReadString=strReadString.Mid(nspace+1);nspace=str