跳到正文
拼车出行规划

使用指南

方案是怎么算出来的:计算规则(第 1 版)

先让尽量多的人搭上顺风车,再让总用时最少。这一页把规则、用到的数据和默认值都写明,方案页的页脚会标出用的是哪一版。

一句话

  • 先看有几个人能搭上顺风车,多的排前面;人数一样,再比总分钟数,少的排前面。
  • 没有付费排名,不偏向哪位成员:所有人都按同一套规则算。
  • 行车时间和车次相同,算出来的结果也相同。完全打平时,保留先算到的那个,和成员的填写顺序有关。
  • 在线版在你的浏览器里计算,服务器只转发高德查询、保存你的配置。

用到的数据

  • 高德驾车测距:各点之间的行车分钟数,是查询时的路况。在线版的节点会把同一个查询缓存 20 分钟。
  • 你填的车次:不开车的人到各个站坐的车,格式如 G1234 08:00→11:30。
  • 高德公共交通估算:没填车次也没填分钟数时用。高德跨城只给直达火车,不含换乘和刚开通的线路,可能不准。
  • 默认值:都没有的时候,按下面「默认值」表里的数估算。
  • 12306 站名表:「推荐车站」时用它去掉不办客运的站(多半是货运站)。排方案时不用。

硬性条件

下面这些不满足的组合,直接不考虑,不参与排序:

  • 空座:每辆车搭的人数不超过空座数,按同行人数算。
  • 绕路上限:每位车主的接人路线,比直达多出的分钟数不超过自己设的上限。返程可以单独设上限,也可以设成返程不开车送人。
  • 停车次数:每辆车最多停几个接人点。
  • 同行的一组不拆开:一起走的几个人,要么上同一辆车,要么一起打车。
  • 返程赶车次:填了回程车次的人,送到站的时刻要在发车前的提前量之前(默认 40 分钟);打车去站也一样。赶不上任何一个候选站的人,方案里标为需要单独安排。
  • 只停有人上下车的点:白停一站的组合不考虑。
  • 乘客能去的站:填了某些站的车次或分钟数的人,只会去这些站(返程看回程车次);设了「只考虑这些站」的人,也只去这些站。

怎么排序

满足硬性条件的组合,按下面的顺序比:

  1. 搭车人数,按同行人数算,多的在前。
  2. 总分钟,少的在前。
  3. 停车次数,少的在前。
  4. 以上都一样时,保留先算到的那个。

总分钟由三项相加,每个方案下面的「排序依据」会把三项写出来:

  • 车主多绕:接人路线的全程,减去直达,几位车主合计。
  • 乘客到上车点:搭上车的乘客,到上车点要多久。
    • 在家附近上车,记 0。
    • 去车站上车:填了车次的,记「首个发车时刻到最后到站时刻」的用时,再加去车站和候车的时间(默认 45 分钟);只填了分钟数的,就用这个分钟数。
    • 车次和分钟数都没填的,用高德公共交通估算。一个站都估算不到时,每个站记 60 分钟;只有部分站估算不到时,这些站不考虑。
    • 返程同理:用回程车次的用时,加上同样的去车站和候车时间;一个站都没填的,每个站记 60 分钟,不用高德公共交通估算。
  • 打车组:没搭上车的人,每人(同行的一组算一份)取最省的一个站,用时是到站用时,加上站到目的地的车程。返程是目的地到站的车程。

还有两点要说明:

  • 车主的一分钟和乘客的一分钟同等看待,三项直接相加。
  • 同行的一组按一份算,不乘人数。

时刻怎么推

  • 去程:填了车次时,每个接人点的上车时刻,是最晚到站的那位的到站时刻,加出站时间(默认 15 分钟)。车主的出发时间,从这些上车时刻往回推,取最晚的那个;早到的接人点,车主到了就在那里等。
  • 返程:从你填的散场出发时间往后推,依次算到各个送人点的时刻,要赶在发车前 40 分钟(默认)到站。
  • 打车费:粗估,按每分钟约 1 公里、每公里 2–3 元,每 4 个人一辆车,以实际为准。

默认值

配置里没写的选项,用下面的值。这些写在配置的 [options] 里(返程提前到站在 [return] 里),编辑页的「选项」和成员卡片里能改其中一部分。

选项默认值含义
最多绕路30 分钟每位车主愿意绕多久,可以按人单独设
最多停几次2 个每辆车最多停几个接人点
到站用时的估值60 分钟查不到乘客到站用时时,每个站按这个数算
去车站和候车45 分钟填了车次时,加在车上用时之外
下车到上车15 分钟列车到站后出站、走到接人点
返程提前到站40 分钟回程车次发车前多久要到站
公共交通估算的出发时刻08:00没填车次时,用这个时刻查高德
自动找站的范围120 公里一个候选站都没选就计算时,自动在目的地周边搜多远
自动找站最多留几个10 个同上

算得完的代价

车很多的时候,组合数会爆炸。为了能在浏览器里算完,每辆车只保留绕路最少的若干条路线:2 位车主各留约 170 条,3 位约 30 条,4 位约 12 条。所以结果不一定是理论上的最优,只是在这个范围内最好的。

目前没考虑的

这些也是以后可能改进的方向:

  • 几位车主之间负担是否均衡。
  • 等人的时间不计入总分钟:车主在站里等乘客,乘客在站里等车主。
  • 过路费、油费、停车费。
  • 出发当时的路况。
  • 高铁换乘和刚开通的线路(公共交通估算查不到)。
  • 站里停车和出站口的实际条件。
  • 同行人数多时,乘客用时要不要按人数加权。

有想法请到 GitHub 提 issue。

规则版本

  • 现在是第 1 版(2026-10)。
  • 方案页的页脚会标明用哪一版算的。
  • 以后改排序或口径,会升版本,并在更新记录里写明原因。只改界面或文字,不升版本。

源码

全部逻辑都在开源的 carpool.py 里:solve 枚举组合,evaluate 给每个组合打分,assign 把乘客分到车上。仓库里有固定场景的测试,规则一变测试就会失败,提醒同步更新这一页。

相关页面