因果迴路圖(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·3.7 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.