aps-agent/docs/round-80-cp-one-at-a-time-r...

3.1 KiB
Raw Permalink Blame History

Round 80 CP 整约束 one-at-a-time 重解记录

已完成

  • solver process 协议升级为 aps.solver-process.v2;普通 optimize_line_assignment 与诊断 baseline/removal 为独立 operation。
  • 普通排产 schema 禁止 relaxed 字段;诊断 baseline 只允许空集合,removal 只允许一个 allowlist 约束,且禁止 warm start。
  • 每次诊断请求携带随机 invocationId,requestId 绑定完整请求摘要;响应回显 operation/invocation/relaxed IDs,父进程在所有 solve 状态下校验。
  • 诊断固定 numSearchWorkers=1、randomSeed=0、显式 startDate,并绑定 world/entries/params/objectiveSpec 四类摘要。
  • C1/C2/C10/C11/C12-team/C12-tooling 记录实际约束实例数;没有实例的约束不重解。C11 同一 literal 同时控制起点门槛与冻结工单障碍。
  • OPTIMAL/OPTIMAL 输出精确整约束移除目标改善;任一 FEASIBLE 只输出 incumbent/bound 改善区间;恢复可行、UNKNOWN、MODEL_INVALID 和单调性违反分别处理。
  • 结果明确 isDualValue=false / isUnitMarginalValue=false / 跨约束不可加;不把整条硬约束移除冒充影子价。
  • cp-marginal.recompute 使用 JobQueue tenant/project/actor/并发门禁,fixed 轨、日期、时限、约束 allowlist 均在线程创建前 422。

安全与失败关闭

  • worker 严格检查顶层字段,未知字段、重复/未知/多 relaxed IDs、v1/v2 混跑均拒绝。
  • 父进程验证 objective/bestBound/gap、OPTIMAL 零 gap、assumption 分区、active 与实例数、baseline/removal 模型身份。
  • 可行基线移除后 INFEASIBLE 或负改善均按单调性违反使整份报告失败关闭;solver error/unavailable 使报告为 partial。
  • cancel 在每次子进程前后检查,不会中断正在运行的 child。结果分列 active solve 监督上限 max(15, timeLimit+12)、最多 11 秒清理预算及两者相加的取消延迟上限。
  • solver child 改为 stdout.buffer 直接写 UTF-8,修复冻结 EXE 中文载荷导致 responseDigest 漂移。

验收

  • CP marginal 专项 36 passed;协议/CP/Sidecar/Job 扩展回归 144 passed;全量黄金 1435 passed / 5 warnings(497.58 秒);Node 60 passed;Web build 通过。
  • 冻结 Sidecar 当前代码重建;父进程指定冻结 EXE 后真实完成 protocol v2 baseline/removal,C2 objective 精确改善 28000。
  • 隔离 8020/5190 Web:baseline 1,081,000;C1/C11/C2 精确改善 1,008,000/432,000/28,000;C10/C12 未激活;console warning/error=0。
  • 独立协议/数学审计逐项关闭后 AUDIT PASS。
  • 四个受保护业务文件 SHA-256 前后不变;最终 GitNexus 在完成矩阵回填。
  • GitNexus:13,718 nodes / 63,141 edges / 636 clusters / 300 flows;compare main 累计 CRITICAL(73 files / 575 symbols / 90 flows)。

边界

  • 本轮是完整移除单一约束的离散反事实,不是单位 RHS 导数或业务金额价值。
  • 下一本地项应对容量/交期等参数做受控 RHS 增量重解,并接现场加班成本、罚则和替代资源价值。
  • 仅 fixed CP-SAT 支持;flex 调度仍需独立模型。
  • 未 commit、push、merge 或 publish。