参数自动调优(离线)
网格寻优 + 样本外验证 + 单参数上线 + 一键回滚
寻优方式
离线网格
只读计算,不写任何表
目标函数权重
0.5/0.3/0.2
满足率 / 超储 / 补调量 —— 可改,留审计
待复核草稿
1条
发布前必须样本外验证通过
已发布 / 已回滚
0 / 1
每次只上线一项参数
自动改参
关闭
开关 autotune.autoDraft(默认关闭);即便打开也只生成草稿,永不自动改参
i治理约束(四条都已实现):① 寻优只在离线执行、不写库;② 发布前必须过样本外验证(按门店切分训练/留出,留出集上不劣于当前参数才算通过);③ 每次只允许上线一项参数变更,发布时把旧值记成回滚点,可一键回滚;④ 自动改参默认关闭。
离线寻优
当前线上参数:满足周数 1.5 · 安全库存基数 0~3
18 组网格(满足周数 × 安全库存基数 × 分配口径),按目标函数排序;每组都带样本外验证结论。
「安全库存基数」允许区间写法(种子里是 0~3),引擎 safetyBase()
取的是最后一个数字(即上界 3)—— 所以候选值 3 与线上 0~3 视为同一档,不会记成一次变更(比较口径见 sameTunableValue())。
i和「算法治理」(/algo)是什么关系?两套独立的东西,代码上没有任何关联。
· 本页调的是「模型约束参数」里的两个值(满足周数 / 安全库存基数):发布后立即改变引擎结果(目标库存 → 补调量), 走的是样本外验证 + 一次只上线一项 + 回滚点 + 审计这条链路(台账就是本页下方的「变更台账(回滚点 = before_value)」卡片)。
· 算法治理页改的是那边「算法登记册」卡片里每条算法的状态(停用 / 灰度 / 回滚):从 2026-09-24 起它是真的接在计算上的 —— 「停用」会拦住对应阶段、「灰度」只按门店打分组标记、守卫超阈值会自动回滚;但它改不了公式(版本号只是台账), 也不会放行或阻止这里的发布(两处"治理约束""回滚"只是词一样)。
· 两处都会被人误当成一回事,所以口径写在页面上:本页是"改参数、真生效";算法治理是"拦阶段 / 打标记 / 熔断回滚",不改变算法本身。
· 本页调的是「模型约束参数」里的两个值(满足周数 / 安全库存基数):发布后立即改变引擎结果(目标库存 → 补调量), 走的是样本外验证 + 一次只上线一项 + 回滚点 + 审计这条链路(台账就是本页下方的「变更台账(回滚点 = before_value)」卡片)。
· 算法治理页改的是那边「算法登记册」卡片里每条算法的状态(停用 / 灰度 / 回滚):从 2026-09-24 起它是真的接在计算上的 —— 「停用」会拦住对应阶段、「灰度」只按门店打分组标记、守卫超阈值会自动回滚;但它改不了公式(版本号只是台账), 也不会放行或阻止这里的发布(两处"治理约束""回滚"只是词一样)。
· 两处都会被人误当成一回事,所以口径写在页面上:本页是"改参数、真生效";算法治理是"拦阶段 / 打标记 / 熔断回滚",不改变算法本身。
目标函数权重(可改,留审计)
目标值 = w1 × 平均满足率 − w2 × 超储占比 − w3 × 补调量占比;
三项非负且不能同时为 0。权重只影响**离线寻优的排序**,不影响线上预测。
待复核草稿(发布 = 一次只上线一项参数)
| # | 候选参数 | 满足周数 / 安全库存基数 | 样本外验证 | 验证结论 | 提出人 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|
| #3 | 满足周数 1.2 / 安全库存基数 0 / 分配 top_first | 1.2 / 0 | 通过 | 留出集目标值 -10.49 vs 当前 -103.05(差 +92.56) → 通过 | 页面操作 | 2026-09-24 10:38:11 |
变更台账(回滚点 = before_value)
每次只允许一项;回滚会把旧值写回并留痕(若期间被人改过则拒绝回滚,避免覆盖别人的改动)| # | 参数 | 回滚点(旧值) | 新值 | 状态 | 操作人 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|
| #2 | 满足周数 1.2 / 安全库存基数 0(历史记录未记参数键) | - | - | 已否决 | 页面操作 | 2026-09-24 10:39:06 | - |
| #1 | weeks_supply.normal | 1 | 1.2 | 已回滚 | 上线验证(AI 助手) | 2026-09-24 10:30:24 | - |