3. 物理一致性约束的数学形式

在物理信息建模中,“物理一致性”不是一句口号,而必须落到可计算的数学表达式上。只有把物理规律写成对模型输出(或中间状态)的约束,才能把它嵌入损失函数、优化求解器或网络结构之中。本节按约束的数学形态,把常见的物理一致性约束分为四类:等式约束、不等式约束、微分方程约束与守恒律约束,并说明它们的表达方式、典型来源与在建模中的使用位置。

一、等式约束:把“必须相等”写成残差

等式约束是最直接的一类,形式为 g(x, u) = 0,其中 x 为状态或输入,u 为模型输出。它表达的是“某个物理量必须精确满足某个关系”。典型来源包括:本构关系(如线弹性 σ = E·ε)、几何协调关系(如节点位移与单元应变)、代数平衡(如电路基尔霍夫电压定律)、边界条件(如固定端位移为零)。

在软约束框架下,等式约束通常转化为残差平方项加入损失:L_eq = Σ ||g(x_i, u_i)||²。残差越接近零,物理一致性越好。需要注意量纲与尺度:若把应力(MPa 量级)与位移(mm 量级)的残差直接相加,梯度会被大量纲项主导,因此实践中常对每类残差做归一化,或为不同约束分配权重 λ_k。

等式约束的“硬”与“软”:若约束可解析消元(如用本构关系把应变表示为应力的函数),可直接代入模型实现硬约束;若难以消元,则用残差惩罚做软约束。前者保证严格满足,后者更灵活但需调权重。

二、不等式约束:表达物理可行域

不等式约束形式为 h(x, u) ≤ 0 或 h(x, u) ≥ 0,它不要求某个量取定值,而是把它限制在一个可行区间内。典型例子有:材料屈服准则(von Mises 应力不超过屈服强度 σ_vm − σ_y ≤ 0)、接触条件(法向间隙非负、法向力非负)、热力学第二定律(熵产率非负)、浓度与密度非负、功率不超过额定值等。

不等式约束在优化中常通过罚函数或松弛变量处理,例如 L_ineq = Σ max(0, h(x_i, u_i))²,即只在越界时产生惩罚。相比等式约束,它更容易出现“贴边”解,梯度在边界附近不连续,因此实际训练中常配合平滑近似(如 softplus)或逐步收紧的惩罚系数。判断是否生效,应观察越界样本比例与最大越界量,而不是只看总损失。

三、微分方程约束:把演化规律写进残差

许多物理规律以微分方程形式给出,如热传导 ρc ∂T/∂t = ∇·(k∇T) + q、结构动力学 Mü + Cü + Ku = F、Navier–Stokes 方程等。这类约束的核心是把方程整理为残差形式 N[u] = 0,再在配点(collocation points)上计算残差。以 PINN 为例,损失中包含 L_pde = Σ ||N[u_θ](x_i, t_i)||²,其中导数通过对网络输出自动微分获得。

微分方程约束的关键实现细节有三点:其一,配点采样要覆盖求解域并避开奇异区域;其二,时间与空间尺度需归一化,否则高阶导数项数值差异过大;其三,初值与边界条件通常单独作为等式约束项加入,形成“方程残差 + 初边值残差”的组合。评估时,应分别报告方程残差与初边值残差,避免总损失掩盖某一项的失效。

四、守恒律约束:全局不变量与通量平衡

守恒律约束表达“某个总量在演化中保持不变或按通量平衡变化”,典型形式为质量守恒 ∂ρ/∂t + ∇·(ρv) = 0、能量守恒、动量守恒。与逐点微分方程不同,守恒律常以积分形式使用:对控制体 Ω,有 d/dt ∫_Ω ρ dV + ∮_∂Ω ρv·n dS = 0。在离散模型中,这转化为“流入减流出等于内部积累”的代数关系,可直接作为等式约束施加在单元或系统层面。

