基于遗传算法的TSP问题解决【精品毕业设计】(完整版)
基于遗传算法的TSP问题解决
班级:智能1001学号:20100840126一:问题描述旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行商问题,货郎担问题,是数学领域中著名问题之一。
假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。
路径的选择目标是要求得的路径路程为所有路径之中的最小值。
TSP问题是一个组合优化问题。
该问题可以被证明具有NPC计算复杂性。
因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。
二:遗传算法的基本原理遗传算法是由美国J. Holland 教授于1975 年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。
遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。
遗传算法,在本质上是一种不依赖具体问题的直接搜索方法,是一种求解问题的高效并行全局搜索方法。
遗传算法在模式识别、神经网络、图像处理、机器学习、工业优化控制、自适应控制、负载平衡、电磁系统设计、生物科学、社会科学等方面都得到了应用。
在人工智能研究中,现在人们认为“遗传算法、自适应系统、细胞自动控制、混沌理论与人工智一样,都是对今后十年的计算技术有重大影响的关键技术”。
基本步骤为:标准的遗传算法包括群体的初始化,选择,交叉,变异操作。
所示,其主要步骤可描述如下:(1)随机产生一组初始个体构成的初始种群,并评价每一个个体的适配值。
(2)判断算法的收敛准则是否满足。
若满足输出搜索结果;否则执行以下步骤。
(3)根据适配值大小以一定方式执行选择操作。
(4)按交叉概率Pc 执行交叉操作。
实验六:遗传算法求解TSP问题实验2篇
实验六:遗传算法求解TSP问题实验2篇第一篇:遗传算法的原理与实现1. 引言旅行商问题(TSP问题)是一个典型的组合优化问题,它要求在给定一组城市和每对城市之间的距离后,找到一条路径,使得旅行商能够在所有城市中恰好访问一次并回到起点,并且总旅行距离最短。
遗传算法作为一种生物启发式算法,在解决TSP问题中具有一定的优势。
本实验将运用遗传算法求解TSP问题,以此来探讨和研究遗传算法在优化问题上的应用。
2. 遗传算法的基本原理遗传算法是模拟自然界生物进化过程的一种优化算法。
其基本原理可以概括为:选择、交叉和变异。
(1)选择:根据问题的目标函数,以适应度函数来评估个体的优劣程度,并按照适应度值进行选择,优秀的个体被保留下来用于下一代。
(2)交叉:从选出的个体中随机选择两个个体,进行基因的交换,以产生新的个体。
交叉算子的选择及实现方式会对算法效果产生很大的影响。
(3)变异:对新生成的个体进行基因的变异操作,以保证算法的搜索能够足够广泛、全面。
通过选择、交叉和变异操作,不断迭代生成新一代的个体,遗传算法能够逐步优化解,并最终找到问题的全局最优解。
3. 实验设计与实施(1)问题定义:给定一组城市和每对城市之间的距离数据,要求找到一条路径,访问所有城市一次并回到起点,使得旅行距离最短。
(2)数据集准备:选择适当规模的城市数据集,包括城市坐标和每对城市之间的距离,用于验证遗传算法的性能。
(3)遗传算法的实现:根据遗传算法的基本原理,设计相应的选择、交叉和变异操作,确定适应度函数的定义,以及选择和优化参数的设置。
(4)实验流程:a. 初始化种群:随机生成初始种群,每个个体表示一种解(路径)。
b. 计算适应度:根据适应度函数,计算每个个体的适应度值。
c. 选择操作:根据适应度值选择一定数量的个体,作为下一代的父代。
d. 交叉操作:对父代进行交叉操作,生成新的个体。
e. 变异操作:对新生成的个体进行变异操作,以增加搜索的多样性。
实验六:遗传算法求解TSP问题实验3篇
实验六:遗传算法求解TSP问题实验3篇以下是关于遗传算法求解TSP问题的实验报告,分为三个部分,总计超过3000字。
一、实验背景与原理1.1 实验背景旅行商问题(Traveling Salesman Problem,TSP)是组合优化中的经典问题。
给定一组城市和每两个城市之间的距离,求解访问每个城市一次并返回出发城市的最短路径。
TSP 问题具有很高的研究价值,广泛应用于物流、交通运输、路径规划等领域。
1.2 遗传算法原理遗传算法(Genetic Algorithm,GA)是一种模拟自然选择和遗传机制的搜索算法。
它通过选择、交叉和变异操作生成新一代解,逐步优化问题的解。
遗传算法具有全局搜索能力强、适用于多种优化问题等优点。
二、实验设计与实现2.1 实验设计本实验使用遗传算法求解TSP问题,主要包括以下步骤:(1)初始化种群:随机生成一定数量的个体(路径),每个个体代表一条访问城市的路径。
(2)计算适应度:根据路径长度计算每个个体的适应度,适应度越高,路径越短。
(3)选择操作:根据适应度选择优秀的个体进入下一代。
(4)交叉操作:随机选择两个个体进行交叉,生成新的个体。
(5)变异操作:对交叉后的个体进行变异,增加解的多样性。
(6)更新种群:将新生成的个体替换掉上一代适应度较低的个体。
(7)迭代:重复步骤(2)至(6),直至满足终止条件。
2.2 实验实现本实验使用Python语言实现遗传算法求解TSP问题。
以下为实现过程中的关键代码:(1)初始化种群```pythondef initialize_population(city_num, population_size): population = []for _ in range(population_size):individual = list(range(city_num))random.shuffle(individual)population.append(individual)return population```(2)计算适应度```pythondef calculate_fitness(population, distance_matrix): fitness = []for individual in population:path_length =sum([distance_matrix[individual[i]][individual[i+1]] for i in range(len(individual) 1)])fitness.append(1 / path_length)return fitness```(3)选择操作```pythondef selection(population, fitness, population_size): selected_population = []fitness_sum = sum(fitness)fitness_probability = [f / fitness_sum for f in fitness]for _ in range(population_size):individual = random.choices(population, fitness_probability)[0]selected_population.append(individual)return selected_population```(4)交叉操作```pythondef crossover(parent1, parent2):index1 = random.randint(0, len(parent1) 2)index2 = random.randint(index1 + 1, len(parent1) 1)child1 = parent1[:index1] +parent2[index1:index2] + parent1[index2:]child2 = parent2[:index1] +parent1[index1:index2] + parent2[index2:]return child1, child2```(5)变异操作```pythondef mutation(individual, mutation_rate):for i in range(len(individual)):if random.random() < mutation_rate:j = random.randint(0, len(individual) 1) individual[i], individual[j] = individual[j], individual[i]return individual```(6)更新种群```pythondef update_population(parent_population, child_population, fitness):fitness_sum = sum(fitness)fitness_probability = [f / fitness_sum for f in fitness]new_population =random.choices(parent_population + child_population, fitness_probability, k=len(parent_population)) return new_population```(7)迭代```pythondef genetic_algorithm(city_num, population_size, crossover_rate, mutation_rate, max_iterations): distance_matrix =create_distance_matrix(city_num)population = initialize_population(city_num, population_size)for _ in range(max_iterations):fitness = calculate_fitness(population, distance_matrix)selected_population = selection(population, fitness, population_size)parent_population = []child_population = []for i in range(0, population_size, 2):parent1, parent2 = selected_population[i], selected_population[i+1]child1, child2 = crossover(parent1, parent2)child1 = mutation(child1, mutation_rate)child2 = mutation(child2, mutation_rate)parent_population.extend([parent1, parent2]) child_population.extend([child1, child2])population =update_population(parent_population, child_population, fitness)best_individual =population[fitness.index(max(fitness))]best_path_length =sum([distance_matrix[best_individual[i]][best_individual[i +1]] for i in range(len(best_individual) 1)])return best_individual, best_path_length```三、实验结果与分析3.1 实验结果本实验选取了10个城市进行测试,遗传算法参数设置如下:种群大小:50交叉率:0.8变异率:0.1最大迭代次数:100实验得到的最佳路径长度为:1953.53.2 实验分析(1)参数设置对算法性能的影响种群大小:种群大小会影响算法的搜索能力和收敛速度。
基于某遗传算法解决TSP问题
基于遗传算法解决TSP问题摘要题目要求给出环游全国全部省会的最短路径方案,是传统的TSP问题,本文将图表数据数字化后,将其转变成为线性规划问题,进而采取遗传算法用Matlab求解出理论上的最短路径与路线图。
通过第一问求出的路线顺序结合实际情况求解出实际情况下的最短路径与最短时间。
针对第一问,首先建立基本TSP模型,求出其线性规划方程组,用Matlab 对地图做出基本处理,求出其像素坐标的矩阵。
将省会城市初始化为种群数据,用遗传算法求解出模型最优解,即最短路径大小与旅游城市顺序。
针对第二问,由于遗传算法求出的是近似最优解,以及实际道路情况不可能是直线距离,所以理论数据与实际有一定差别。
将旅行顺序求解出后,需要根据实际道路情况重新求解出最短路径大小,并根据题目所给条件求解出最短时间。
根据实际情况,求得最后的最短路径长度为20402.9公里,时间为45天。
题目中给出城市转化为图集,一共有33个顶点,数据较大,用Dijkstra 算法和Floyd算法虽然答案可能更精确,但数据处理量大,时间复杂度高。
采用遗传算法可以得到近似最优解,并且精简了时间复杂度。
关键词:最短路径 TSP问题线性规划遗传算法一、问题重述如果从出发,要想开车走遍全国所有的省会城市,而且在到了每个省会城市以后都必须住一晚,第二天早上才能出发,安全起见每天开车时间最多在8小时左右,车速视实际路况而定,一般高速公路可以取平均车速100公里/小时左右,不是高速公路平均车速取60公里/小时左右,从出发要走遍所有省会城市以后回到,开车里程最少需要多少公里?最少需要多少时间?(暂不考虑省)二、问题分析题目要求求出最短路径与时间是典型的TSP问题,即要用最短的总路径走遍所有城市,此处需要设立一个二元组))EV,并且求出一个点的邻接矩阵。
G(G(),(根据经典的TSP模型,得出一般的线性规划方程组。
解TSP模型的一般算法有Dijkstra算法和Floyd算法,由于TSP问题是典型的NP难题,其可能路径数目与城市总数目n是呈指数型增长,并不适合用以上两种算法。
(完整word版)遗传算法求解TSP问题实验报告
人工智能实验报告实验六遗传算法实验II一、实验目的:熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响。
二、实验原理:旅行商问题,即TSP问题(Traveling Salesman Problem)是数学领域中著名问题之一。
假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。
路径的选择目标是要求得的路径路程为所有路径之中的最小值。
TSP问题是一个组合优化问题。
该问题可以被证明具有NPC计算复杂性。
因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。
遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程。
它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体。
这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。
后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。
群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。
要求利用遗传算法求解TSP问题的最短路径。
三、实验内容:1、参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。
2、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。
3、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。
4、上交源代码。
四、实验报告要求:1、画出遗传算法求解TSP问题的流程图。
2、分析遗传算法求解不同规模的TSP问题的算法性能。
规模越大,算法的性能越差,所用时间越长。
3、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。
用于求解TSP问题的遗传算法改进
用于求解TSP问题的遗传算法改进【摘要】The traveling salesman problem (TSP) is a well-known combinatorial optimization problem that has been widely studied in the field of computer science. In this paper, we focus on using genetic algorithms to solve the TSP problem and explore various strategies to improve the performance of genetic algorithms in this context.【关键词】TSP问题、遗传算法、改进策略、实验设计、效果评估、实际应用、未来研究、背景介绍、研究意义、研究目的、遗传算法原理、遗传算法在TSP问题中的应用、改进方法实验设计、评估效果、展望未来1. 引言1.1 背景介绍Traditional methods for solving the TSP involve exhaustive search algorithms, such as the brute-force approach or dynamic programming. However, these methods become computationally expensive as the number of cities increases,making them impractical for real-world problems with large datasets.1.2 研究意义TSP问题(Traveling Salesman Problem)是一种经典的组合优化问题,用于描述一个旅行商从一个城市出发,经过每个城市且仅经过一次,最终回到出发城市的路径规划问题。
遗传算法解决TSP问题【精品毕业设计】(完整版)
GA(Fitness,Fitness_threshold,p,r,m)
Fitness:适应度评分函数,为给定假设赋予一个评估分数
Fitness_threshold:指定终止判据的阈值
p:群体中包含的假设数量
r:每一步中通过交叉取代群体成员的比例
m:变异率
初始化群体:P←随机产生的p个假设
在本程序的TSP问题中一共有20个城市,也就是在图模型中有20个顶点,因此一个染色体的长度为20。
3.3适应函数f(i)
对具有n个顶点的图,已知各顶点之间( , )的边长度d( , ),把 到 间的一条通路的路径长度定义为适应函数:
对该最优化问题,就是要寻找解 ,使f( )值最小。
3.4选择操作
选择作为交叉的双亲,是根据前代染色体的适应函数值所确定的,质量好的个体,即从起点到终点路径长度短的个体被选中的概率较大。
(2)交叉(Crossover):对于选中进行繁殖的两个染色体X,Y,以X,Y为双亲作交叉操作,从而产生两个后代X1,Y1.
(3)变异(Mutation):对于选中的群体中的个体(染色体),随机选取某一位进行取反运算,即将该染色体码翻转。
用遗传算法求解的过程是根据待解决问题的参数集进行编码,随机产生一个种群,计算适应函数和选择率,进行选择、交叉、变异操作。如果满足收敛条件,此种群为最好个体,否则,对产生的新一代群体重新进行选择、交叉、变异操作,循环往复直到满足条件。
3.变异:使用均匀的概率从Ps中选择m%的成员.对于选出的每个成员,在它表示中随机选择一个为取反
4.更新:P←Ps
5.评估:对于P中的每个h计算Fitness(h)
从P中返回适应度最高的假设
3.
3.1 TSP问题的图论描述
基于遗传算法的TSP问题研究本科生毕业论文
学位论文原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。
涉密论文按学校规定处理。
作者签名:日期: 年 月 日
导师签名: 日期: 年 月 日
摘要
TSP问题(Traveling Salesman Problem)是已知有n个城市,现有一推销员必须遍访这n个城市,且每个城市只能访问一次,最后又必须返回出发城市。要安排其访问次序,使其旅行路线的总长度最短。TSP是经典的NP-hard组合优化问题之一,也是一个测试算法优劣性的标准问题,且现实中有很多应用问题都可归结或转化为TSP问题。故对此问题的求解具有理论与实用两方面的意义。传统的求解方法在面对较大规模的问题时,很不容易得到最优解。
作者签名:日期: 年 月 日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
Abstract
The TSP question is one of most classical NP—hard combination optimization questions,and it is also a standard question to test algorithm performance.In the reality,there al e many application questions can be summed up or converted intoTSP.Therefore solve this problem is significance with both the theory and practical.To large-scale problems,the traditional solution method is too行商问题是一个理想化的问题,大多数对于此问题的研究都不是为了直接的实际应用,但这些研究可以经转化后用于许多现实的组合优化问题。在现实生活中,有许多问题都可以归结为TSP问题,如电路板钻孔路线选择、车辆路线问题、计划任务、连锁店货物配送路线、管道铺设、火炬接力等问题,这些问题的求解策略均可依据TSP问题的求解算法来加以实施。所以TSP问题在计算理论上和实际应用上都有很高的价值,将直接带动整个组合优化领域新的发展。而遗传算法是一种的元启发式优化算法,基于遗传算法在许多方面有重要的应用空间。基于此原因,本文的主要是用遗传算法的基本算子解决TSP这个有意义的NP难问题。
基于改进型遗传算法的TSP算法【精品毕业设计】(完整版)
基于改进型遗传算法的TSP算法马明智摘要本文基于传统的遗传算法,在变异步骤中采取精英策略的思想,保留最优秀个体,将其存入系统全局变量中,后面的每一代依旧重复此操作,确保系统最终得到的最优解是整个遗传操作过程中出现过的最优解。
关键词变异;遗传算法;精英策略1 引言现代社会虽然交通发达,两地之间有时甚至可以转瞬既至,但路径问题仍是当今算法界中比较热门的话题,也是一门比较实用的话题,比如现在的导航设备中的导航路线,在现代繁华的大都市中,找寻到一条可行且路程较短的路线并不是一件容易的事,因此为了满足人们的需求,各种搜寻软件应运而生,如,google的map等。
路径问题中一个经典的问题是旅行商问题,也证实了旅行商问题是NP难题,虽然旅行商现在已经拥有了各种解法,结果也很好,但仍是业界追捧的一大话题。
本文也是基于旅行商问题来进行研究。
遗传算法GA( genetic algorithm) 最早由美国密歇根大学的John Holland 提出。
具有自组织、自适应、自学习和群体进化功能有很强的解决问题的能,在许多领域都得到了应用。
遗传算法以其广泛的适应性渗透到研究与工程的各个领域,已有专门的遗传算法国际会议,每两年召开一次,如今已开了数次,发表了数千篇论文,对其基本的理论、方法和技巧做了充分的研究。
今天,遗传算法的研究已成为国际学术界跨学科的热门话题之一。
旅行商是一个古老且有趣的问题它可以描述为:给定n个城市以及它们之间的距离dij (城市i到城市j的距离),求解从其中一个城市出发对每个城市访问,且仅访问一次,最后回到出发的城市,应当选取怎样的路线才能使其访问完所有的城市后回到初始的城市且走过的路程最短。
旅行商问题已被证明是属优化组合领域的NP难题,而且在现实中的许多问题都可以转化为旅行商问题来加以解决。
解决旅行商问题最一般的方法就是枚举出所有可能的路线然后对每一条进行评估最后选取出路程最短的一条即为所求解。
解决旅行商问题的各种优化算法都是通过牺牲解的精确性来换取较少的耗时,其他一些启发式的搜索算法则依赖于特定的问题域,缺乏通用性,相比较而言遗传算法是一种通用性很好的全局搜索算法。
[精品文档]遗传算法解决10城市TSP问题的方案设计
应用遗传算法解决10城市TSP问题的方案设计姓名:学号:2010-12-27一、问题描述××计划近期在北京、天津、武汉、深圳、长沙、成都、杭州、西安、拉萨、南昌10个城市间进行一次自驾周游旅行,为了尽量节省旅行开支,××希望能通过某种方法,找到一条使自驾选择路线里程数最少或相对较少的旅行路线。
对于以上问题,若给定已知10个城市之间的公路里程如表1所示,并要求应用遗传算法编程实现求解,该如何处理?二、算法设计根据任务要求,本文采用遗传算法实现编程求解。
在具体求解之前,还需确定以下几点:编码方法,种群规模,选择算子,交叉概率和变异概率。
①编码方法常用的遗传算法编码方法有:二进制编码、Gray编码、实数编码、有序串编码等。
采用二进制编码在求解中容易导致Hamming悬崖,并且要求给出求解精度以确定位串长度;Gray编码虽然能较好地克服Hamming悬崖,但在进行交叉变异时,交叉和变异位的选择也会使得问题复杂。
综合分析,本文中选择实数编码方法,分别用数字0—9表示北京、天津、武汉、深圳、长沙、成都、杭州、西安、拉萨、南昌10个城市。
图1 代价数组这样,城市间的距离信息就可以用如图1所示二维数组表示:即对于编号分别为a 、b 的两个城市,它们之间的距离在代价数组中表示为元素Cost_table[a][b]的值。
②种群规模遗传算法中,初始种群的生成、选择、交叉以及变异都是随机进行的,因此,对于同一个问题,种群规模的大小将直接影响到算法的进化速度。
这是因为,当种群规模较大时,在每一代中通过交叉、变异产生以往没有出现过的个体的概率会大大增加,这样也会使得在下一代中出现靠近最优解个体的概率增加,再通过合适的选择算法,就能达到加快进化的目的。
本文中选择种群规模为100。
③选择算子最常用的选择算子是“轮盘赌”法,其次还有“确定性”法和最佳个体保存方法。
若采用“轮盘赌”法,则需要计算每个个体被选中的概率1()()()i i N ii F x p x F x ==∑,考虑到本文中种群规模取为100,因此平均每个个体被选中的概率相对较小,实际进行“轮盘赌”效果不一定会很好,本文中不选该方法。
用遗传算法解决TSP问题
用遗传算法解决TSP问题设计思路:1.初始化城市距离采用以城市编号(i,j=1代表北京,=2代表上海,=3代表天津,=4代表重庆,=5代表乌鲁木齐)为矩阵行列标的方法,输入任意两个城市之间的距离,用矩阵city表示,矩阵中的元素city(i,j)代表第i个城市与第j个城市间的距离。
2.初始化种群通过randperm函数,生成一个一维随机向量(是整数1,2,3,4,5的任意排列),然后将其赋给二维数组group的第一列,作为一个个体。
如此循环N次(本例生成了50个个体),生成了第一代种群,种群的每个个体代表一条路径。
3.计算适应度采用的适应度函数为个体巡回路径的总长度的函数。
具体为adapt(1,i)=(5*maxdis-dis) (1) 在式(1)中,adapt(1,i)表示第i个个体的适应度函数,maxdis为城市间的最大距离,为4077km,dis为个体巡回路径的总长度,这样定义的适应度,当路经越短时适应度值越大。
在适应度值的基础上,给出的计算个体期望复制数的表达式为adaptnum(1,i)=(N* adapt(1,i)/ sumadapt) (2) 其中,sumadapt为种群适应度之和。
4.复制采用优秀个体的大比例保护基础上的随机数复制法。
具体做法为在生成下一代个体时,先将最大适应度对应的路径个体以较大的比例复制到下一代,然后再用随机数复制法生成下一代的其他个体。
其中,有一个问题必须考虑,即若某一次生成的随机数过大,结果能复制一个或极少个样本。
为了避免这一情况,采用了限制措施,即压低了随机数的上限。
5.交叉采用的方法为按步长的单点交叉,为随机选择一对样本,再随机选择一个交叉点位置,按一定的步长进行交叉点的选择。
选择一个步长而不是将其设为1,是因为若某一位置处的城市代码因为进行了交叉而发生了改变,则其经过该处的两个距离都会改变。
这种交叉兼有遗传和变异两方面的作用,因为若交叉点处的城市编号都相同,则对两个个体而言交叉后样本无变化,否则样本有变化。
遗传算法毕业论文【精品毕业设计】(完整版)
目录1 引言 (1)2 问题描述 (2)3 基于遗传算法TSP算法 (2)3.1 基于遗传算法的TSP算法总体框架 (2)3.2算法的详细设计 (3)3.2.1 解空间的表示方式 (3)3.2.2 种群初始化 (4)3.2.3适应度函数 (4)3.2.4选择操作 (4)3.2.5交叉操作 (5)3.2.6变异操作 (6)3.2.7进化逆转操作 (6)3.3 实验结果分析 (7)4 基于模拟退火算法的TSP算法 (10)4.1 SA算法的实现过程 (10)4.2 算法流程图 (10)4.3模拟退火算法的实现过程 (10)4.4实验结果 (11)5 对两种算法的评价 (14)5.1遗传算法优缺点 (14)5.2 模拟退火算法的优缺点 (15)6结语 (15)参考文献 (17)附录: ............................................................................................................ 错误!未定义书签。
廊坊师范学院本科生毕业论文论文题目:基于遗传算法与模拟退火算法的TSP算法求解10大城市最短旅途论文摘要:TSP问题为组合优化中的经典的NP完全问题.本论文以某旅行社为中国十大旅游城市--珠海、西安、杭州、拉萨、北京、丽江、昆明、成都、洛阳、威海制定最短旅途为例,分别利用基于遗传算法的TSP算法与基于模拟退火算法的TSP算法求解10大城市旅游路线问题.本论文给出了遗传算法与模拟退火算法中各算子的实现方法,并展示出求解系统的结构和求解系统基于MATLAB的实现机制.利用MATLAB软件编程,运行出结果,并对基于遗传算法的TSP算法结果与基于模拟退火算法的TSP算法的结果进行比较,描述其优缺点,并选择最为恰当的TSP算法,实现最短旅途的最优解.关键词:遗传算法;模拟退火算法;TSP;最短路径;Title:TSP Algorithm Based on Genetic Algorithm or Simulated Annealing Algorithm for Solving the Shortest Journey of 10 CitiesAbstract:TSP problem is a classic NP problem about combinatorial optimization.This article takes a travel agency looking for the shortesttrip of ten tourist cities in China-Zhuhai,Xi'an,Hangzhou,Lhasa,Beijing,Lijiang,Kunming,Chengdu,Luoyang and Weihai forinstance,and solves this problem by TSP algorithm based on geneticalgorithm and simulated annealing algorithm.The article gives theimplementations of every operator of genetic algorithm and simulatedannealing algorithm and demonstrates the architecture and theimplementation mechanism of the solving system based on MATLAB.Iprogram and operate the results by MATLAB software,and compare theresults based on genetic algorithm and simulated annealingalgorithm.And describe their advantages and disadvantages so thatchoose the most appropriate TSP algorithm to achieve the optimalsolution for the shortest path.Keywords:genetic algorithm;simulated annealing algorithm;TSP;the shortest path1 引言TSP问题为组合优化中的经典问题,已经证明为一NP完全问题[1],即其最坏情况下的时间复杂性随着问题规模的扩大,按指数方式增长[2],到目前为止不能找到一个多项式时间的有效算法.TSP问题可描述为:已知n个城市相互之间的距离,某一旅行商从某个城市出发访问每个城市一次且仅一次,最后回到出发城市,如何安排才使其所走路线最短.TSP问题不仅仅是一个简单的组合优化问题,其他许多的NP完全问题可以归结为TSP问题,如邮路问题、装配线上的螺帽问题和产品的生产安排问题等,使得TSP问题的有效求解具有重要的意义.本文中的TSP算法主要采用遗传算法与模拟退火算法.遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择,适者生存”的演化法则[3].遗传算法把问题参数编码为染色体,再按照所选择的适应度函数,利用迭代的方式进行选择、交叉、变异以及进化逆转等运算对个体进行筛选和进化,使适应值大的个体被保留,适应值小的个体被淘汰[4],新的群体继承了上一代的信息,又优于上一代,这样反复循环,直至满足条件,最后留下来的个体集中分布在最优解的周围,筛选出最优个体作为问题的解.模拟退火算法的出发点是基于物理中固体物质的退火过程与一般的组合优化问题之间的相似性[5],该算法是一种优化算法,其物理退火过程由三部分组成,分别为:加温过程、等温过程、冷却过程.其中,加温过程对应算法设定初温,等温过程对应算法的Metropolis[6]抽样过程,冷却过程对应控制参数的下降.这里能量的变化就是目标函数,要得到的最优解就是能量最低态[7].Metropolis准则是SA算法收敛于全局最优解的关键所在,Metropolis 准则以一定的概率接受恶化解,这样就使算法跳离局部最优的陷阱.2 问题描述本案例为某旅行社为中国十大旅游城市,分别为珠海、西安、杭州、拉萨、北京、丽江、昆明、成都、洛阳、威海,根据全程路径最短为目的,制定最优的旅游顺序依次游玩这十个城市.这类问题就由TSP算法来解决,寻找出一条最短遍历这10个城市的路径.利用google地图找到城市坐标,下表为这十个城市的位置坐标如表2-1所示.表2-1 10个城市的位置坐标3 基于遗传算法TSP算法3.1 基于遗传算法的TSP算法总体框架TSP问题的遗传算法包括编码设计、种群初始化、适应度函数选择、终止条件设定、选择操作设定、交叉操作设定以及变异操作设定和进化逆转操作.为简化TSP问题的求解,假设每个城市和其它任意一个城市之间都以欧氏距离[8]直接相连.遗传算法TSP问题的流程图如图2-1所示.。
TSP问题的遗传算法求解 优化设计小论文
TSP问题的遗传算法求解摘要:遗传算法是模拟生物进化过程的一种新的全局优化搜索算法,本文简单介绍了遗传算法,并应用标准遗传算法对旅行包问题进行求解。
关键词:遗传算法、旅行包问题一、旅行包问题描述:旅行商问题,即TSP问题(Traveling Saleman Problem)是数学领域的一个著名问题,也称作货郎担问题,简单描述为:一个旅行商需要拜访n个城市(1,2,…,n),他必须选择所走的路径,每个城市只能拜访一次,最后回到原来出发的城市,使得所走的路径最短。
其最早的描述是1759年欧拉研究的骑士周游问题,对于国际象棋棋盘中的64个方格,走访64个方格一次且最终返回起始点。
用图论解释为有一个图G=(V,E),其中V是顶点集,E是边集,设D=(d ij)是有顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶点且每个顶点只能通过一次的具有最短距离的回路。
若对于城市V={v1,v2,v3,...,vn}的一个访问顺序为T=(t1,t2,t3,…,ti,…,tn),其中ti∈V(i=1,2,3,…,n),且记tn+1= t1,则旅行商问题的数学模型为:min L=Σd(t(i),t(i+1)) (i=1,…,n)旅行商问题是一个典型组合优化的问题,是一个NP难问题,其可能的路径数为(n-1)!,随着城市数目的增加,路径数急剧增加,对与小规模的旅行商问题,可以采取穷举法得到最优路径,但对于大型旅行商问题,则很难采用穷举法进行计算。
在生活中TSP有着广泛的应用,在交通方面,如何规划合理高效的道路交通,以减少拥堵;在物流方面,更好的规划物流,减少运营成本;在互联网中,如何设置节点,更好的让信息流动。
许多实际工程问题属于大规模TSP,Korte于1988年提出的VLSI芯片加工问题可以对应于1.2e6的城市TSP,Bland于1989年提出X-ray衍射问题对应于14000城市TSP,Litke于1984年提出电路板设计中钻孔问题对应于17000城市TSP,以及Grotschel1991年提出的对应于442城市TSP的PCB442问题。
遗传算法求解TSP问题MATLAB实现-精品
遗传算法求解TSP 问题MATLAB 实现摘要:旅行商问题(TSP )是一个经典的优化组合问题,本文采用遗传算法来求解TSP 问题,深入讨论了遗传算法解决TSP 问题的求解过程,并通过MATLAB 对算法进行了实现,最后对实验结果进行分析,并与粒子群算法进行对比和分析。
关键字:TSP ;遗传算法;粒子群算法0.引言旅行商问题是一个经典的优化组合问题,它可以扩展到很多问题,如电路布线、输油管路铺设等,但是,由于TSP 问题的可行解数目与城市数目N 是成指数型增长的,是一个NP 难问题,因而一般只能近似求解,遗传算法(GA )是求解该问题的较有效的方法之一,当然还有如粒子群算法,蚁群算法,神经网络算法等优化算法也可以进行求解。
遗传算法是美国学者Holland 根据自然界“物竞天择,适者生存”现象而提出的一种随机搜索算法,本文采用MATLAB 来实现遗传算法解决TSP 问题。
1.旅行商问题旅行商问题可以具体描述为:已知n 个城市之间的相互距离,现有一个推销员从某一个城市出发,必须遍访这n 个城市,并且每个城市只能访问一次,最后又必须返回到出发城市,如何安排他对这些城市的访问次序,可使其旅行路线的总长度最短。
用图论术语来表示,就是有一个图g=(v,e),其中v 是定点5,e 是边集,设d=(dij)是有顶点i 和顶点j 之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶点且每个顶点只通过一次的最短距离的回路。
若对与城市v={v1,v2,v3…vn}的一个访问顺序为t=(t1,t2,t3…,tn),其中ti ∈v(i=1,2,..n),且记tn+1=t1,则旅行上问题的数学模型为式1:min ((),(1))(1,....,)I d t i t i i n δ =+ = (1)2.遗传算法与粒子群算法2.1遗传算法遗传算法的基本原理是通过作用于染色体上的基因寻找好的染色体来求解问题,它需要对算法所产生的每个染色体进行评价,并基于适应度值来选择染色体,使适应性好的染色体有更多的繁殖机会,在遗传算法中,通过随机方式产生若干个所求解问题的数字编码,即染色体,形成初始种群;通过适应度函数给每个个体一个数值评价,淘汰低适应度的个体,选择高适应度的个体参加遗传操作,经过遗产操作后的个体集合形成下一代新的种群,对这个新的种群进行下一轮的进化。
遗传算法解决TSP问题的matlab程序【精品毕业设计】(完整版)
1.遗传算法解决TSP 问题(附matlab源程序)2.知n个城市之间的相互距离,现有一个推销员必须遍访这n个城市,并且每个城市3.只能访问一次,最后又必须返回出发城市。
如何安排他对这些城市的访问次序,可使其4.旅行路线的总长度最短?5.用图论的术语来说,假设有一个图g=(v,e),其中v是顶点集,e是边集,设d=(dij)6.是由顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶7.点且每个顶点只通过一次的具有最短距离的回路。
8.这个问题可分为对称旅行商问题(dij=dji,,任意i,j=1,2,3,…,n)和非对称旅行商9.问题(dij≠dji,,任意i,j=1,2,3,…,n)。
10.若对于城市v={v1,v2,v3,…,vn}的一个访问顺序为t=(t1,t2,t3,…,ti,…,tn),其中11.ti∈v(i=1,2,3,…,n),且记tn+1= t1,则旅行商问题的数学模型为:12.min l=σd(t(i),t(i+1)) (i=1,…,n)13.旅行商问题是一个典型的组合优化问题,并且是一个np难问题,其可能的路径数目14.与城市数目n是成指数型增长的,所以一般很难精确地求出其最优解,本文采用遗传算法15.求其近似解。
16.遗传算法:17.初始化过程:用v1,v2,v3,…,vn代表所选n个城市。
定义整数pop-size作为染色体的个数18.,并且随机产生pop-size个初始染色体,每个染色体为1到18的整数组成的随机序列。
19.适应度f的计算:对种群中的每个染色体vi,计算其适应度,f=σd(t(i),t(i+1)).20.评价函数eval(vi):用来对种群中的每个染色体vi设定一个概率,以使该染色体被选中21.的可能性与其种群中其它染色体的适应性成比例,既通过轮盘赌,适应性强的染色体被22.选择产生后台的机会要大,设alpha∈(0,1),本文定义基于序的评价函数为eval(vi)=al23.pha*(1-alpha).^(i-1) 。
【精品】基于遗传算法的TSP问题研究本科生毕业论文设计
设计题目:_____基于遗传算法的TSP问题研究_ 学院:_______计算机与信息学院 __ _____毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日目录摘要 (I)Abstract (II)第1章绪论 ............................................................. - 1 -1.1旅行商问题........................................................ - 1 -1.2研究意义 ......................................................... - 1 -1.3 论文的组织结构................................................... - 1 - 第2章遗传算法理论概述.................................................. - 2 -2.1遗传算法的起源和发展.............................................. - 2 -2.2遗传算法基本原理.................................................. - 3 -2.3遗传算法的基本步骤................................................ - 4 -2.4 遗传算法的流程图................................................. - 4 -2.5遗传算法的特点.................................................... - 5 -2.6遗传算法的应用.................................................... - 6 - 第3章 TSP问题及研究的基本方法.......................................... - 8 -3.1 TSP问题概述...................................................... - 8 -3.2 TSP的应用与价值.................................................. - 8 -3.3 TSP问题的数学模型................................................ - 9 -3.4 TSP 问题的分类................................................... - 9 -3.5 现有的求解TSP问题的几种算法 .....................................- 10 - 第4章遗传算法在TSP的应用..............................................- 12 -4.1遗传算法在TSP上的应用............................................- 12 -4.2算法的实现........................................................- 12 -4.3编码 .............................................................- 12 -4.4初始化种群........................................................- 13 -4.5适应度函数........................................................- 13 -4.6选择操作 .........................................................- 13 -4.7交叉操作 .........................................................- 15 -4.8变异操作 .........................................................- 17 -4.9实验结果 .........................................................- 18 - 结论 ..................................................................- 20 - 展望 ....................................................................- 20 - 参考文献 .............................................................- 21 - 致谢 ..................................................................- 22 - 附录程序 ................................................................- 23 -摘要TSP问题(Traveling Salesman Problem)是已知有n个城市,现有一推销员必须遍访这n 个城市,且每个城市只能访问一次,最后又必须返回出发城市。
遗传算法解决旅行商问题(TSP)
遗传算法解决旅⾏商问题(TSP)这次的⽂章是以⼀份报告的形式贴上来,代码只是简单实现,难免有漏洞,⽐如循环输⼊的控制条件,说是要求输⼊1,只要输⼊⾮0就⾏。
希望会帮到以后的同学(*^-^*)⼀、问题描述旅⾏商问题(Traveling-Salesman Problem,TSP)。
设有n个互相可直达的城市,某推销商准备从其中的A城出发,周游各城市⼀遍,最后⼜回到A城。
要求为该旅⾏商规划⼀条最短的旅⾏路线。
⼆、⽬的为了解决旅⾏商问题,⽤了遗传算法,模拟染⾊体的遗传过程,进⾏求解。
为了直观的更有⽐较性的观察到程序的运⾏效果,我这⾥程序⾥给定了10个城市的坐标,并计算出其任意两个的欧⽒距离,10个点的位置排布见图1。
程序的理想最优距离为20.485281,即绕三⾓形⼀圈,⽽且路程起点不固定,因为只要满⾜点围着三⾓形⼀圈即为最短距离,最优解。
所以问题转换为,求图中10 个点的不重复点的闭环序列的距离最⼩值。
图 1三、原理1、内部变量介绍程序总体围绕了遗传算法的三个主要步骤:选择--复制,交叉,变异。
给定了10个种群,即10条染⾊体,每条染⾊体都是除⾸位外不重复的点组成,⾸尾相同保证路线是闭合的,所以⼀条染⾊体包含11个点。
种群由⼀个结构体group表⽰,内含城市的序列int city[11]、种群的适应度double fit、该种群适应度占总群体适应度的⽐例double p,和为了应⽤赌轮选择机制的积累概率 double jlleigailv。
程序还包括⼀个始终记录所有种群中的最优解的城市序列数组groupbest[11],记录最优解的适应度,即最⼤适应度的变量 double groupbestfit。
种群的最⼤繁衍代数设置为1000,⽤户能够输⼊繁衍代数,但必须在1000以内。
10个点的不同排列序列有10!种,即3628800中排列可能,其中各代之间可能产⽣重复,不同种群间也会出现重复,学⽣觉得1000左右应该能验证程序的性能了,就定为1000。
chapter 基于遗传算法的TSP问题
第?章 基于遗传算法的TSP 问题?.1 案例背景?.1.1 城市垃圾收运最短路线问题城市垃圾自其产生到最终被送到处置场处理,需要环卫部门对其进行收集与运输,这一过程称为城市垃圾的收运。
某城市垃圾收运过程简化如下:该城市有有276处垃圾收集点,和1个中转站,垃圾车从垃圾中转站出发,经过每个垃圾点清理垃圾,针对表?-1中给出的垃圾中转站和收集点的坐标信息数据,求垃圾车收运的最短路线。
表?-1 案例数据表注:Stop_ID :收集点编号,X ,Y 分别为该点的坐标,单位为feet ;Stop_Type :收集点类型(1:垃圾收集点,2:垃圾中转站);由于垃圾收集点位于城市街道中,故本问题中两点之间距离考虑采用Manhattan 距离:(11221212(,) ((,),(,)distance x y x y x y x x x y y y =-+-== )。
通过分析,我们知道属于TSP 问题(Traveling Salesman Problem 即旅行商问题),是指已知n 个城市之间的相互距离,现有一个推销员必须遍访这n 个城市,并且每个城市只能访问一次,最后又必须返回出发城市,如何安排访问次序使旅行路线的总长度最短。
TSP 问题是一个典型的组合优化问题,其最优解的求解代价是指数级的。
已经证明TSP 问题是一个NP 难问题,其可能的路径数目与城市数目n 是成指数型增长的,所以一般很难精确地求出其最优解。
在本章中,我们希望能找到解决TSP 问题的有效算法,参考中国邮递员问题,对遗传算法进行改进以适应本模型约束的要求来进行建模和求解。
?.1.2 遗传算法简述遗传算法(Genetic Algorithm )是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法,是由美国的J.Holland 教授1975年首先提出,在组合优化、机器学习、信号处理、自适应控制和人工生命等领域有广泛的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验题目:的遗传算法解决TSP 问题姓名:***
班级:智能1001
学号:***********
一:问题描述
旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行商问题,货郎担问题,是数学领域中著名问题之一。
假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。
路径的选择目标是要求得的路径路程为所有路径之中的最小值。
TSP问题是一个组合优化问题。
该问题可以被证明具有NPC计算复杂性。
因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。
二:遗传算法的基本原理
遗传算法是由美国J. Holland 教授于1975 年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。
遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。
遗传算法,在本质上是一种不依赖具体问题的直接搜索方法,是一种求解问题的高效并行全局搜索方法。
遗传算法在模式识别、神经网络、图像处理、机器
学习、工业优化控制、自适应控制、负载平衡、电磁系统设计、生物科学、社会科学等方面都得到了应用。
在人工智能研究中,现在人们认为“遗传算法、自适应系统、细胞自动控制、混沌理论与人工智一样,都是对今后十年的计算技术有重大影响的关键技术”。
基本步骤为:
标准的遗传算法包括群体的初始化,选择,交叉,变异操作。
所示,其主要步骤可描述如下:
(1)随机产生一组初始个体构成的初始种群,并评价每一个个体的适配值。
(2)判断算法的收敛准则是否满足。
若满足输出搜索结果;否则执行以下步骤。
(3)根据适配值大小以一定方式执行选择操作。
(4)按交叉概率Pc 执行交叉操作。
(5)按变异概率Pm 执行变异操作。
(6)返回步骤(2)
算法流程图为:
三:TSP问题的遗传算法设计
初始种群:对于n个城市的问题,每个个体即每个解的长度为n ,用s 行, t列的pop矩阵表示初始群体,s表示初始群体的个数,t为n+1,矩阵的每一行的前n个元素表示城市编码,最后一个元素表示这一路径的长度。
这一算法通过start.m程序实现。
适应度:在TSP的求解中,可以直接用距离总和作为适应度函数。
个体的路径长度越小,所得个体优越,以pop矩阵的每一行最后一个元素作为个体适应值。
选择:选择就是从群体中选择优胜个体、淘汰劣质个体的操作,它是建立在群体中个体适应度评估基础上。
这里采用方法是最优保存方法。
算法就是首先将群体中适应度最大的k个个体直接替换适应度最小的k个体。
交叉:受贪婪算法的启发, 本文设计一种有目的使适应值上升的交叉算子。
已知两a1(m11,m12,m13,...,m1n),a2(m21,m22,m23,...,m2n),算法产生后代a1’和a2’的过程如下:
(1) 随机产生一个城市d作为交叉起点, 把d作为a1’和a2’的起始点
(2) 分别从a1和a2中找出d的右城市dr1和dr2,并计算(d,dr1)和(d,dr2)的距离j1和j2。
(3) 如果j1<j2,则把dr1作为a1'的第二个点,从a1和a2中删除d,并且把当前点改为dr1.转步骤(5)。
(4) 如果j1>j2,则把dr2作为a1'的第二个点,从a1和a2中删除d,并且把当前点改为dr2。
(5) 若此时p1和p2的个数为1,结束,否则回到第二步继续执行。
同理,把第二步中的右城市改成左城市dle1和dle2,通过计算(d,d1e1)和(d,d1e2) 的距离并比较大小来确定子代a2'。
变异:变异操作是以变异概率Pm对群体中个体串某些基因位上的基因值作变动,若变异后子代的适应度值更加优异,则保留子代染色体,否则,仍保留父代染色体。
这里采用的方法是倒置变异法。
假设当前个体X为(1 3 7 4 8 0 5 9 6 2)。
如果Pm>rand,那么随机选择
来自同一个体的两个点mutatepoint(1)和mutatepoint(2),比如说3和7,倒置P1和P之间的部分,产生下面的子体X'为(1 3 7 5 0 8 4 9 6 2)。
四:实验代码
1主函数部分
clc;
clear all;
close all;
global x y
cityfile = fopen( 'city30.txt', 'rt' ); %取30个城市的样本
cities = fscanf( cityfile, '%f %f',[ 2,inf] );
fclose(cityfile);
t=30+1; %城市的数目是30个
s=1500; %样本的数目是1400个
G=300; %运算的代数
c=25; %选择算子中每次替代的样本的数量
x=cities(1,:);
y=cities(2,:);
pc=0.10; %交叉的概率
pm=0.8; %变异的概率
pop=zeros(s,t); %得初始的pop矩阵,矩阵的最后一列表示所在行的样本的路径距离
for i=1:s
pop(i,1:t-1)=randperm(t-1); %随机产生1—(t-1)的t-1个数
end。