3. 设计规定(Design Spec)核心概念

在 Aspen Plus 中,设计规定(Design Spec)是一种“让软件自动寻找某个变量取值,使另一个变量达到指定目标”的闭环求解工具。它把原本需要人工反复试算的工作交给求解器:你告诉它“我要什么结果”,它反推“输入该调到多少”。理解设计规定,关键要抓住四个要点:它是什么、它解决什么问题、它与撕裂流和计算顺序如何耦合、以及目标值与调整变量如何正确配对。

一、设计规定的本质:一个嵌套的迭代回路

从求解角度看,设计规定在流程原有的收敛回路之外,又套了一层“外层迭代”。内层是流程本身的物料平衡与单元模块计算(含撕裂流收敛),外层则是设计规定的控制回路:求解器先给调整变量一个试探值,执行一次完整流程计算,读取目标变量的计算结果,与设定目标值比较,若偏差超出容差,就按数值算法(默认 Secant 割线法,也可选 Broyden、Newton 等)修正调整变量,再次计算,直到目标变量满足容差或达到迭代上限。

因此设计规定不是“一次赋值”,而是一个“猜测—计算—比较—修正”的循环。这也解释了为什么设计规定必须依附于一个已能独立收敛的流程:如果内层流程本身不收敛,外层迭代拿到的目标值就不可信,设计规定必然失败。

设计规定 = 外层控制回路 + 内层流程收敛 外层:Design Spec 迭代 调整变量初值 如回流比 R=1.5 执行完整流程计算 含撕裂流内层收敛 读取目标变量 如塔顶纯度 0.985 与目标值比较 |计算值−目标| ≤ 容差? 修正调整变量 Secant / Broyden 收敛,输出结果 R 的最终取值 内层不收敛 → 目标值不可信 → 外层迭代失效;先保证流程收敛,再启用设计规定

二、设计规定与撕裂流、计算顺序的关系

这三者的关系可以用一句话概括:计算顺序决定流程能否收敛,撕裂流决定内层迭代的规模,设计规定决定外层迭代的目标。在 Aspen Plus 中,流程求解依赖“计算顺序(Calculation Sequence)”,即各单元模块与收敛模块的执行次序。当流程存在循环回路(如带循环物料的反应—分离流程)时,必须指定撕裂流(Tear Stream),把回路断开,先给撕裂流一个初值,再按顺序计算,最后比较撕裂流的新旧值,迭代至一致。

设计规定插入的位置在“流程收敛之后、结果输出之前”的外层。它每次修正调整变量后,都会触发一次完整的顺序计算,其中包含撕裂流的重新收敛。因此:

  • 若撕裂流初值差、内层迭代次数多,设计规定的每次外层试探都会很慢,总耗时成倍增加;
  • 若撕裂流未收敛就进入外层比较,目标变量是“半成品”,割线法可能朝错误方向修正,导致发散;
  • 调整变量若恰好是撕裂流附近的变量(如循环物流的流量),会同时扰动内层收敛,需格外关注收敛稳定性。

实操建议:先单独运行流程,确认撕裂流收敛(收敛模块显示“Converged”),再添加设计规定;把撕裂流收敛容差收紧到 1×10⁻⁵ 量级,避免内层误差污染外层判断。

三、目标值与调整变量的匹配原则

设计规定的成败,很大程度上取决于“目标变量—调整变量”这一对是否选得合理。核心原则是因果性、单调性、可调性与自由度匹配。

因果性:调整变量必须对目标变量有真实、直接的物理影响。例如“用回流比控制塔顶产品纯度”是合理的,因为回流比增大通常提高分离度;而“用进料温度控制塔底液位”则缺乏物理因果,求解器会乱撞。

单调性:在操作区间内,目标变量应随调整变量单调变化。若存在极值点或平台区(如回流比过大后纯度不再上升),割线法容易在平台附近震荡。此时应缩小调整变量的上下界(Lower/Upper Bound),把搜索限制在有效区间。

可调性:调整变量必须是流程中可自由设定的输入(如回流比、采出量、进料量、加热负荷、规定转化率等),不能是某个由其他规定锁定的量。若两个设计规定争抢同一个调整变量,会形成冲突,必须重新分配自由度。

自由度匹配:一个设计规定消耗一个自由度。流程的自由度数 = 可调输入数 − 独立约束数。添加设计规定前应确认还有剩余自由度,否则系统过约束,求解器报“自由度不足”或结果无意义。

教学示例(参数为合理假设,非实测):某精馏塔进料 100 kmol/h、进料组成轻组分 0.40(摩尔分数),要求塔顶轻组分回收率达到 0.98。可选设计规定:目标变量 = 塔顶轻组分回收率,调整变量 = 回流比,初值 1.2,上下界 0.5~5.0,容差 1×10⁻⁴。求解器经约 6~8 次外层迭代得到回流比约 2.3。若把调整变量误设为“塔顶采出量”,则回收率与采出量虽有关联,但采出量同时受物料平衡约束,容易与塔顶纯度规定冲突,导致不收敛。

四、配置时的关键字段与判断依据

在 Aspen Plus 中通过 Design Spec 面板配置,关键字段包括:被调变量(Adjusted Variable,需指定对象、变量名与单位)、目标变量(Sampled Variable,指定采样位置与变量)、目标值(Spec Value)、容差(Tolerance)、调整变量上下界、步长与算法选项。配置完成后,收敛模块的 Convergence 表单中会出现对应的外层收敛块,可查看每次迭代的调整变量值与目标变量值。

判断是否成功,不能只看“Converged”字样,还要检查:目标变量计算值与设定值的偏差是否小于容差;调整变量是否停在上下界附近(若贴边,说明目标不可达或边界设得太窄);外层迭代次数是否异常多(提示单调性差或初值远离解)。若出现“Unconverged”,优先排查内层撕裂流是否收敛、因果是否成立、上下界是否合理,再考虑更换算法或放宽容差。

检查项正常表现异常信号与处理
内层流程收敛撕裂流收敛块显示 Converged未收敛:先调初值/撕裂流位置,勿加设计规定
目标偏差小于容差(如 1×10⁻⁴)偏差大:检查因果与上下界
调整变量位置落在上下界内部贴边:目标不可达或边界过窄
外层迭代次数数次至十余次过多/震荡:单调性差,缩小搜索区间

掌握以上四点,就能把设计规定从“碰运气”变成“可预期”的工具:先保证内层收敛,再选对因果配对,最后用边界与容差把外层迭代约束在有效区间内。