traveling salesman

TSP(Traveling Salesman Problem)-----浅谈旅行商问题(动态规划,回溯实现)

两盒软妹~` 提交于 2021-01-02 19:21:00
  1.什么是TSP问题   一个售货员必须访问n个城市,这n个城市是一个完全图,售货员需要恰好访问所有城市的一次,并且回到最终的城市。   城市于城市之间有一个旅行费用,售货员希望旅行费用之和最少。   完全图:完全图是一个简单的无向图,其中每对不同的顶点之间都恰连有一条边相连。      2.TSP问题前提     回朔法:把所有的解列出来,形成一棵树,利用剪枝深度优先进行遍历,遍历的过程记录和寻找最优解。(剪枝就是把一条再深搜下去也不是最优解的分支剪去)。     动态规划:把一个大问题拆分成小问题,把小问题的最优结果通过表保留,在新问题需要用到的时候可以直接获取。     PS:下面的图,文字中出现1,2,3,4分别表示城市1,城市2,城市3,城市4   3.回朔法实现TSP问题     上面提到回朔法就是把所有的解列出来,形成一棵树,上面的例子形成的树如下:我们假设城市1为起点          上面介绍回溯法就是把所有解列出来,然后剪枝深搜。那么我们需要解决的就是剪枝深搜了。剪枝深搜中最麻烦的就是找到何时剪枝的条件了。     首先我们假设不知道剪枝条件,先模拟深搜跑一遍。           从1深搜到4回到1,花费11,记录这个数值。接下来回溯,继续深搜。一步一步深搜的时候,遇到了一个特殊的时候:          还记得我们之前记录的最短花费为11吗,1->2-

数学建模算法之粒子群算法

泄露秘密 提交于 2020-10-08 06:23:48
数学建模之粒子群算法 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。 粒子公式: 在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和新的位置: v[] = w * v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a) present[] = present[] + v[] (b) v[] 是粒子的速度, w是惯性权重,present[] 是当前粒子的位置. pbest[] and gbest[] 如前定义. rand () 是介于(0, 1)之间的随机数. c1, c2 是学习因子. 通常 c1 = c2 = 2. 这里我们主要讲解粒子群算法解决TSP问题 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一

GIS系列专题(5):使用遗传算法解决最优路径问题

偶尔善良 提交于 2020-10-01 11:29:27
本文非原创,而是节选自微信公众号AmazingRobot +的文章:《解决最优路径问题的算法》 遗传算法の解决最优路径问题 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。 — Edited By Hugo 1、遗传算法与生物进化学说: 遗传算法(Genetic Algorithm)遵循『适者生存』、『优胜劣汰』的原则,是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。 遗传算法模拟一个人工种群的进化过程,通过选择(Selection)、交叉(Crossover)以及变异(Mutation)等机制,在每次迭代中都保留一组候选个体,重复此过程,种群经过若干代进化后,理想情况下其适应度达到《近似最优》的状态。 自从遗传算法被提出以来,其得到了广泛的应用,特别是在函数优化、生产调度、模式识别、神经网络、自适应控制等领域,遗传算法发挥了很大的作用,提高了一些问题求解的效率。 2、遗传算法是一类模拟自然界遗传进化规律的仿生学算法,它不是一个具体的算法,而是一个算法簇。遗传算法是演化算法的一个分支

双调欧几里得旅行商问题(TSP)

落爺英雄遲暮 提交于 2020-05-07 03:01:50
最小环+欧拉回路=最短哈密顿图 介绍 TSP(Traveling Salesman Problem)即旅行商问题,是数学领域中著名问题之一。这个问题是这样的:假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径长度为所有路径之中的最小值。TSP是一个典型的组合优化问题,且是一个NP完全难题,关于NP的这个概念本文就不做详细介绍了,但简单的说就是:TSP问题目前尚不能找到一个多项式时间复杂度的算法来求解。 n个城市 第一次选择n-1个城市,第二次n-2... 即要遍历n!次,普通遍历复杂度太高 算法 所以TSP旅行商问题有以下4种算法 贪心算法 模拟退火算法 遗传算法 基本蚁群算法 https://blog.csdn.net/wordsin/article/details/79915328 双调欧几里得旅行商问题 这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直至出发点。事实上,存在确定的最优双调路线的O(n*n)时间的算法。 是对平面上给定的n个点确定一条连接各点的最短闭合旅程的问题。 题目描述 现在笛卡尔平面上有n(n<=1000)个点,每个点的坐标为(x,y)(-2^31<x,y<2^31,且为整数),任意两点之间相互到达的代价为这两点的欧几里德距离