使用指南
方案是怎么算出来的:计算规则(第 1 版)
先让尽量多的人搭上顺风车,再让总用时最少。这一页把规则、用到的数据和默认值都写明,方案页的页脚会标出用的是哪一版。
一句话
- 先看有几个人能搭上顺风车,多的排前面;人数一样,再比总分钟数,少的排前面。
- 没有付费排名,不偏向哪位成员:所有人都按同一套规则算。
- 行车时间和车次相同,算出来的结果也相同。完全打平时,保留先算到的那个,和成员的填写顺序有关。
- 在线版在你的浏览器里计算,服务器只转发高德查询、保存你的配置。
用到的数据
- 高德驾车测距:各点之间的行车分钟数,是查询时的路况。在线版的节点会把同一个查询缓存 20 分钟。
- 你填的车次:不开车的人到各个站坐的车,格式如
G1234 08:00→11:30。 - 高德公共交通估算:没填车次也没填分钟数时用。高德跨城只给直达火车,不含换乘和刚开通的线路,可能不准。
- 默认值:都没有的时候,按下面「默认值」表里的数估算。
- 12306 站名表:「推荐车站」时用它去掉不办客运的站(多半是货运站)。排方案时不用。
硬性条件
下面这些不满足的组合,直接不考虑,不参与排序:
- 空座:每辆车搭的人数不超过空座数,按同行人数算。
- 绕路上限:每位车主的接人路线,比直达多出的分钟数不超过自己设的上限。返程可以单独设上限,也可以设成返程不开车送人。
- 停车次数:每辆车最多停几个接人点。
- 同行的一组不拆开:一起走的几个人,要么上同一辆车,要么一起打车。
- 返程赶车次:填了回程车次的人,送到站的时刻要在发车前的提前量之前(默认 40 分钟);打车去站也一样。赶不上任何一个候选站的人,方案里标为需要单独安排。
- 只停有人上下车的点:白停一站的组合不考虑。
- 乘客能去的站:填了某些站的车次或分钟数的人,只会去这些站(返程看回程车次);设了「只考虑这些站」的人,也只去这些站。
怎么排序
满足硬性条件的组合,按下面的顺序比:
- 搭车人数,按同行人数算,多的在前。
- 总分钟,少的在前。
- 停车次数,少的在前。
- 以上都一样时,保留先算到的那个。
总分钟由三项相加,每个方案下面的「排序依据」会把三项写出来:
- 车主多绕:接人路线的全程,减去直达,几位车主合计。
- 乘客到上车点:搭上车的乘客,到上车点要多久。
- 在家附近上车,记 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 把乘客分到车上。仓库里有固定场景的测试,规则一变测试就会失败,提醒同步更新这一页。