中药新药工艺实验设计与优化模块 (tcm-process-doe-optimizer)
Overview
面向中药新药工艺研究(提取/纯化/成型工艺)的一体化计算模块:设计方案生成 → 数据回填 → 回归建模与诊断 → 多指标赋权 → 智能优化 → 设计空间建立 → 验证报告。所有统计计算由脚本确定性完成(含随机种子),输出可直接用于论文"工艺研究"章节、申报资料或内部 DOE 报告;结果与 Design-Expert / Minitab / R(lm) / statsmodels / yaahp 可交叉验证。
法规依据:中药新药质量研究技术指导原则(CQA 确定)、中药口服制剂生产过程质量控制研究技术指导原则(CPP-CQA 关系建模)、ICH Q8(QbD/设计空间)、ICH Q9(质量风险管理)。
与 tcm-extraction-doe 的分工:后者覆盖"提取工艺正交+BBD"基础场景(离散水平筛选);本模块覆盖进阶全链路(PB 大因素筛选、BBD/CCD/均匀设计、完整回归诊断、四种以上赋权、BP/GA 智能优化、Monte Carlo 设计空间)。提取工艺简单正交需求可沿用 tcm-extraction-doe。
工作流总览(按序执行,不跳步)
Step 0 需求澄清:剂型/工艺环节、考察因素与水平、评价指标(正向/负向)与优化方向、
权重来源(专家/数据)、数据格式(CSV/xlsx)、优化目标(单指标/多指标)
Step 1 设计选择 → 生成方案表 (doe_design.py)
Step 2 用户回填实验结果 (CSV/xlsx, 编码因素列+响应列)
Step 3 回归建模+诊断+优化 (rsm_analysis.py) → 保存模型 JSON
Step 4 多指标赋权 (weighting.py) → 权重用于多响应满意度/综合评分
Step 5 智能优化 (optimize.py: bp / ga) ← 强非线性时
Step 6 设计空间 (optimize.py: montecarlo) ← 需 QbD 论证时
Step 7 验证实验 + 报告输出 + 质量门禁自查
Step 0:需求澄清(必做)
逐项确认,缺失项询问用户,不得杜撰数值:
- 工艺环节:提取/纯化/成型(影响因素选择,如提取选乙醇浓度/时间/加水量,成型选辅料比/温度/转速);
- 因素与水平范围(由单因素预实验或文献确定);因素数决定设计类型;
- 评价指标及方向:正向(含量、得率、收率)max / 负向(杂质、损失、水分)min / 目标值;
- 多指标时权重来源:专家打分(AHP)、实测数据(熵权/CRITIC)、或组合;权重合计=1;
- 数据格式:CSV(推荐,utf-8-sig)或 xlsx(自动读第一个 sheet);标签列(样品号)自动跳过。
Step 1:实验设计选择与生成
设计选择决策树
因素≥5 或 主效应筛选 → PB (doe_design.py pb, N=12..48)
因素2~7 连续变量找最优、避免顶点组合 → BBD (doe_design.py bbd)
因素2~7 需全二次模型+旋转性、水平可越界 → CCD (doe_design.py ccd, ccc/cci/ccf)
因素/水平多、试验次数受限 → 均匀设计 (doe_design.py uniform)
运行命令
SK=<技能目录>
# PB 筛选 (4因素示例; 因素水平可用编码 -1:1 或实际值 60:80)
python3 $SK/scripts/doe_design.py pb --factors '乙醇浓度:60:80,提取时间:1:2,加水量:8:12,温度:60:80' --seed 42 --out design_pb.csv
# BBD (3因素)
python3 $SK/scripts/doe_design.py bbd --factors 'A:60:80,B:1:2,C:8:12' --center 5 --seed 42
# CCD (CCC 旋转外切, α=2^(k/4) 自动计算; 也可 --type cci/ccf)
python3 $SK/scripts/doe_design.py ccd --type ccc --factors 'A:60:80,B:1:2,C:8:12' --center 5 --seed 42
# 均匀设计 (9 水平 3 因素, 输出 CD2/MD 均匀性)
python3 $SK/scripts/doe_design.py uniform --runs 9 --factors 3 --seed 42
- 输出含 StdOrder + RunOrder(随机化)与编码/实际值双列;脚本内置正交性断言(PB XᵀX=NI);
- PB 有响应数据时直接算主效应:
doe_design.py pb --factors ... --data results.csv; - 交用户执行实验并回填响应值。设计细节/与 Design-Expert 一致性见
references/design-methods.md。
Step 3:回归建模、诊断与优化
# 单响应 (因素列显式指定; --objective max/min)
python3 $SK/scripts/rsm_analysis.py analyze --data results.csv --factors A,B,C \
--response y1 --objective max --outdir out --save-model model.json --seed 42
# 多响应满意度 (权重可来自 Step 4)
python3 $SK/scripts/rsm_analysis.py analyze --data results.csv --factors A,B,C \
--response y1,y2 --desirability --directions max,min --weights 0.6,0.4 --outdir out
# 任意点预测 (95% CI/PI)
python3 $SK/scripts/rsm_analysis.py predict --model model.json --point "A=0.5,B=0.2,C=-0.1"
# 主效应 Pareto 图 (筛选阶段)
python3 $SK/scripts/rsm_analysis.py pareto --model model.json
输出:全二次模型系数/SE/t/P/VIF、R²/调整R²/预测R²(PRESS)、模型 F、失拟检验(中心点<2 时说明无法检验)、后退法简化模型、残差图四联、等高线图、3D 响应面图、最优工艺参数(网格+驻点解析解)+ 95% 置信/预测区间、多响应满意度 D。解读规则见 references/regression-diagnostics.md。
Step 4:多指标综合权重
# AHP (CR<0.1 判定一致性; 可加方案层矩阵做两层综合权重)
python3 $SK/scripts/weighting.py ahp --criteria "含量,得率,成本" \
--matrix "1,3,5;1/3,1,2;1/5,1/2,1"
python3 $SK/scripts/weighting.py ahp --criteria "含量,得率,成本" --matrix "..." \
--schemes "方案矩阵1|方案矩阵2|方案矩阵3" --scheme-names "方案A,方案B,方案C"
# 熵权法 / CRITIC (direction: 每列 max/min)
python3 $SK/scripts/weighting.py ewm --data data.csv --direction "max,max,min,min"
python3 $SK/scripts/weighting.py critic --data data.csv --direction "max,max,min,min"
# 组合赋权 + 敏感性分析
python3 $SK/scripts/weighting.py combine --method linear --wa "0.4,0.35,0.25" --wb "0.5,0.3,0.2" --plot sens.png
# 极值法-PCA 综合评价排名
python3 $SK/scripts/weighting.py pca --data data.csv --direction "max,max,min,min" --criterion cumvar85
输出:AHP 附一致性检验报告(λmax/CI/CR/RI)、熵权/CRITIC 附标准化报告与贡献度排序、组合赋权附 λ 敏感性表(权重随 λ 剧烈翻转时提示两方法分歧)、PCA 附特征值/载荷/综合得分/排名。算法与 yaahp/SPSS 对照见 references/weighting-methods.md。
Step 5:智能优化(BP / GA)
# BP 神经网络建模 (LM/Adam/GD, 早停, 过拟合检测)
python3 $SK/scripts/optimize.py bp --data results.csv --inputs A,B,C --output y1 \
--hidden 5 --algo adam --epochs 300 --outdir out --save-model bp.npz --seed 42
# GA 优化 RSM 模型 (二次曲面)
python3 $SK/scripts/optimize.py ga --model model.json --directions max \
--bounds "A:-1:1,B:-1:1,C:-1:1" --pop 60 --gen 100 --outdir out --seed 42
# GA-BP (非二次曲面/均匀设计数据; --bp-model 与 --model 二选一)
python3 $SK/scripts/optimize.py ga --bp-model bp.npz --directions max \
--bounds "A:-1:1,B:-1:1,C:-1:1" --pop 60 --gen 100 --outdir out --seed 1
输出:BP 学习曲线+回归图(R 值)、训练/验证/测试 MSE、过拟合警告;GA 适应度进化曲线(收敛性证明)+ 全局最优参数组合。GA-BP 多种子对照、边界解提示、回到实验验证见 references/optimization-design-space.md。
Step 6:Monte Carlo 设计空间(QbD)
python3 $SK/scripts/optimize.py montecarlo --model model.json \
--operating "A=0.5,B=0.4,C=-0.2" \
--distributions "A:normal:0.1,B:normal:0.12,C:uniform:0.1" \
--spec "y1:50~54,y2:>12" \
--sims 10000 --grid-factors A,B --grid-sims 3000 --grid-res 25 \
--outdir out --seed 42
- 波动分布(编码单位):
normal:σ/uniform:半宽/triangular:半宽,来自生产控制精度; - 单点模拟 ≥10,000 次(默认),网格每点默认 2,000;规格限缺省按预测 ±10%;
- 输出:运行点覆盖率 P、设计空间边界(≥90% 默认)、NOR 边界(≥99%)、Overlay Plot(含运行点);
- P<阈值 → 建议缩窄波动/移动运行点/放宽非关键规格限;设计空间不超出实验范围。
Step 7:验证实验与报告(必做)
- 最优工艺组合 3 次平行验证,实测均值±SD 与模型预测对比,偏差<5% 且 RSD<3% 视为可行;
- 报告须含:需求清单、设计表(StdOrder/RunOrder/种子)、回归诊断全套、权重报告
(AHP 一致性 / 标准化报告)、优化收敛曲线、设计空间边界与置信水平、验证数据; - 质量门禁自查清单见
references/quality-cross-validation.md(交付前逐项勾选)。
数据格式规范
- 输入:CSV(推荐,utf-8-sig,自动识别逗号/制表符/分号)或 xlsx(openpyxl 读第一个 sheet);
- 设计回填表:编码因素列 + 响应列(可含样品标签列,自动跳过);
- 输出:Markdown 表格(直接进报告)+ CSV(--out)+ PNG 图(--outdir)+ 模型 JSON
(--save-model,供 predict/ga/montecarlo 复用); - 绘图:自动探测系统中文字体,缺失时回退英文标签(不出现乱码)。
Resources
scripts/(仅依赖 numpy/scipy/matplotlib/openpyxl,全部含随机种子)
doe_design.py— 设计方案生成:pb(Hadamard 数学构造,N∈{12..48},正交性断言)、
bbd(BIBD 块构造,3~7 因素)、ccd(ccc/cci/ccf,α 自动)、uniform(GLP+CD2 选列);rsm_analysis.py— 回归建模与诊断:analyze(全二次模型+SE/t/P/VIF+失拟+后退法简化+
残差图+等高线/3D+优化+95%区间+多响应满意度)、predict、pareto;weighting.py— 多指标赋权:ahp(含方案层)、ewm、critic、combine(敏感性)、pca;optimize.py— 智能优化与设计空间:bp(LM/Adam/GD+早停+过拟合检测)、
ga(SBX+多项式变异+精英+进化曲线;RSM 模型或 GA-BP)、montecarlo(设计空间/NOR/Overlay)。
references/
design-methods.md— PB/BBD/CCD/均匀设计原理、生成算法(含 Paley I/II 构造与 Ryser 边界)、
Design-Expert/Minitab 一致性说明、运行数表;regression-diagnostics.md— 二次模型、R²/adj/pred、失拟、VIF、后退法、残差诊断、预测区间、解读规则;weighting-methods.md— AHP/EWM/CRITIC/组合赋权/极值法-PCA 全算法与检验(RI 表);optimization-design-space.md— BP/GA/GA-BP 参数与收敛判据、Monte Carlo 设计空间与 NOR 方法;quality-cross-validation.md— 与专业软件交叉验证对照表、偏差排查、交付前质量门禁清单、法规依据。
examples/
bbd_results.csv— 3 因素 BBD 双响应示例数据(供 analyze/optimize 冒烟测试);weighting_data.csv— 8 样品 4 指标(两正两负)示例数据(供 ewm/critic/pca 测试)。
assets/
(空,未使用)