“PPP 实验”这四个字放在不同圈子里,指向的东西完全不一样。做通信的朋友第一反应是点对点协议,做政务项目的会想到某种合作模式,而在测绘、导航、地信这个圈子里,它几乎默认指精密单点定位(Precise Point Positioning)——一台接收机、一份观测文件、一套精密产品,不架基准站、不做双差,硬算出一条厘米级的坐标。我带的几批实习生里,十个人有八个第一次跑这个实验时,结果曲线像心电图一样乱跳,最后发现不是算法问题,是产品文件拿错了日期。
这篇东西写给三类人:刚接触这个实验、需要交一份能看的结果报告的学生;想把手上的低成本终端数据榨出更多精度的工程人员;以及被“为什么我的解算不收敛”折腾过好几晚、想找人复盘的同行。我会把原理拆开讲清楚为什么这么设置参数,把流程拆到你照着敲就能跑通,再把我踩过的坑按症状分类列出来。不聊产品,只聊怎么把这件事做对。
1. PPP 实验的原理底座与方案取舍
1.1 伪距单点定位和精密单点定位差在哪一环
先把最基础的一层说清楚,不然后面全是空中楼阁。普通接收机自己就能给出的位置,精度在米级到十米级,原因是它把卫星轨道和卫星钟差当成“已知”,而这份“已知”来自广播星历。广播星历的轨道误差量级在米级,钟差误差折算成距离也是米级,这两项直接顺着观测方程灌进结果里,再怎么调滤波器也压不下去。
精密单点定位做的事情非常朴素:把“已知”换掉。轨道换成事后精密星历,误差压到厘米级;钟差换成精密钟差产品,误差压到亚纳秒,折算距离约 2 到 3 厘米。剩下的电离层,用双频组合消掉一阶项;对流层,用模型加待估参数吃掉;天线相位中心、固体潮、海潮负荷、相位缠绕,一项项改正。最后剩下的未知数只有三向坐标、接收机钟差、天顶对流层湿延迟和一堆模糊度。
这个思路的代价也很明显:精密产品是事后生成的,最快也要几小时,最慢要两周;滤波器要从零开始收敛,没有基准站给它提供先验约束。所以这个实验的核心矛盾从来不是“能不能算”,而是“收敛要多久、收敛后稳不稳”。理解这一点,后面所有参数设置才有依据。
1.2 双频无电离层组合的系数是怎么算出来的
电离层对测距码是延迟、对载波相位是超前,且大小与频率平方成反比。这个特性给了我们一个很漂亮的消元手段:把两个频率的观测值按特定系数线性组合,让电离层一阶项正好抵消。
具体系数不是拍脑袋来的。设 f1 为 1575.42 MHz、f2 为 1227.60 MHz,令
- α = f1² / (f1² − f2²)
- β = −f2² / (f1² − f2²)
代入数值:f1² ≈ 2.4819×10⁶,f2² ≈ 1.5069×10⁶,差值约为 9.7505×10⁵。于是 α ≈ 2.5454,β ≈ −1.5454,两者相加正好等于 1,这是组合后几何项不被改变的前提。伪距组合写作 P_IF = 2.5454·P1 − 1.5454·P2,载波组合同理。
代价是噪声被放大。组合噪声系数为 √(α² + β²) = √(2.5454² + 1.5454²) ≈ 2.98,也就是观测噪声被放大到接近 3 倍。这就是为什么无电离层组合的伪距精度只有米级的量级,而相位虽然本身很干净,放大三倍后也要靠长时间平滑才压得住。做实验时如果发现伪距残差普遍偏大,先别怀疑数据质量,这属于组合本身的固有代价。
注意:无电离层组合只消一阶项,二阶项残留量级在厘米以下,一般实验可以忽略;但如果你在做毫米级形变监测,这部分得单独处理。
1.3 为什么不直接用双差:两条技术路线的边界
刚接触的人几乎都会问同一个问题:既然要厘米级,为什么不用双差?双差确实更快,几十秒就能固定,精度也稳。但它有两个硬约束:一是有距离限制,基线拉长到几十公里以上,对流层和电离层的空间相关性迅速变差,固定率断崖式下跌;二是必须有基准站,得有人在你附近架一台,还得有数据链路。
精密单点定位的定位逻辑正好相反:它不依赖任何本地基准,代价是把本该由基准站消掉的那些误差全部改成“自己估”。这个取舍决定了它的适用场景非常明确——大范围稀疏控制、海上和偏远地区作业、无人机与车载轨迹的事后处理、形变监测点上没有条件架基准站的情况,以及作为双差结果的独立检核手段。
现在也有中间路线,用实时改正数把精密产品和对流层、电离层信息播发给终端,收敛能压到几分钟。但作为教学和入门实验,我建议还是从纯事后做起,因为你能看到滤波器从发散到收敛的完整过程,能亲手调参数看结果怎么变,这种体感是拿改正数直接喂出来的结果给不了的。
1.4 实验条件的三条路线选择
动手之前先评估自己的条件,大致分三档。
第一档是零门槛路线,用在线精密定位服务。上传观测文件,等几分钟,下载结果。优点是当天就能出东西,适合第一次建立整体印象,也适合验证数据本身有没有问题。缺点是中间量全看不见,收敛过程、残差、模糊度状态一概不知,出了问题只能猜。
第二档是开源后处理套件,圈内常用的就那么几款,配置式运行,参数全部暴露。这是我推荐的主线,因为你能拿到残差文件、模糊度序列、钟差估计值,排查问题时有据可依。缺点是配置项多,第一次跑容易在文件路径和格式上翻车。
第三档是商用软件,流程封装好,批量处理方便,出报告规范。适合已经跑通、需要批量化出成果的阶段,但学习价值不如第二档。
我自己的做法是:先用第一档跑一遍确认数据没问题,再用第二档精调,最后如果需要批量出图再考虑第三档。
2. 数据、产品与工具的准备细节
2.1 观测文件与精密产品的配套关系
这个实验对文件配套的敏感程度远超一般人的想象。最少需要的东西是:一份观测文件(RINEX 格式,3.x 版本更通用)、一份精密星历(SP3,间隔 15 分钟或 5 分钟)、一份精密钟差(CLK,间隔 30 秒或 5 秒)。这三份文件的日期必须严格落在同一时段内,且覆盖你观测的完整时间窗。
精密钟差的采样间隔比观测常常更粗,比如观测是 1 秒采样、钟差是 30 秒采样,中间需要插值。线性插值在 30 秒间隔下误差可控,但如果钟差出现缺口,插值会直接崩掉,表现为某个时段解算突然跳变。我在排查时养成了一个习惯:先用文本工具把钟差文件的头段翻一遍,看起止时间和间隔声明,确认再往下走。
下面这张表是我每次实验前必查的清单,列出来供对照。
| 文件类型 | 用途 | 关键核对项 | 常见疏漏 |
|---|---|---|---|
| 观测文件 RINEX | 原始观测值 | 年积日、时段、采样率、天线型号与序列号 | 文件名日期与实际观测日不符 |
| 精密星历 SP3 | 卫星轨道 | 坐标系版本、起止时间、卫星列表 | 用了前一天的星历 |
| 精密钟差 CLK | 卫星钟差 | 时间系统、采样间隔、卫星编号一致性 | 与星历不配套 |
| 天线改正文件 | 相位中心改正 | 接收机和卫星天线型号匹配 | 天线型号写成随意的默认值 |
| 地球自转参数 | 坐标框架转换 | 日期连续覆盖 | 跨日界时缺一天 |
| 海潮负荷文件 | 沿海测站改正 | 测站名匹配 | 内陆站误用造成虚假改正 |
天线那一栏我要单独强调。接收机天线的相位中心偏差在水平方向可以到厘米级、垂直方向到十厘米级,型号填错相当于人为引入一个系统性偏差,而且这个偏差在坐标序列上表现得非常“平稳”,你根本看不出异常,只会觉得精度就是差那么一截。我见过一个案例,解算结果水平重复性很好,但和已知坐标差了 8 厘米,查了两天才发现天线型号填成了同系列另一个型号。
2.2 目录结构与命名规范:别让低级错误毁掉一整晚
配置式软件最容易出问题的地方不是参数,是路径。我给自己的规矩是每次实验新建一个以日期命名的工程目录,里面固定几个子目录:观测数据、精密产品、辅助文件、配置、输出、日志。所有文件名保持原始下载名不做任何修改,因为很多套件会根据文件名自动识别年份和年积日。
一个典型的目录结构长这样:
ppp_lab_20240315/ ├── obs/ # RINEX 观测与导航文件 ├── prods/ # SP3、CLK、ERP、BLQ、天线文件 ├── aux/ # 测站信息、已知坐标、坐标框架说明 ├── conf/ # 运行配置文件 ├── out/ # 解算结果与残差 └── log/ # 运行日志年积日的换算是新手最容易算错的一步。以 2024 年 3 月 15 日为例,2024 是闰年,31(1 月)+ 29(2 月)+ 15 = 75,所以年积日是 075。写配置文件时这个数字要出现在好几处,错一处就对不上。我的做法是先把这个数字写在纸上贴在显示器边上,配完文件后逐项核一遍。
提示:所有时间统一用协调世界时,不要混入本地时间。差 8 小时在观测文件里表现为整段数据对不上产品,症状是“所有卫星高度角都不合理”。
2.3 软件环境的搭建与最小验证
开源套件的安装通常有两条路:源码编译和预编译包。前者麻烦但版本可控,后者快但依赖容易冲突。我的建议是先跑预编译包,确认能出结果,再用源码编译替换,这样出问题时能判断是环境问题还是配置问题。
编译前把编译器、数学库、压缩库这几样依赖确认好,缺一个会在链接阶段报一堆看不懂的错。编译完成后不要急着上真实数据,先跑套件自带的示例数据。示例数据是作者验证过的,能跑通说明环境没问题,跑不通就是环境问题,这个判断能省掉大量时间。
# 示例性质的最小验证流程 cd ppp_lab_20240315 ./gnss_proc -k conf/static_demo.ini -o out/ -l log/run.log tail -n 50 log/run.log日志尾部如果出现滤波器更新的记录、卫星数统计和残差均方根,说明流程走通了。反过来,如果日志停在第几行不动,或者直接报“文件打开失败”,那就是路径问题,回去查配置里的相对路径和工作目录。
2.4 观测数据的预检:三分钟看出数据能不能用
正式解算前我会花三分钟做一次快速体检,看四件事。
一是观测时长。静态实验至少要 1 小时,想拿到稳定厘米级最好 2 小时以上;只有 20 分钟的数据也能出解,但那叫“发散过程中的一个点”,不能当结果用。
二是卫星数。把观测文件里的卫星列表扫一眼,看每个历元有多少颗卫星、有没有整段缺失。少于 5 颗卫星的时段基本没救。
三是数据完整性。看有没有大段的空历元,尤其是中间断掉一截的,这种数据滤波器会重新收敛。
四是多路径迹象。如果测站周围有玻璃幕墙、水面或者大面积金属屋面,伪距残差会明显偏大,这种数据能算但精度上限受限。
这四项检查不需要任何软件,看文本文件头段和统计摘要就够了。养成这个习惯以后,很多“解算不收敛”的问题在开始之前就被拦掉了。
3. 核心参数设置与算子细节
3.1 高度角截止、采样率与周跳探测阈值
高度角截止是第一个要拍板的参数。设 10 度是行业默认值,理由是低高度角卫星的对流层延迟大、多路径重、信噪比低,观测值质量差,留着反而拖累解算。城市环境可以把截止提到 15 度,代价是可见卫星数减少,几何结构变差。我试过在遮挡严重的位置开到 20 度,结果卫星只剩四颗,滤波器直接瘫掉——截止角不是越高越好,要在卫星数和质量之间找平衡。
采样率的选择取决于用途。静态观测降到 30 秒完全够用,计算量小、周跳判断也更稳。动态观测必须保持 1 秒或更高,因为平台在动,降采样会丢掉运动信息。有个反直觉的点:静态数据把采样率降到 60 秒甚至 120 秒,精度不会明显变差,但对流层湿延迟的估计会变粗,收敛反而更慢。我一般静态就守 30 秒不动。
周跳探测靠两个组合打配合。几何无关组合(GF)用两个频率的载波相减,消掉几何距离和钟差,剩下电离层变化和周跳。无周跳时它的变化是平缓的,跳一下就是周跳。判据一般设 0.05 米,约四分之一个波长。另一个是 Melbourne-Wübbena 组合,宽巷波长约 86 厘米,判据设 0.5 到 1 周,它对粗差和大的周跳更敏感。
两个组合互补:GF 对小周跳灵敏但受电离层扰动影响,MW 对电离层不敏感但噪声大。实际配置里我会把两个都打开,任一触发就标记为可疑历元,让模糊度在该历元重置。这里有个经验值:采样率越低,GF 的阈值应该放得越宽,因为相邻历元间隔大,电离层自然变化本身就大。
3.2 各项误差改正的取舍与量级判断
误差改正项很多,但不是每一项都值得开。判断标准是量级:明显超过你目标精度的必须改,远小于目标精度的可以省。
天线相位中心必须改。接收机天线有相位中心偏差和变化,卫星天线也有。这两项加起来在垂直方向可以到十厘米量级,水平方向厘米量级。配置文件里要填天线型号和序列号,让程序去查改正表。
固体潮必须改。量级最大可以到三十多厘米,径向为主,周期是半日和全日。这一项不改,你的高程解会有一个明显的周期波动,看起来像“精度差”,其实是没改正。
海潮负荷要看位置。沿海测站可以到几厘米,内陆测站只有毫米级。如果你的测站在内陆,开了这项也不会错,但别指望它改善什么;如果在沿海,不开就是几厘米的系统偏差。
相位缠绕在静态实验中影响相对小,可以靠长时间平滑吸收;但对旋转平台、无人机这类姿态变化的载体,相位缠绕变化可以达到半个波长,必须建模。
对流层是最需要手工调的一项。天顶干延迟用模型算,约 2.3 米,稳定;湿延迟只有几厘米到四十厘米,随机性强,必须作为参数估计。配置里通常给一个先验值 0.15 米,再给一个过程噪声谱密度控制它随时间变化的自由度。这个谱密度的取值直接决定收敛速度和解的稳定性:给小了,滤波器反应迟钝,真实的水汽变化跟不上;给大了,解会抖。
| 改正项 | 典型量级 | 是否必开 | 备注 |
|---|---|---|---|
| 天线相位中心 | 厘米至十厘米 | 必开 | 型号填错等于人为引入偏差 |
| 固体潮 | 最大约 30 厘米 | 必开 | 高程方向为主 |
| 海潮负荷 | 毫米至几厘米 | 沿海必开 | 内陆影响很小 |
| 极潮 | 约 2 厘米以内 | 建议开 | 成本低 |
| 相位缠绕 | 最大半个波长 | 动态必开 | 静态可被平滑吸收 |
| 相对论效应 | 分米级 | 必开 | 多数套件默认处理 |
| 差分码偏差 | 分米至米级 | 建议开 | 影响模糊度固定 |
3.3 从浮点解到固定解:模糊度固定的判断标准
无电离层组合的模糊度不是整数,因为组合过程把两个频率的模糊度混在一起,还叠上了卫星和接收机的硬件延迟。所以默认得到的是浮点解,收敛后水平精度大概在分米到厘米之间,能不能再进一步,就看模糊度能不能固定。
固定需要额外的偏差产品或者星间单差消掉接收机端的硬件延迟。做法上有全固定和部分固定两种。我强烈建议从部分固定开始:先挑高度角高、连续跟踪时间长、残差小的卫星组成子集固定,固定成功后再逐步扩大。全固定看起来激进,一旦有一颗卫星的偏差估错,整组都会错。
判断固定是否可信,看三个指标:比率检验值(ratio)大于 3 是常见门槛,低于这个值说明最优解和次优解区分度不够;固定后验残差应该明显下降;参与固定的卫星数不少于 5 颗,少于这个数几何结构撑不住。我见过 ratio 冲到 8 但固定后坐标反而跳了十几厘米的情况,事后查出来是有一颗卫星的偏差产品缺失,程序用了默认值硬撑。
注意:浮点钟差产品不能用来做固定。产品和固定策略必须配套,混用不会报错,只会安静地给你一个错的结果。
4. 完整实操流程:从空目录到一条收敛曲线
4.1 静态后处理的全流程与配置样例
整个流程我拆成六步,每一步都有明确的通过标准,不通过就不往下走,避免错误累积。
第一步,建目录、放数据。按第 2 章的结构建好,观测文件、星历、钟差、辅助文件各就各位。通过标准:文件齐全,日期一致。
第二步,核对天线信息。打开观测文件头段,找到天线型号和序列号,与控制文件里的记录比对。通过标准:型号在改正表里能查到。
第三步,写配置。下面是一份静态处理的配置骨架,参数值是我常用的起点,实际用时按数据情况微调。
# 静态 PPP 配置骨架(示例性质,字段名依套件而定) obs_file = obs/STATION_A_2024075.rnx nav_file = obs/brdc0750.24n sp3_file = prods/ finalsp3_2024075.sp3 clk_file = prods/ finalclk_2024075.clk antex_file = prods/ antenna_model.atx erp_file = prods/ erp_2024075.txt blq_file = prods/ ocean_loading.blq # 处理策略 mode = static freq_comb = iono_free elev_mask = 10.0 sample_rate = 30.0 # 误差模型 tropo_model = saastamoinen tropo_random_walk = 1.0e-4 iono_model = ifree tide_solid = on tide_ocean = on phase_windup = on # 估计器 estimator = ekf ambiguity = float max_iter = 30第四步,运行。把标准输出重定向到日志文件,跑的过程中盯一眼日志增长是否正常。
第五步,读日志。重点看三件事:初始历元用了多少颗卫星、滤波器在第几个历元第一次更新、残差均方根是否落在合理区间(相位残差通常在一厘米以内,伪距残差在米级以内)。
第六步,提取结果。把坐标时序导出来,看水平和高程两条曲线的收敛形态。
# 结果提取与简单统计(示例) awk '/^SOLUTION/ {print $2, $4, $5, $6}' out/station_a.pos > out/xyz.txt head -n 5 out/xyz.txt tail -n 5 out/xyz.txt4.2 动态与实时场景的差异处理
动态 PPP 的配置和静态差别不小,很多人直接把静态配置拿来跑动态数据,结果是曲线抖得没法看。
核心差别在过程噪声。静态时位置当作常数估计,过程噪声接近零;动态时位置每秒都在变,必须给位置一个合理的随机游走或者常速度模型。给得太小,滤波器跟不上真实运动,解会滞后;给得太大,噪声全放进来,解会抖。我的经验是从常速度模型起步,位置谱密度设在一个中等量级,跑一遍看残差,再往回收。
另一个差别是周跳处理。动态场景遮挡频繁,周跳密集,模糊度会不断重置。这时候不要指望固定解,浮点解能稳住就已经不错。
实时场景还多一层:改正数怎么进来、延迟多少、断了怎么办。实时链路常见的延迟在几秒到十几秒,意味着你解出来的位置对应的是十几秒前的位置。做轨迹后处理无所谓,做实时控制就必须把这个延迟算进去。链路中断时滤波器还能靠动力学模型外推一段时间,但超过半分钟基本就飘了。
| 场景 | 位置模型 | 过程噪声 | 模糊度策略 | 收敛预期 |
|---|---|---|---|---|
| 静态 | 常数 | 极小 | 浮点转固定 | 20 至 40 分钟 |
| 低速动态 | 常速度 | 中等 | 以浮点为主 | 30 分钟以上 |
| 高动态 | 常加速度 | 较大 | 基本不固定 | 视轨迹而定 |
4.3 精度评估:怎么判断这条曲线算不算“收敛了”
这一步最容易被糊弄。有人拿最后十个历元的坐标和已知值一比,差 2 厘米,就宣布精度 2 厘米。这个做法不严谨,因为最后几个历元的偶然性好误差太大。
我的评估流程是三步。先把坐标转换到站心坐标系(东、北、天三个方向),这样能直观看出水平和高程的差异。再以收敛完成后的时段(比如从第 40 分钟到结束)计算均方根误差和标准差,前者反映相对真值的偏差,后者反映稳定性,两个都要报。最后画一条坐标时序曲线,肉眼确认没有台阶、没有周期性波动。
收敛的判定我一般用这个标准:水平分量连续 10 分钟以上优于 10 厘米、垂直分量优于 20 厘米,视为进入收敛状态。这个阈值不算严格,但对实验场景够用。要报更高精度,就得延长观测时间、检查有无系统性偏差。
评估中还有一个细节:产品用的坐标框架和你的已知坐标框架必须一致。不同框架版本之间差几厘米是正常的,如果不统一,你算出来的“偏差”里有一部分其实是框架差异,不是解算误差。
5. 常见问题排查与踩坑实录
5.1 三类典型症状的对号入座
症状一:完全不收敛,曲线一路漂。先查时间系统。卫星钟差产品用的是卫星时间,观测文件用的是协调世界时,两者之间有个整数跳秒差,现在通常是 18 秒。差这 18 秒,所有卫星的位置和钟差全错位,结果就是彻底不收敛。再查产品日期,很多人在跨日界的时段里只下了一天的产品,后半段全靠外推,自然发散。最后查坐标框架,如果你的初始坐标给了一个完全不同的框架,滤波器起步就会偏很远。
症状二:收敛了,但中途跳变。八成是周跳没探测出来。去看残差文件,找跳变时刻对应的卫星,看它的几何无关组合是不是有台阶。另一个可能是卫星升降导致几何结构突变,这种情况会在日志里有卫星数变化的记录。还有一种隐蔽情况:钟差文件在某个时刻有缺口,插值产生了一个错误的钟差,影响所有卫星。
症状三:稳定但精度差一截。这种最难查,因为解算看起来完全正常。按可能性排序:天线型号填错、对流层过程噪声设置不当、多路径严重、精密产品用了精度较差的等级。天线问题前面讲过,特征是和已知坐标有稳定的系统性偏差。对流层设置不当的特征是高程方向偏差大、水平方向还行。多路径的特征是残差偏大但没有明显台阶。
5.2 问题速查表
| 现象 | 优先怀疑 | 快速验证方法 | 处理方式 |
|---|---|---|---|
| 全程发散 | 时间系统差 18 秒 | 看日志首个历元的钟差估计值是否异常大 | 统一时间系统 |
| 前段好中段崩 | 产品缺口或跨日界 | 检查产品文件起止时间 | 补齐产品 |
| 高程偏差大 | 对流层或固体潮未开 | 逐项开关改正对比 | 打开改正并调过程噪声 |
| 水平稳定偏移 | 天线相位中心 | 换用正确天线型号重跑 | 修正型号和序列号 |
| 坐标跳变 | 未探测周跳 | 查残差文件的组合序列 | 收紧周跳阈值 |
| 固定后反而变差 | 偏差产品不配套 | 关掉固定只跑浮点对比 | 换配套产品或退回浮点 |
| 卫星数骤减 | 高度角截止过高 | 降到 10 度对比 | 调整截止角 |
| 残差整体偏大 | 数据质量或多路径 | 看信噪比分布 | 换时段或换站点 |
5.3 几个反直觉的坑
第一个坑:观测时间越长不一定越好。如果天线在观测过程中被碰了一下,或者脚架有轻微下沉,长时段数据的后半段会带着一个缓慢漂移,滤波器把它当成真实运动吸收进去,结果反而比只用前 40 分钟更差。我的做法是画坐标时序先看有没有台阶,有台阶就截断。
第二个坑:最终产品不一定比快速产品好。如果观测时段正好横跨产品发布的时间边界,你手上那份“最终产品”可能只覆盖了一半时段,另一半靠外推,反而不如一份完整的快速产品。文件完整性优先于产品等级。
第三个坑:采样率降得太狠。有人为了跑得快,把 1 秒数据降到 120 秒,结果周跳探测失效、对流层估计变粗,收敛时间翻倍,得不偿失。计算量不是瓶颈的话,老老实实保持原始采样率。
第四个坑:坐标系版本。产品通常基于某一版国际地球参考框架,而随手拿到的已知坐标可能是另一版,两者差几厘米。这不是解算误差,但会污染你的精度评估。做对比前先确认框架版本,必要时做框架转换。
第五个坑:初始坐标给得太随意。有些套件允许从单点定位结果起步,有些需要你给一个粗略坐标。给得太离谱(比如差几度),滤波器要花很长时间拉回来,看起来像“不收敛”。先跑一遍伪距单点定位拿到米级初值,能省不少事。
5.4 一份可复现的实验记录表
最后分享我自己用的记录表格式,每次实验填一份,出问题时能快速回溯是哪一步改了东西。
| 项目 | 本次取值 | 上次取值 | 变化说明 |
|---|---|---|---|
| 观测时段 | |||
| 采样率 | |||
| 高度角截止 | |||
| 产品等级 | |||
| 天线型号 | |||
| 对流层谱密度 | |||
| 模糊度策略 | |||
| 收敛时间 | |||
| 水平均方根 | |||
| 高程均方根 |
这张表的价值在于对比。单次实验的结果好不好,你其实没有判断基准;有了历史记录,某次结果突然变差,翻表就能看出是不是某个参数被改过。我带人做实验时要求每个人填这张表,两个月下来,大部分“疑难问题”在翻表的过程中自己就解决了。
这套流程跑顺之后,后续还可以往几个方向扩展:把多系统组合打开看收敛能快多少,把固定策略换成部分固定看能提升多少,或者把同一份数据用不同产品等级各跑一遍,做一条精度和时延的权衡曲线。这些都比单纯追求一个更小的数字有意思。