2. 纯化工艺成本建模基础
纯化工艺的经济性优化,第一步不是“省钱”,而是“算清”。如果连一支层析柱跑一批料到底花了多少钱都说不清,后续的替换介质、缩短步骤、提高载量等优化动作就失去了判断基准。本节要建立的,是一个可复用、可参数化的纯化成本模型:把一批次或单位产品的纯化成本拆解为可追溯的成本项,再用统一公式汇总,最后用 Excel 或 Python 搭成能随参数变化自动重算的模型。
一、成本模型的基本结构
纯化成本模型的核心思路是“先分项、后汇总、再分摊”。分项是把成本按来源拆开,汇总是在批次层面加总,分摊是把批次成本除以产出,得到单位产品纯化成本。常见的分项包括七类:物料成本、耗材成本、设备折旧、人工成本、QC/QA 成本、废液处理成本与产能分摊。
物料成本指纯化过程中直接消耗的液体与化学品,如缓冲液盐、酸碱、有机溶剂、注射用水(WFI)等。耗材成本指层析介质、膜包、滤芯、一次性反应袋、管路、手套等,其中层析介质和膜包往往按“使用寿命/循环次数”分摊到每批。设备折旧是把层析系统、超滤系统、配液罐、冻干机等固定资产按年限或批次折算。人工成本按参与纯化操作的人时×工时费率计算。QC/QA 成本包括过程检测、放行检测、环境监测与批记录审核。废液处理成本按废液体积与处理单价估算。产能分摊则是把共用设施(洁净空调、纯水系统、蒸汽、冷库)的固定成本按占用比例摊到本产品。
需要特别强调:成本模型必须与工艺步骤绑定。同一批料,走三步层析和走两步层析,耗材、人工、废液、QC 都不同。因此建模时通常先画一张“步骤—资源”对应表,再逐项填参数。
二、单位产品纯化成本的计算方法
单位产品纯化成本的计算公式并不复杂,难点在于口径统一。建议采用以下定义:
C_unit = C_batch / Q_release
C_batch = C_mat + C_cons + C_dep + C_lab + C_qc + C_waste + C_facility
其中:
C_mat 物料成本
C_cons 耗材成本(含介质/膜包按寿命分摊)
C_dep 设备折旧
C_lab 人工成本
C_qc QC/QA 成本
C_waste 废液处理成本
C_facility 产能/设施分摊
Q_release 批放行产出量(g 或 L)
这里有一个容易踩的坑:分母必须用“放行产出量”,而不是“理论投料量”。纯化收率通常只有 50%~80%,若用投料量做分母,会系统性低估单位成本。另一个坑是耗材分摊:层析介质若标称 200 个循环,但实际因清洗验证和压差上升只用到 120 个循环,就应按 120 分摊,否则成本被低估。
下面给出一个教学示例(参数为合理假设,非实测数据)。假设某单抗纯化批次:物料 18,000 元,耗材 42,000 元(其中 Protein A 介质按 100 循环分摊后本批 22,000 元),设备折旧 9,000 元,人工 12,000 元,QC/QA 15,000 元,废液处理 6,000 元,设施分摊 8,000 元。批次总成本 = 18,000+42,000+9,000+12,000+15,000+6,000+8,000 = 110,000 元。若批放行产出 250 g,则 C_unit = 110,000 / 250 = 440 元/g。这个数字就是后续优化的基准线。
三、用 Excel 搭建参数化成本模型
Excel 适合快速搭建、便于工艺与财务共同评审。建议分三个工作表:参数表、计算表、结果看板。
参数表集中放所有可调输入:各物料单价与单批用量、介质单价与循环寿命、设备原值与折旧批次、人工工时与费率、QC 检测项与单价、废液体积与处理单价、设施分摊比例、批产出量。每个参数给一个单元格命名(如 MediaPrice、MediaLife、Yield),后续公式全部引用名称,避免硬编码。
计算表按步骤逐行展开。以捕获层析为例,一行写“缓冲液 A 用量 × 单价”,一行写“介质分摊 = MediaPrice / MediaLife”,一行写“人工 = 操作人时 × 费率”。每行都保留“步骤、成本项、公式、金额”四列,便于追溯。最后用 SUMIF 按成本项汇总,得到七类分项与批次总成本。
结果看板用公式引用计算表,展示 C_batch、C_unit,并做一个“单因素敏感度”小表:把载量、收率、介质寿命分别上下浮动 20%,观察 C_unit 的变化。Excel 中可用“模拟运算表”或直接复制多列公式实现。
四、用 Python 搭建可复用模型
当参数组合多、需要批量扫描或接入数据库时,Python 更合适。核心是把成本项写成函数,用字典或 DataFrame 管理参数。示例代码:
import pandas as pd
params = {
"media_price": 180000, # 元/升
"media_life": 100, # 循环
"media_volume": 12, # 升
"buffer_cost": 18000,
"labor_hours": 60,
"labor_rate": 200,
"qc_cost": 15000,
"waste_volume": 3000, # 升
"waste_price": 2, # 元/升
"depreciation": 9000,
"facility": 8000,
"yield_g": 250
}
def batch_cost(p):
c_media = p["media_price"] / p["media_life"] * p["media_volume"]
c_mat = p["buffer_cost"]
c_lab = p["labor_hours"] * p["labor_rate"]
c_waste = p["waste_volume"] * p["waste_price"]
c_batch = (c_media + c_mat + c_lab + p["qc_cost"]
+ c_waste + p["depreciation"] + p["facility"])
return c_batch, c_batch / p["yield_g"]
c_batch, c_unit = batch_cost(params)
print(f"批次成本={c_batch:.0f} 元, 单位成本={c_unit:.1f} 元/g")
运行后输出“批次成本=110000 元,单位成本=440.0 元/g”,与手工计算一致,说明模型口径正确。之后只需改 params 中的 media_life 或 yield_g,即可快速比较不同工艺方案。
五、模型校验与使用要点
模型建好后,至少做三项校验:一是量纲校验,确认所有金额单位统一为元、产出统一为 g 或 L;二是闭合校验,七项分项之和必须等于批次总成本;三是敏感度校验,把介质寿命从 100 降到 60,C_unit 应明显上升,若几乎不变,说明公式引用错了。
实际使用中,建议每季度用真实采购价、实际工时和放行数据回填一次参数,使模型从“估算工具”逐步变成“决策工具”。当 C_unit 的构成中耗材占比超过 40% 时,优先考虑提高载量或延长介质寿命;当人工与 QC 占比高时,优先评估步骤合并或在线检测。这样,成本模型才真正服务于纯化工艺的经济性优化。