feature/issue-79
main
closes #79「[Ti-2] 配方优化求解器集成」。
承接 #78(PR #117)的 OptimizationProblem 契约:把问题模型喂给求解器,产出满足全部约束、逼近目标最优的配方/参数取值 + 可解释求解报告。
OptimizationProblem
本分支基于 feature/issue-78。若 #117 尚未合入,本 PR diff 会包含 #78 的内容;#78 合入后本 PR 仅增量 solver。建议先审 #117。
templates/ti-cl4/recipe-optim/solver.py
SolverConfig
Solution
assignment
GridSolver
max_combinations
solve(problem, config=None)
python -m unittest discover -s tests
python _sanity_check.py
python -m py_compile
solve()
Solution.violated
✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
No dependencies set.
The note is not visible to the blocked user.
背景
closes #79「[Ti-2] 配方优化求解器集成」。
承接 #78(PR #117)的
OptimizationProblem契约:把问题模型喂给求解器,产出满足全部约束、逼近目标最优的配方/参数取值 + 可解释求解报告。实现(
templates/ti-cl4/recipe-optim/solver.py)SolverConfig:网格粒度/组合上限/随机种子/是否枚举 choices(对齐 PRD 超参包驱动),确定性可复现。Solution:取值assignment+ 目标值 + feasible + target_met + 违反约束枚举 + 迭代/评估计数 + 策略标注(#81 可解释输入)。GridSolver(网格枚举):连续域等分离散化 + 离散域枚举 choices,笛卡尔积筛可行、按 sense 选全局最优。max_combinations时降级,贪心逐维寻优保可用性。solve(problem, config=None)统一入口:自动选策略、静态校验失败/空问题/无可行解均返回降级Solution(不抛异常,对齐 PRD 可用性 ≥ 99.8%)。Solution即外部更强求解器(PuLP/scipy/optuna)需返回的结构,内核不绑优化库。验证
python -m unittest discover -s tests→ 46 用例全通过 ✅(含 #79 新增 16 用例:配置/候选取值/网格最优/target 达成/无可行降级/坐标下降/统一入口/端到端)。python _sanity_check.py→ 6 能力点全通过 ✅(含求解器端到端)。python -m py_compile全模块通过;纯标准库零运行时依赖。下游
solve()求关联问题。Solution.violated+ 变量 meaning + 约束 reason 产出可溯源建议。✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
Pull request closed