Files
iAOP/core/model-framework/README.md
T

3.8 KiB
Raw Blame History

iAOP-Core · 模型框架层(AI Model Framework)

对应 PRD 5.3「③ AI 模型框架」与 EPIC #5「内核平台化改造」。

本层把化工 AI 的「模型」从硬编码改造为模板化实现:同一主干代码不变, 切换行业 / 工况只改 配方(recipe) —— 一个声明式 JSON 包,对齐 PRD 5.3 「固定主干 + 可配置超参」默认模式。

当前已交付

模块 对应 issue PRD 5.3 模型 说明
cross_process_optimizer #38 ③ 跨工序寻优 多串联工序协同寻优,可解释优化建议(采纳率≥60%)

跨工序寻优(cross_process_optimizer.py)

化工产线由多道串联工序组成(氯化→精制→还原、反应→水洗→干燥)。单工序 局部最优 ≠ 全局最优:上游操作参数通过中间品指标传递到下游,影响最终收率 / 能耗 / 质量。跨工序寻优在满足工艺约束前提下,协调多个工序的可调变量, 使全流程目标达到最优,并给出可解释的优化建议。

配方(Recipe)结构

{
  "name": "ti-cl4-cross-process-opt",
  "industry": "海绵钛氯化车间",
  "solver": "grid",                 // grid / random / analytic / stub
  "solver_params": {"max_per_var": 6, "max_total": 5000},
  "stages": [                       // 顺序串联工序
    {
      "name": "氯化",
      "decision_vars": [            // 本工序可调决策变量
        {"name": "chlorination_temp", "low": 850, "high": 950, "step": 20, "default": 870, "unit": "℃"}
      ],
      "transfer_vars": ["ti_cl4_yield"],   // 传给下游的中间品指标
      "proxy": "0.4 * (chlorination_temp - 850) / 100 + ..."  // 上游如何影响下游(算术表达式)
    }
  ],
  "constraints": [                  // 物料平衡 / 安全限值 / 产能上下界
    {"expr": "chlorination_temp", "op": "<=", "bound": 950, "label": "安全上限"}
  ],
  "objective": {                    // 最大化收率 / 最小化能耗 / 加权多目标
    "expr": "purity - 0.01 * cl2_flow - 0.005 * chlorination_temp",
    "sense": "max", "label": "综合收率"
  },
  "acceptance_floor": 0.60          // PRD 第6章里程碑:采纳率 ≥ 60%
}

快速开始

from cross_process_optimizer import build_from_recipe

# 切换行业/工况只改配方文件,模型代码零改动
opt = build_from_recipe("samples/cross-process-opt/recipe.ti.json")
result = opt.optimize()
print(result.objective_score, result.accepted)
for sug in result.suggestions:
    print(f"{sug.stage}/{sug.variable}: {sug.old_value}→{sug.new_value} ({sug.direction})")

求解策略

solver 适用 说明
grid 离散变量少 决策变量离散网格笛卡尔积枚举,组合过大自动降级为 random
random 变量多 / 连续 范围内随机采样 N 个候选解取最优(可设 seed 可复现)
analytic 单变量线性 边界判定最优方向,最可解释(明确指出变量该往哪调)
stub CI / 离线校验 取默认值,保证无依赖环境可加载

安全性

约束 / 目标 / proxy 表达式在受限命名空间里 eval(__builtins__ 置空, 仅放行 abs/min/max/round/pow/sum 与已声明的变量名),禁止 __import__ / open / 任意属性访问,防止配方注入危险代码。

测试

cd core/model-framework
python -m unittest discover -s tests -v
python _sanity_check.py    # 离线基本验证

与规划模块的关系

接口风格对齐 issue #34 model_recipe(Model Recipe 插件接口)与 #36 quality_forecast(质量预测模板化)。本模块自包含、不依赖未合并分支; 待 #34 / #36 合入后,跨工序寻优可注册为 ModelRecipe 的一个具名模板, 业务侧零改动。