在较早的帖子,我制定了创建横跨美国所有主要高速公路的公路旅行地图的计划。 我讨论了如何设置网络以及用于查找路径的算法。 在这篇文章中,我将向您展示我找到的最终路径以及我如何缩小我的终极公路旅行。
在我第一次运行搜索算法之前,我快速总结了我的网络,看看是否有任何额外的约束可以添加来帮助找到路径。 原来,有几个:
- Hwy 3 仅与另外两条高速公路相交:Hwy 2 和 Hwy 4。 这意味着序列 2-3-4 或 4-3-2 将是路径的固定部分。
- Hwy 48 也只与另外两条高速公路相交:Hwy 33 和 Hwy 11。 这意味着序列 33-48-11 或 11-48-33 将是路径的固定部分。
- 57 号高速公路在技术上只与另一条高速公路相连:83 号高速公路。 它的终点在墨西哥边境和通往圣安东尼奥的 I-35。 然而,它离 90 号高速公路很近,所以很想让它连接到那个高速公路。 但是,规则就是规则,对吧? … 说,是不是约翰·萨尔在那边?! 对,在那边!... 它不是?... 你确定?... 伙计,我可以发誓就是他。 无论如何,正如我所说,Hwy 57 仅连接到 Hwys 83 和 90,因此这意味着序列 83-57-90 或 90-57-83 将是路径的固定部分。
- 最后,Hwy 46 只连接另外两条高速公路:Hwy 1 和 Hwy 9。 然而,这是一个有趣的案例,因为这“两个”交叉点实际上只是一个交叉点。 你看,这个交叉口发生的地方(新泽西州帕利塞德公园),1 号高速公路和 9 号高速公路同时运行。 所以这意味着 1-46、9-46、46-9 或 46-1 中的任何一个都将是路径上的固定点。 此外,这也意味着该路径将以 46 号公路开始或结束。
第一轮:搜索!
在仔细地将这些约束放入我的算法之后,我决定从 Hwy 46 开始路径并运行算法。 有几条高速公路被遗漏了,所以我使用了填补空白方法的方法 1 将它们重新安装回去(“移植和重试”方法)。 重试三遍后……成功!! 图 1 显示了第一次尝试的原始输出。
Figure 1: Raw output of first attemptFigure 1: Raw output of first attemptFigure 1: Raw output of first attemptFigure 1: Raw output of first attempt图 1:第一次尝试的原始输出这对我的口味来说有点太笨重了,所以我进去了,在谷歌地图的一些友好帮助下,用额外的点填充了一些线,以增加更多的曲率并更接近实际路线。 我还在我的数据中添加了一个标记类型列,我可以用它来识别我路径上的主要城市和地标。 为了避免过多的标记使图表拥挤,我复制了纬度列,删除了该列中与主要城市或地标无关的值,然后使这些点使用该列作为其“Y 轴”(您可以通过选择相应组下的变量箭头来执行此操作JMP图形生成器)。 顺便说一句,我在这里使用的背景地图是美国各州强加的街道地图视图(边界线设置为比默认值略深的灰色)。
经过这一点整理后,我得到了图 2 所示的路径。
Figure 2: Cleaned version of first attemptFigure 2: Cleaned version of first attemptFigure 2: Cleaned version of first attemptFigure 2: Cleaned version of first attempt图 2:第一次尝试的清理版本
我可以想象您对这张地图的一些反应如下:
- 啊啊啊!! 那是什么?! 太可怕了!! 看起来有人给了一个 2 岁的孩子一个很好的小费标记和一张美国地图供其绘制。
- 所以我可以弄清楚你从哪里开始和在哪里结束,但是你到底是怎么到达那里的? 我认为佐治亚州亚特兰大的意大利面十字路口很糟糕……
- 嘿,你完全错过了我的状态! (来自加利福尼亚州、亚利桑那州、罗德岛州和缅因州的居民)。
- 加拿大之行是怎么回事? (这个很简单。 有趣的事实:Hwy 2 在设计上分为东部和西部! 要穿越这一切,需要绕道进入加拿大。 这里没有投诉!)。
好的,好的,所以我承认第一次尝试有很多问题。 对我来说最值得注意的是它完全错过了几个州,这肯定不适用于全国各地的公路旅行(对不起,阿拉斯加和夏威夷;我希望你能理解)。 那么为什么这些州被排除在外呢? 好吧,为了回答这个问题,我首先做了我应该做的事情:绘制网络!!
图 3 显示了我按照上一篇文章所述编译的高速公路网络。
Figure 3: The highway intersection network visualizedFigure 3: The highway intersection network visualizedFigure 3: The highway intersection network visualizedFigure 3: The highway intersection network visualized图 3:可视化的高速公路交叉口网络
从这个图中,我们可以清楚地看到为什么错过了这些状态。
- 加利福尼亚没有十字路口,只有结束或开始(那里有一个深刻的声明)。
- 缅因州只有一个十字路口,恰好位于霍尔顿的 1 号和 2 号高速公路之间。 这个交叉点很容易在路径搜索中被忽略。
- 亚利桑那州只有两个十字路口; 60 号和 95 号高速公路(左)和 60 号和 70 号高速公路(右)。 与上一点的推理相同。
- 罗德岛只有一个十字路口:Hwys 6 和 44。
第二轮:万众期待的续集!
掌握了从图 3 中收集到的信息后,是时候添加更多约束以确保每个状态都被访问且充分访问。
- 为了确保参观加州,我决定从 101 号高速公路开始,这条路从洛杉矶开始,几乎沿着该州的整个海岸延伸。 这条路仍然需要以 46 号高速公路结束。
- Hwy 101 之后的下一条高速公路有四种连接方式。 我最初选择从 Hwy 26 开始,因为这个选项会带您穿越波特兰和胡德山。
- 我将 4-3-2 固定点扩展到现在包括 Hwy 1。 这迫使缅因州成为路径的一部分,尽管它不再允许在 2 号公路上延长旅行(对不起,加拿大)。
- 我在路径中添加了一个 60-70 和 93-95 的固定点,由于算法的性质,这最终将导致链 93-95-60-70 或反之亦然成为路径的一部分。 这迫使亚利桑那州成为这条道路的一部分,并让拉斯维加斯也成为其中的一部分。 别客气。
- 我还决定将 52 号高速公路添加到 83-57-90 链中,因为 52 号高速公路和 83 号高速公路在北达科他州迈诺特相交。 这使得北达科他州的覆盖范围更大。 所有州都应该分享爱。
添加了这些新约束后,我重新运行了算法,只剩下一条高速公路。 所以我使用填充间隙方法的方法 2 将其重新添加(“尝试每个选项”方法)。 经过一些清理后,得到了图 4 所示的地图。
Figure 4: The second attempt at a road tripFigure 4: The second attempt at a road tripFigure 4: The second attempt at a road tripFigure 4: The second attempt at a road trip图 4:公路旅行的第二次尝试好吧,至少现在每个州都有一些报道,尽管它仍然有点混乱。 这次旅行我仍然不太热衷的一件事是怀俄明州的环路。 事实证明,Hwys 87 和 85 与从丹佛下来的 I-25 几乎同时运行,这就是为什么它们会出现在这里的原因。 此外,看起来华盛顿州几乎没有任何报道,佛蒙特州也是如此。 因此,我添加了更多约束(包括切换到 Hwy 101 – Hwy 12 起点)并得到图 5 中所示的路径。
Figure 5: Yet another attempt at a road tripFigure 5: Yet another attempt at a road tripFigure 5: Yet another attempt at a road tripFigure 5: Yet another attempt at a road trip图 5:公路旅行的又一次尝试现在看起来好多了。 在我看来,与路径的某些部分仍然有很多重叠,但没有第 2 轮版本那么糟糕。
因此,我似乎能够通过最后两条路径解决“缺失状态”问题。 但是,布局中仍然存在相当多的疯狂。 感觉这篇文章已经完成了,所以在下一篇文章中,我将讨论我所做的一些调整,以尝试进一步清理路径并展示我的最终路径。
我有我做到的方式......虽然我可以保证这不是很容易。 本质上,当我填写一些路径时,我使用谷歌地图计算了驾驶时间和距离。 我还有另外两列可以跟踪累积时间和距离。 这是相当辛苦的,因为我必须确保这条路线沿着高速公路行驶,当它沿着州际公路行驶时变得更加困难,因为谷歌一直坚持走那条州际公路。 最后,我确实计算了第 2 轮地图的总距离,并在第 3 轮地图上接近,它们都在 36,000 英里左右(大约 650 小时的驾驶时间)。
我想你可以通过取停靠点之间的欧几里得(如乌鸦飞行)距离来近似总距离。 你显然会错过某些道路的一些细节,但我相信它足够接近实际使用。 使用 SAS 可以做到这一点,但我还不确定如何在 JMP 中做到这一点。
不错的工作! 我很好奇各种路线的总里程是多少。 你有一个简单的方法来计算吗?