因果回路图(Causal Loop Diagram)

系统动力学反馈图——引擎自动枚举所有反馈回路,并依极性将其分类为增强型或平衡型。

关于因果回路图

因果回路图(causal loop diagram,CLD)是系统动力学(Jay Forrester,MIT,1960 年代)的核心映射工具:以有符号因果连结连接的变量,其中反馈回路——而非个别箭头——解释了系统的行为。回路在放大变化时为增强型(R,Reinforcing),在抵消变化时为平衡型(B,Balancing)。标准参考文献为 Sterman,Business Dynamics(2000)。

Schematex 的优势在于引擎帮你找到并分类这些回路。绘图工具让你放置箭头;但它们不会告诉你哪些回路存在,也不会说明每个回路是增强型还是平衡型。Schematex 使用 Johnson 算法枚举所有基本反馈回路,并应用 Sterman 的奇偶极性规则——将它们标记为 R1、B1、R2……

causalloop·§
↘ preview
100%
Sales force flywheel Causal loop diagram "Sales force flywheel": 4 variables, 5 causal links. 2 feedback loops: 1 reinforcing (R), 1 balancing (B). R1 "Skill flywheel" (reinforcing, 0 negative links): Training quality → Salesperson skills → Revenue → Training quality. B1 "Dilution" (balancing, 1 negative link): Salesperson skills → Revenue → Hiring rate → Salesperson skills. Sales force flywheel + + + + R1 Skill flywheel B1 Dilution Training quality Salesperson skills Revenue Hiring rate
UTF-8 · LF · 9 lines · 294 chars✓ parsed·5.1 ms·5.0 KB SVG

1. 第一个因果回路

causalloop 关键字(别名 cld)开头,后接可选的标题,然后是有符号的连结。变量会从连结自动创建——你很少需要手动声明:

causalloop "Adoption model"
"Adoption rate" -> Adopters : +
Adopters -> "Adoption rate" : +
loop R1 "Word of mouth"

连结的形式为 SOURCE -> TARGET : POLARITY。多词变量名称加引号("Adoption rate");单词不需要引号(Adopters)。至少需要一条连结。


2. 连结极性

极性是因果影响的方向,且每条连结都必须填写

A -> B : +          # same direction (more A → more B)
B -> C : -          # opposite direction (more B → less C)
A -> B : s          # alias for + (same)
B -> C : o          # alias for − (opposite)
C -> D : same       # alias for +
D -> E : opposite   # alias for −
A -> B +            # the colon is optional

+ / s / same 表示同向 / o / opposite 表示反向。没有极性的连结会被拒绝。


3. 延迟与显式变量声明

"Training quality" -> "Salesperson skills" : + delay   # marked delay (∥ hash on the arrow)
A -> B : + ~delay                                       # the ~delay form also works
var "Adoption rate"                                     # pin a variable so it isn't auto-created
loop R1 "Word of mouth"                                 # name/annotate a loop
  • delay / ~delay 将连结标记为延迟(系统动力学中的 hash 记号)。
  • var "name" 显式声明一个变量(固定其标签;不会自动创建)。
  • loop ID "phrase" 为引擎检测到的回路附加人类可读的名称。

4. 计算得出的反馈回路

这是最大的差异化功能。引擎会:

  1. 构建有符号有向图(节点 = 变量,边 = 有符号连结)。
  2. 使用 Johnson 算法枚举所有基本反馈回路(简单有向环)——以确定性顺序按声明顺序执行。
  3. 通过计算负向连结的数量分类每个回路:
    • 偶数个(含 0)→ R(增强型);符号的乘积 = +1
    • 奇数个 → B(平衡型);符号的乘积 = −1

这正是 Sterman 的奇偶规则。回路按种类以检测顺序编号(R1、B1、R2……),并在回路中心绘制 RB 旋转图符。每个回路带有 data-loopdata-kind


5. 常见错误

# WRONG — link with no polarity
A -> B

# WRONG — a diagram with no links at all
cld

每条连结都需要极性(: +: -);没有连结的 CLD 会被拒绝。请记住极性是关于变化方向,而非是否理想——从「死亡数」到「人口」的连结仍然是 -(更多死亡 → 更少人口),即使死亡是负面的事。


6. 标准合规性

符号遵循 Sterman,Business Dynamics(2000)和标准系统动力学惯例:有符号连结极性、延迟 hash 记号,以及 R/B 回路标识符。回路极性的奇偶负向连结规则是教科书中的分类方式,已精确实现。

7. 路线图

延后处理:存量与流量升级、连结强度加权,以及随时间的主导回路(回路特征值)分析。

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.