守恒律约束的价值在于它比逐点方程更“鲁棒”:即使局部近似有误差,只要全局通量平衡成立,整体解仍可能保持物理合理。实践中常把守恒律作为额外损失项 L_cons = ||Σ流入 − Σ流出 − Δ积累||²,或作为后处理校正步骤,把模型输出投影回守恒可行集。

物理一致性约束的四类数学形式与建模位置 等式约束 g(x,u) = 0 本构关系 / 几何协调 基尔霍夫定律 / 边界条件 L = Σ‖g‖² 不等式约束 h(x,u) ≤ 0 屈服准则 / 接触条件 熵产非负 / 额定功率 L = Σmax(0,h)² 微分方程约束 N[u] = 0 热传导 / 结构动力学 Navier–Stokes L = Σ‖N[u]‖² 守恒律约束 d/dt∫ρdV + ∮ρv·n dS = 0 质量 / 能量 / 动量守恒 控制体通量平衡 L = ‖流入−流出−积累‖² 总损失:L = L_data + Σ λ_k · L_constraint,k 权重 λ_k 需按量纲与残差尺度归一化 一致性评估:分项残差而非只看总损失 等式残差 → 是否收敛到零;不等式残差 → 越界比例与最大越界量 微分方程残差 → 配点覆盖与量级;守恒残差 → 通量平衡误差 任一项未达标,说明该类物理一致性未被满足

五、四类约束的关系与选用

这四类约束并非互斥,而是从不同粒度描述同一物理系统。等式约束刻画“精确关系”,不等式约束刻画“可行边界”,微分方程约束刻画“局部演化”,守恒律约束刻画“全局不变量”。一个完整的物理一致性模型往往同时包含多类:例如热-结构耦合问题中,本构关系用等式约束,屈服用不等式约束,热传导用微分方程约束,能量平衡用守恒律约束。

选用时应考虑三点:可计算性——约束是否能写成对模型输出的可微表达式;可满足性——硬约束是否会导致可行域为空或训练不稳定;可验证性——是否有独立的检验量来判断约束是否真正生效。下表给出一个示例性的约束登记表,便于在项目中逐项管理(参数为教学示例,非实测值)。

约束名称 数学形式 类型 示例阈值/参数 检验量
线弹性本构 σ − E·ε = 0 等式 E = 210 GPa 本构残差均方根
von Mises 屈服 σ_vm − σ_y ≤ 0 不等式 σ_y = 235 MPa 越界样本比例
一维热传导 ρc·∂T/∂t − k·∂²T/∂x² = 0 微分方程 k = 45 W/(m·K) 配点残差最大值
控制体质量守恒 Σṁ_in − Σṁ_out − dM/dt = 0 守恒律 相对误差 < 1e-3 通量平衡相对误差

六、实现要点与常见误区

把上述约束落地时,最常见的三个问题是:量纲不统一导致某一类残差主导梯度;权重固定不变导致训练后期约束被数据项压制;只报告总损失导致无法定位哪类约束失效。建议在训练日志中分项记录每类残差的均值与最大值,并对权重采用自适应策略(如根据残差量级动态调整 λ_k)。

# 示例:分项残差记录(伪代码,参数为教学示例)
loss_data   = mse(u_pred, u_obs)
loss_eq     = mean((sigma - E * eps) ** 2)
loss_ineq   = mean(relu(sigma_vm - sigma_y) ** 2)
loss_pde    = mean(residual_heat(T_pred, x, t) ** 2)
loss_cons   = (m_in - m_out - dM_dt) ** 2

total = loss_data + 1e-3*loss_eq + 1e-2*loss_ineq + 1e-4*loss_pde + 1e-2*loss_cons
log({"eq": loss_eq.item(), "ineq": loss_ineq.item(),
     "pde": loss_pde.item(), "cons": loss_cons.item()})
不要把“约束项损失下降”直接等同于“物理一致性达成”。等式约束需看残差是否趋近零,不等式约束需看是否仍有越界,微分方程约束需看配点是否覆盖关键区域,守恒律约束需看通量平衡的相对误差。分项判断,才能定位问题。