在传统的因果建模中,模型的每个模块通常被设计为一个函数或方程,接收输入,计算输出。这种方式在模拟一些复杂物理系统时会面临局限性,因为在很多物理系统中,变量之间是相互关联的,不能简单地确定一个明确的因果方向。例如,在电气电路中,电流和电压是互相作用的关系。NGM中非因果建模让用户直接使用方程来描述系统的行为,而不用明确指定信号流的方向,即不必定义输入和输出的因果关系。例如,我们可以使用欧姆定律来表示电阻、电流和电压的关系: V=I⋅R 这里,方程表达了一个现实关系,而不是规定因果方向。
1. 因果建模
因果建模(Causal Modeling)也可称为信号流(signal-flow)建模,顾名思义,在建模过程中,各个组件通过信号连接。这些信号在组件之间交换,每个组件都有固定的输入信号(输入)和输出信号(输出)。
在组件内部,通过明确的赋值和操作,从已知输入计算输出。
这类似于编程语言中的赋值,对右侧的已知变量或一组变量执行计算,并将结果分配给左侧的另一个变量。

组件之间的信号连接定义了不同组件的输入和输出之间的唯一分配(一个输入对应一个输出)。
因此当存在多个输入/输出相连接时,必须考虑信号的分配与处理。
无论是将一个输出与多个输入并行连接,还是将多个输出连接到同一个输入,都必须考虑信号之间如何相互作用。
这种关系成为显式分配,即组件内部和组件之间存在固定的因果关系,链接各个组件的输入和输出,所需的整体模型被创建为来自各个显式运算的方程组。求解器可以通过连续应用各个运算对方程组进行数值计算,从而计算建模微分方程组的解。
因果建模也就是基于信号流的建模特别适合对因果关系明确且不会改变的系统进行建模,例如基于信号的控制器或系统。
但对于物理系统而言,有时相同的变量既充当输入又充当输出,变量之间的关系不具有因果方向,例如在机械系统中,来自环境的力影响物体的位移,但另一方面,物体的位移影响物体和环境之间的力。
2. 非因果建模
非因果建模(Acausal Modeling)也称为基于方程(equation-based)或基于物理(physics-based modeling)的建模。
其核心思想是用守恒定律描述系统或组件的行为和性能。
非因果建模是一种声明式建模风格,是基于方程而不是赋值语句的建模,对系统的输人和输出没有明确的规定。相反,它是通过联立组件本构方程(如欧姆定律)和守恒方程得到整个系统的方程组,一般情况下,利用守恒定律会把一个系统表示为微分代数方程(DAE)。
为了构建非因果关系模型,就需要识别所建模型的流变量(通量) 和势变量(跨量)

3. 非因果建模的优势
非因果建模采用更高层次的系统模型描述,通过计算机生成的精确方程而具有更好的数值稳定性和计算性能,相较于因果建模在模型重用和分层建模上有更好的表现。
