因果ループダイアグラム

システムダイナミクスのフィードバックダイアグラム — エンジンがすべてのフィードバックループを列挙し、極性に基づいて強化型または均衡型に分類します。

因果ループダイアグラムについて

因果ループダイアグラム(CLD:Causal Loop Diagram)はシステムダイナミクス(Jay Forrester、MIT、1960 年代)の中核的なマッピングツールです:符号付き因果リンクで結ばれた変数群で構成され、システムの振る舞いを説明するのは個々の矢印ではなくフィードバックループです。ループは変化を増幅する場合は強化型(R)、打ち消す場合は**均衡型(B)**です。標準的な参考文献は 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·10.4 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)。少なくとも 1 つのリンクが必要です。


2. リンクの極性

極性は因果的影響の符号であり、すべてのリンクで必須です:

A -> B : +          # 同方向(A が増えると B が増える)
B -> C : -          # 逆方向(B が増えると C が減る)
A -> B : s          # + のエイリアス(same)
B -> C : o          # − のエイリアス(opposite)
C -> D : same       # + のエイリアス
D -> E : opposite   # − のエイリアス
A -> B +            # コロンはオプション

+ / s / same同方向を意味し、 / o / opposite逆方向を意味します。極性のないリンクは拒否されます。


3. 遅延と明示的な変数

"Training quality" -> "Salesperson skills" : + delay   # 遅延マーク(矢印上に ∥ ハッシュ)
A -> B : + ~delay                                       # ~delay 形式でも動作
var "Adoption rate"                                     # 変数を宣言して自動作成を防ぐ
loop R1 "Word of mouth"                                 # エンジンが検出したループに名前を付ける
  • delay / ~delay はリンクを遅延ありとしてマークします(システムダイナミクスのハッシュマーク)。
  • var "name" は変数を明示的に宣言します(ラベルを固定;自動作成されなくなる)。
  • loop ID "phrase" はエンジンが検出したループに人間が読める名前を付けます。

4. 計算されるフィードバックループ

これが差別化要因です。エンジンは:

  1. 符号付き有向グラフを構築します(ノード = 変数、エッジ = 符号付きリンク)。
  2. Johnson のアルゴリズムですべての基本的なフィードバックループ(単純有向サイクル)を列挙します — 宣言順で決定的に。
  3. 負のリンクの数を数えて各ループを分類します:
    • 偶数(0 を含む)→ R(強化型);符号の積 = +1
    • 奇数B(均衡型);符号の積 = −1

これはまさに Sterman の偶数・奇数ルールです。ループは種類ごとに検出順で番号付けされ(R1、B1、R2…)、ループの中心に R/B の回転グリフとともに描画されます。各ループには data-loopdata-kind が付きます。


5. よくある間違い

# 誤り — 極性のないリンク
A -> B

# 誤り — リンクがまったくないダイアグラム
cld

すべてのリンクに極性(: + または : -)が必要です;リンクのない CLD は拒否されます。極性は望ましさではなく変化の方向についてであることを覚えておいてください — 「死亡数」から「人口」へのリンクは、死亡が悪いことであっても依然として - です(死亡増 → 人口減)。


6. 規格準拠

表記法は Sterman の Business Dynamics(2000)と標準的なシステムダイナミクスの慣習に従っています:符号付きリンク極性、遅延ハッシュマーク、R/B ループ識別子。ループ極性の偶数・奇数負リンクルールは教科書の分類をそのまま実装しています。

7. ロードマップ

延期:ストック・フローへの昇格、リンク強度の重み付け、ドミナントループ(ループ固有値)分析の時系列計算。

Found this useful?

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