美国13509个城镇的经纬度和TSP旅行商回路

美国13509个城镇的经纬度和TSP旅行商回路

        在网上下载了美国美国13509个城镇的经纬度和TSP旅行商回路(下载网址:http://www.verysource.com/code/3731091_1/usa13509.opt.tour.html),按照网上的结果,13509个城市的回路结果是:19982859.

        我认为,下面这个表里面标示的经纬度,第一个城镇经度为81.7827778,纬度为24.552.778;第二个城镇经度为81.0905556,纬度为24.7133333;第三个城镇经度为81.0905556,纬度为24.7205556.利用球面距离公式=ROUND(ACOS(COS(H1)*COS(H2)*COS(I1-I2)+SIN(H1)*SIN(H2))*6371000,0)

1 245552.778 817827.778
2 247133.333 810905.556
3 247205.556 810188.889
4 249238.889 806280.556
5 250111.111 805152.778
6 254475.000 804794.444

计算出后面TSP旅行商回路中每相邻两个城镇之间的距离  1  2  3  4  5  6  7  8  9  11 14  12  10  13  15  18  20  21  22  17  19  16  23  24  ......  91  83  69  60  49  1,依次分别为  72139  7283  45465  14943  48658  2323   ......  9061  12914  157650
 单位:米,这样的总路径之和为 197891210米(这个结果的Exlel资料可见http://download.csdn.net/detail/duzuokanyunqi1/8419893  ),与19982859的差距太大,我想可能有这样几处出了问题,一、对经纬度的理解错误;二、距离公式不该用球面距离公式;三、距离单位不一样。希望得到对这个问题有研究的专家给予指点!

时间: 2024-10-31 14:52:14

美国13509个城镇的经纬度和TSP旅行商回路的相关文章

TSP 旅行商

THUOJ 数据结构(上)TSP 旅行商 点击查看题目:TSP旅行商 实现思路 建立邻接表 每读入一条边u->v,将其插入u中(后面将实现的tspNode中的边,是以其为出发点的边),并将v的入度+1 拓扑排序过程中计算最长道路经过的村庄数 算法:零入度拓扑排序,p166 of 数据结构(c++语言版)_邓俊辉 扫描所有节点,入度为0的入栈 从栈顶开始,每读一个节点a,扫描其边,相连节点b入度-1,ind变为0的入栈: 更新b'路径长度=max(a's+1,b'):更新max路径: 边界情况处理

遗传算法的简单应用-巡回旅行商(TSP)问题的求解

上篇我们用遗传算法求解了方程,其中用到的编码方式是二进制的编码,实现起来相对简单很多, 就连交配和变异等操作也是比较简单,但是对于TSP问题,就稍微复杂一点,需要有一定的策略, 才能较好的实现. 这次的TSP问题的题目是: 随机产生10~30个城市,每个城市之间的距离也是随机产生,距离的范围是[1,50],求最优的路径 ========================================================== 下面就是具体的求解,由于我的策略是基于知网上的<一种改进的遗

HDU 3001 Travelling:TSP(旅行商)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题意: 有n个城市,m条双向道路,每条道路走一次需要花费路费v.你可以将任意一个城市作为起点出发,然后遍历每一个城市,并保证同一个城市最多经过2次.问你遍历这些城市的最小费用是多少. 题解: 传统的TSP问题中,每个城市只能经过一次,做法为三重for循环,分别枚举城市的state.现在所处位置i.下一步要到达的城市j. 核心Code: 1 memset(dp,-1,sizeof(dp)); 2

hdu--3001--类似旅行商&lt;tsp&gt;

里面包含了很多内容的一道题 可以学到很多 题意 很简单 就是一个人 要绕城市一圈 不必回到起点 但是每个城市都要经过 并且最多每个重复走2次 注意 城市数量是 <=10的  如果 你以前就遇到过 类似的题 肯定能很快反应过来 状压dp 在某一维开个3维数组 0 1 2分别城市在该状态下经过某城市的次数为多少 所以 就是个 三进制的压缩  蛮好的 以前只听过二进制 我孤陋寡闻了 =_= dp转移方程很简单 主要是 枚举状态的时候 各种细节要注意 dp[ state+three[j] ][j] =

Hamilton回路 旅行商TSP问题 /// dp oj1964

题目大意: 给出一个n个顶点的无向图,请寻找一条从顶点0出发,遍历其余顶点一次且仅一次.最后回到顶点0的回路--即Hamilton回路. Input 多测试用例.每个测试用例: 第一行,两个正整数 n 和 e ,0 < n ≤ 21 ,n < e < n×n/2 ,表示该无向图的顶点个数,以及边的数量.顶点编号是0-n-1 第二行至e+1行,每行3个非负整数 u , v 和 w ,分别表示顶点u与顶点v之间有一条边,其权值为w . Output 如果存在多条Hamilton回路,请输出长

poj 3311 经典tsp问题,状压dp

题目链接:Hie with the Pie 解题思路: Floyd + 状态压缩DP题意是有N个城市(1~N)和一个PIZZA店(0),要求一条回路,从0出发,又回到0,而且距离最短也就是TSP(旅行商)问题,首先不难想到用FLOYD先求出任意2点的距离dis[i][j]接着枚举所有状态,用11位二进制表示10个城市和pizza店,1表示经过,0表示没有经过定义状态DP(S,i)表示在S状态下,到达城市I的最优值接着状态转移方程:DP(S,i) = min{DP(S^(1<<i-1),k) +

POJ 3311 Hie with the Pie(Floyd+状态压缩DP)

贴一个TSP讲解:点击打开链接 错误的转移方程 dp[i][j] 把i当作了步数,以为至多走N步就可以了.作死啊 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define maxn 1100 #define inf 0x3f3f3f3f const double eps=1e-8; using namespace std; int dp[12][1<

POJ 3311 Hie with the Pie(状压DP + Floyd)

题目链接:http://poj.org/problem?id=3311 Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfortunately, due to cutbacks, they can afford to hire only one driver to do the deliveries. He will wait fo

利用百度地图API和群蚁算法,对TSP问题进行模拟与求解

前言 最近由于换了工作,期间也有反思和总结上家公司的得失,总觉得有什么事情当初可以完成或者完成得更好,其中TSP问题就是其中之一.当初在开发一个仓配系统的时候,有一个线路排程的需求,当时自己简单在纸上画了思路,发现求精确解算法复杂度是N!,所以去百度,发现了NPC问题的概念,但是一直以来都没有对这个问题好好研究过,最终只是选择了贪心算法这一求近似解的方案,正好这是我的第一篇博客,就拿这个“遗憾”开刀吧. 1.  利用百度地图API模拟TSP的各个城市点 1.1. 调用百度地图API解析经纬度 这