旅行时间 ≈ 750 * 距离 ^ 0.6

本文探讨了旅行时间与距离之间的关系,提出了一种近似模型(travel time ~= 750 * distance ^ 0.6),并通过数据分析验证了该模型的有效性。作者通过使用GeoLife数据集和各种编程工具,分析了公共交通的旅行时间以及航空旅行的影响,发现旅行时间与距离之间存在有趣的幂律关系,甚至可扩展至考虑星际旅行的情境。

旅行时间 ~= 750 * 距离 ^ 0.6

旅行时间 ~= 750 * 距离 ^ 0.6

作为使用 ChatGPT 3.5 进行一次有趣实验的另一个练习,我决定探索一个有趣的问题:在_现实世界_中,从 A 点到 B 点旅行所需的时间如何随距离缩放?也就是说,如果你随机抽样那些人们实际所处的位置(所以,例如, 56% 的点 可能在城市中),并且你使用公共交通,旅行时间是如何随距离变化的?

显然,旅行时间的增长速度会慢于线性:你需要走的越远,你就有越多的可能性选择更快的运输方式,但它们都有一些固定的开销。除非在极少数幸运的情况下,如果你的目的地距离只有 170 米,则没有实际办法通过公交车更快地到达,但如果你的目的地距离是 170 千米,你突然就有更多的选择。如果是 1700 千米远,你可以选择飞机。

所以我问 ChatGPT 我需要哪些素材:

我选择了 GeoLife 数据集。我注意到虽然它声称是关于全球用户,但主要似乎集中在西雅图和北京的人们,尽管他们偶尔访问其他城市。也就是说,我不是完美主义者,我对此感到满意。我请 ChatGPT 给我写一个脚本,解析数据集并从每个文件中提取一个随机选择的坐标:

惊人的是,它在第一次尝试中_几乎_成功。它的错误是认为列表中的每一项都是一个数字 (values = [float(x) for x in line.strip().split(',')]),不过这可能在某种程度上是我的错:当我说“前两个 values ”时,它可能理解为整个行都是由“值”(即数字)构成的。

我手动修复了这个 bug。现在,我有了一种获取人们所处地点的随机选择点的方法,同时也有一个 API 用于获取这些点之间的公共交通旅行时间。

我又请它提供更多编程帮助:

  • 询问如何获取 Google Maps Directions API 的 API 密钥(它给出的答案似乎过时了,但确实成功地指向了正确的地方)
  • 编写一个函数以计算两个 GPS 坐标之间的直线距离(它第一次给出了正确的答案)
  • 给定 (距离, 时间) 的一组数据,绘制散点图,其中时间和距离作为轴,两个轴均以对数缩放(它第一次给出了正确的答案)
  • 对距离和时间的对数进行线性回归,以尝试将数据拟合到幂律(它第一次出现错误,第二次成功)

这给我带来了一些非常好的数据(这是过滤了 500 公里以下的距离,因为 500 公里以上的最佳路径几乎肯定包括飞行,而 Google Maps 的方向不考虑航班):

线性回归得到的幂律拟合是:travel_time = 965.8020738916074 * distance^0.6138556361612214(时间以秒为单位,距离以公里为单位)。

现在,我需要更长距离的旅行时间数据,其中最佳路线将包括航班。在这里,API 无法帮助我:我问 ChatGPT 是否有可以做到这一点的 API,但它没有给出令人满意的答案。我决定手动完成:

  • 我使用相同的脚本,但稍做修改,只输出点之间 超过 500 公里的配对。
  • 我在美国内选择前 8 个结果,以及至少有一个端点在美国外的前 8 个结果,跳过已覆盖的城市配对结果。
  • 对于每个结果,我手动获取:
    • to_airport:从出发点到最近机场的公共交通旅行时间,使用 Google Maps 在中国以外和 百度地图 在中国内。
    • from_airport:从最近机场到结束点的公共交通旅行时间
    • flight_time:从出发点到结束点的飞行时间。我使用 Google Flights 并始终选择顶部结果,除非顶部结果完全不合理(比最短的时间长超过 2 倍),这种情况下我选择最短的。
  • 我计算旅行时间的公式为(to_airport) * 1.5 +(国际航班则为 90 分钟,否则为 60分钟) + flight_time + from_airport。第一部分是一个相当激进的公式(就个人而言,我比这更保守),用于判断何时离开机场:国内航班时旨在提前 60 分钟到达,国际航班则提前 90 分钟,并将预期旅行时间乘以 1.5 倍,以防出现任何意外或延误。

这很无聊,我不想花太多时间在超过 16 次调查上;我推测如果我是一个严肃的研究人员,我应该已经在 TaskRabbit 或类似服务的平台上设置了帐号,这会使招聘其他人为我做这些任务变得容易,同时获取更多的数据。无论如何,16 条数据已经足够;我将结果数据放在这里

最后,纯粹出于好玩,我增加了一些关于前往太空中各种位置的旅行时间的数据:月球(我增加了 12 小时作为考虑乘客到达发射地点的平均旅行时间), 火星冥王星阿尔法 。你可以在这里找到我完整的代码

这是结果图表:

travel_time = 733.002223593754 * distance^0.591980777827876

什么?!从这个图表来看,似乎存在某种意外的精确关系支配着从 A 点到 B 点的旅行时间,这种关系居然适用于步行、地铁和公共汽车、飞机以及(!!)跨行星和假设的星际航天器等截然不同的交通媒介。我发誓这并不是精心挑选的数据;我没有删除任何不方便的数据,所有我检查的(包括太空的数据)都在图上。

这一次,ChatGPT 3.5 的表现令人印象深刻;它确实摔了更多次,但比我之前尝试提交的$IPFS bafyhashes 转换为十六进制 的经历要少得多。总体而言,ChatGPT 在教授我那些我以前从未听过但其他人常常使用的库和 API 方面似乎特别出色;这降低了业余爱好者和专业人士之间的入门门槛,这似乎是非常积极的事情。

所以看起来似乎有某种非常奇特的旅行时间分形定律。当然,不同的交通技术可能会改变这种关系:如果你将公共交通替换为汽车,将商业航班替换为私人飞机,旅行时间会变得更加线性。而一旦我们将思想上传到计算机硬件中,我们就能乘坐更疯狂的交通工具前往阿尔法星,例如 由地球上的光帆推动的超轻型飞行器,这可以让我们以接近光速的速度去任何地方。但就目前而言,似乎确实存在一种奇怪的一致关系,使得时间更接近距离的平方根。

  • 原文链接: vitalik.eth.limo/general...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Vitalik Buterin
Vitalik Buterin
https://vitalik.ca/