都市システム演習 29007803.doc
都市システム演習 (専門演習 I)
1. SD モデルの基礎
1.1 因果連鎖図(第 1 ステップ)
1.0
モデリングとシミュレーション
モデルを作成するときの第 1 ステップは,因果連鎖
(1) モデルの位置づけ
図の作成である。因果連鎖図とは,原因と結果の関係
いくつかの政策代替案(行動の選択肢)の効果を,
を図にしたものである。
モデルによるシミュレーション(模擬実験)で確かめて
(a) 最初にモデルの構想をスケッチするため,
評価し,意思決定に役立てる。
(b) シナリオや仮説体系を表現するため,
(c) 完成したモデルの骨格を示すため,
政策 A → モデルによ
政策 B → るシミュレ →
政策 C → ーション
評価
→
1 位 政策 B
→
2 位 政策 A
→
3 位 政策 C
などの目的に用いられる。
図 1.1.1 因果連鎖図の例
+
(2)
+
SD モデル
(+)
システムダイナミックスモデル(SD モデル)は,社会・
経済・環境など広い分野の政策立案に適用されるシミ
出生数
(-)
人口
- 死亡数
+
ュレーション手法である。もともと企業の生産計画や在
庫管理のシミュレーションのために開発されたフォレス
人口の自然動態(出生と死亡)の例を取り上げてみ
ターのインダストリアルダイナミックス1が元になっている。
よう。
始まりは 1960 年代のことである。古いようだが,計量
(1)
子供が生まれると(出生数が増えると),人口
経済モデルと並んで依然としてシミュレーションモデル
が増える。人口が増えると母親の数が増える
の重要な位置を占めている。
ので出生数も増える。
(2)
(3)
モデリングとシミュレーションの手順
一方,人口が増えると死ぬ確率が一定であれ
ば死亡数も増える。死亡数が増えると人口は
減る。
1. どのような問題への政策について検討するか?
(問題設定)
因果連鎖図は次の要素で構成される。
(a) 原因と結果に該当する変数(要因)。モデル作成
↓
の初期段階では抽象的概念でも良い。
2. どのような拡がりで検討するか?
(システム領域の設定)
(b) 原因から結果へ向けた矢印。
↓
(c) 因果の効き方。プラスかマイナスか。矢印の両端
3. どのような要因がどのように関連しているか?
(因果連鎖: 仮説)
(SD フローダイアグラム: 仮説)
に位置する 2 変数だけに着目してその間だけの
関係を示したものである。
↓
4. 統計資料による検証
(方程式の特定化: 要因の間の関係式)
1.2 正と負のフィードバックループ
↓
5. シミュレーションモデルの構築
ある変数 A の動きが原因となって,因果連鎖の体
↓
系の中で,その影響が再び変数 A に戻ってくるような
6. 政策代替案の作成
因果のループが存在するとき,それをフィードバックル
↓
ープという。
7. 政策シミュレーション
(a) あるフィードバックループにおいて,因果の効き
↓
8. 政策の評価
方がマイナスの矢印に着目してその総数がゼロ
↓
か偶数なら,正のフィードバックループという。
9. 意思決定
(i)
(注) ここでは,3, 5, 6, 7, 8, 9 を扱う。
( )
( )
 出生数 
 人口
人口 
(ii) 変数 A がプラスに動くと,さらに変数 A が
プラスに動くように影響が返ってくる。
J. W. Forrester,(1961) Industrial Dynamics, MIT Press (石
田晴久・小林秀雄共訳「インダストリアルダイナミックス」紀伊
国屋書店,1971)
1
(iii) 変数 A がマイナスに動くと,さらに変数 A
1
都市システム演習 29007803.doc
(1) レベル変数(level)
がマイナスに動くように影響が返ってくる。
(iv) 加速を意味する。
(b) 一方,マイナスの矢印の総数が奇数なら,負のフ
ィードバックループという。
(i)
( )
( )
 死亡数 
 人口
人口 
(a) 人・金・モノ・情報などの蓄積量(ストック)を表す。
(ii) 変数 A がプラスに動くと,変数 A がマイナ
(例) ある時点における,人口,世帯数,水槽の
スに動くように影響が返ってくる。
水位,等々。
(iii) 変数 A がマイナスに動くと,変数 A がプラ
(b) レベル変数は,われわれが直接的にその値を操
スに動くように影響が返ってくる。
作できないという性格を持つ。
(iv) ブレーキを意味する。
(例) 水槽の水位は,直接的に操作して決まる
モデルの設計者は,対象となるシステムのどのような
のではなく,刻々と流入する水量や,排出
フィードバックループに着目するか,また政策の投入
する水量を操作することで決まる。
がそれを通じてどのようにシステムを制御できるか,に
(c) 変数名: POP, HOUSEH, WLEVEL, etc.
ついて常に注意を払わねばならない。
(2) フロー(flow)
1.3
SD フローダイアグラム(第 2 ステップ)
因果連鎖図をもとにして,SD 独特の,より詳細な
(a) 人,金,モノ,情報などの流れの方向を表す。
SD フローダイアグラムを作成するのが次のステップで
(注) 変数を表すものではない。
ある(図 1.3.1 参照)。
(b) 本来の SD フローダイアグラムでは,フローを表
(a) 因果連鎖図で登場した変数(要因)の他に必要な
す線の種類が数種類あるが,ここでは上の 1 種
変数を付け加える。
類だけを用いる。
(b) 変数は具体的な内容のものにする。
(i) 統計的に観測できること。
(3) レイト変数(rate)
(ii) 観測できなくとも定量的に定義できること。
(c) SD フローダイアグラムを構成する記号には固有
または
の意味がある。
(d) 変数にそれらの記号を割り当てる。
(a) 人,金,モノ,情報などの,単位時間あたりの流量
図 1.3.1 人口の自然動態の SD フローダイアグラム
(フロー)を表す。
(例) 出生数(人/年),死亡数(人/年),水の流
入量(リットル/分),水の排出量(リットル/
人口
分),等々。
(b) 水槽に流れ込む(または出て行く)水の流量を調
節するバルブのような役割を果たす。
出生数
死亡数
(c) このレイト変数が,レベル変数の値を刻々と変え
ていくことになる。
出生率
(d) 本来の SD フローダイアグラムでは右の記号が一
死亡率
般的だが,ここでは左の記号を用いる。
(e) 変数名: BRTH, DEATH, INFLW, etc.
図 1.3.2 SD フローダイアグラムと記号
ソース
レベル
(4) 補助変数(supplement)
,パラメータ(定数)
シンク
補助変数
レイト1
パラメータ(定数)
(a) レベル変数やレイト変数以外の補助変数(または
レイト2
定数)を表す。
(b) 本来の SD フローダイアグラムでは,補助変数と
補助変数1または定数1
定数を区別して上のような記号で使い分けるが,
補助変数2または定数2
ここでは補助変数も定数も区別しないで,左の記
2
都市システム演習 29007803.doc
(2) 単位時間
号で表す。
(c) 変数名: BRTHPOP, DEATHPOP, etc.
(a) DT: 期と期の間の時間間隔
(例) 0.5 年,1 年,5 年など。
(5) ソース,シンク
(3) レベル方程式
(a) レベル.K = レベル.J + DT*レイト.JK
(b) 解説
(a) フローの発生源をソース(source)という。
K 期のレベルは,J 期のレベルに,流量を意味す
(b) フローの吸収先をシンク(sink)という。
るレイト.JK を加える(減らす)という形をとる。
(c) 変数として扱うものではなく,単に表現上の記号
(c) 例
である。
POP.K=POP.J+DT*BRTH.JK
POP.K=POP.J+DT*(BRTH.JK-DETH.JK)
(6) 因果連鎖
(4) レイト方程式
(a) レイト.KL=
f( レベル.K, レイト.JK, 補助変数.K )
(a) 因果連鎖を示す矢印。
(b) 解説
(i) KL 期のレイトは,K 期のレベルと,JK 期の
1.4 方程式の書き方とルール(第 3 ステップ)
レイトと,K 期の補助変数とで決定される。
(ii) KL 期のレイトは,L 期のレベルを決定す
図 1.4.1 SD フローと SD 方程式
るためのものである。
出生数
BRTH
人口
POP
(iii) KL 期のレイトは,K 期のレベルと K 期
の補助変数とが全て決定されてから最後に決定
される。
(iv) 同じ KL 期のレイトを用いて決定すること
出生率
RB
はできない。
(c) 例
BRTH.KL=POP.K*RB.K
出生率減少率
RDB
TIME
(5) 補助方程式
変数一覧
(a) 補助変数.K=
POP: 人口(人)
f( レベル.K, レイト.JK, 補助変数.K )
BRTH: 出生数(人/年)
(b) 解説
RB: 出生率(人/人年)
(i)
NRB: 出生率 RB の初期値(人/人年)
期のレイトと,K 期の補助変数とで決定される。
RDB: 出生率の減少率
(ii) K 期の補助変数は,K 期のレベルが全て
TIME: 期
決定されてから,その後で決定される。
K 期の補助変数は,K 期のレベルと,JK
(iii) 同じ K 期の補助変数を右辺に用いると
SD 方程式
きは,逐次的に補助変数が決定されるように計算
POP.K=POP.J+DT*BRTH.JK
順序に注意する必要がある。
BRTH.KL=POP.K*RB.K
(c) 例
RB.K=NRB*(1-RDB)^TIME.K
RB.K=NRB*(1-RDB)^TIME.K
(1) 期表現
(a) J: 前期
(b) K: 当期
(c) L: 次期
3
都市システム演習 29007803.doc
1.6 レベルとレイトとの関係
図 1.4.2 変数間の決定ルール
(1)
レベル変数.K
微分方程式による解析
単純なフィードバックについては,その挙動を机上
レイト変数.KL
で解析できる。ここではそれらを予備知識として整理し
補助変数.K
ておこう。実際のモデルも基本的には単純なものの組
J
K
時間の流れ
合せである。ただし組み合せた結果の挙動は,意外と
L
複雑なものになることがある。
レベル方程式は次のようにして微分方程式に変形で
きる。
1.5 シミュレーションの計算順序
L(t  1)  L(t )  DT  R(t )
(1.6.1)
 dL  R(t )dt
(1.6.2)
 dL

 R (t ) 

 dt

よってレイト方程式 R (t ) の関数形に応じてこれを解い
計算は次のような順序で実行される。
図 1.5.1 SD モデルによるシミュレーションの計算順序
てみればよい。
始め
以下に挙げるのはそうした微分方程式を机上で解
いたものである。実際のモデルでは,微分方程式が常
レベル変数 ← 初期値
レイト変数 ← 初期値
補助変数 ← 初期値
定数 ← 初期値
に解けるとは限らない。だからこそ数値シミュレーショ
ンを行うわけである。
期 TIME ← 1
レベル変数(K)を計算
補助変数(K)を計算
TIME=TIME+1
レイト変数(KL)を計算
最終期か
NO
YES
終わり
(注) レベル,補助変数,レイトの計算順序に注意。
4
都市システム演習 29007803.doc
(2) 正のフィードバック 1
(3) 正のフィードバック 2
R(t )  aL(t ) ( a  0 )
R(t )  aL(t )  k ( a  0 )
L(t )  L(0)e
k
k

L(t )   L(0)  e at 
a
a

at
図(2-1)
図(3-1)
人口L
人口L
出生数R
出生数R
転入R
出生率a
図(2-2)
10.0
転入k
出生率a
L(t)
図(3-2)
8.0
L(t)
50.0
A
6.0
A
40.0
4.0
30.0
2.0
0.0
-2.0
20.0
t
0
5
10
15
20
25
10.0
0.0
-4.0
-10.0
-6.0
-8.0
B
t
0
5
10
15
20
25
-20.0
-30.0
-10.0
-40.0
A a  0.1, L(0)  1
B
-50.0
初期値がプラスだと指数的に増加する。
B a  0.1, L(0)  1
A a  0.1, k  1, L(0)  3
初期値がマイナスだと指数的に減少する。
B a  0.1, k  1, L(0)  3
図(2-2)の例を縦軸方向に平行移動したような形状に
なるが,定常的なフローがある分だけ,指数的な増減
が大きい。
5
都市システム演習 29007803.doc
(4) 負のフィードバック 1
(5)
負のフィードバック 2
R(t )  aL(t ) ( a  0 )
R(t )  aL(t )  k ( a  0 )
L(t )  L(0)e at
k
k

L(t )   L(0)  e at 
a
a

図(4-1)
図(5-1)
人口L
人口L
死亡数R
転入R
死亡率a
図(4-2)
死亡数R
死亡率a
転入k
L(t)
15.0
図(5-2)
L(t)
15.0
10.0
A
10.0
5.0
A
0.0
5.0
t
0
5
10
15
20
25
0.0
-5.0
t
0
B
5
10
15
20
-5.0
-10.0
B
-10.0
-15.0
A a  0.2, L(0)  13
-15.0
B a  0.2, L(0)  13
A a  0.15, k  1.5, L(0)  5
いずれも増加・減少が減速してゼロに収束する。
B a  0.15, k  1.5, L(0)  5
いずれも増加・減少が減速して-k/a に収束する。
6
25
都市システム演習 29007803.doc
(6) 正負のフィードバック 1
R(t )  aL(t )k  L(t )  ( a  0, k  0 )
L(t ) 
k
k  L(0) akt
1
e
L(0)
( 0  L(0)  k )
(7) 正負のフィードバック 2
R(t )  (apt  bqt ) L(t )
( 0  a  1, 0  b  1, 0  p  1, 1  q )
図(6-1)
 a( p t  1) b(q t  1) 

L( t )  L(0) exp

 log p
log q 

人口L
魅力度係数a
図(7-1)
人口L
転入R
集積の魅力度aL
収容可能性
出生数R
k -L
死亡数R
収容限界k
図(6-2)
出生率a
出生率変化率p
L(t)
3.5
死亡率b
死亡率変化率q
3.0
B
A
図(7-2)
2.5
L(t)
6.0
2.0
5.0
1.5
4.0
1.0
3.0
0.5
2.0
0.0
t
0
5
10
15
1.0
20
A a  0.14, k  3, L(0)  0.1
0.0
0
B a  0.14, k  3, L(0)  2.9
10
20
30
40
50
t
a  0.25, b  0.075, p  0.99, q  1.06
この関数形で S 字形を描く曲線をロジスティック曲線という。
k かゼロに収束する。
途中で正のフィードバックから負のフィードバックに切り替
わり,最後はゼロに収束する。パラメータの設定によって異
なる。S 字形を描くこともあり得る。
7
都市システム演習 29007803.doc
1.7 遅れ
(a)住宅地開発の計画を立て,(b)宅地開発を実施し,
(c)できた宅地に住宅が立地する,という流れを考える
と,最初に計画を立ててから最終的に住宅が立地する
までに何年かの遅れがある。SD モデルではこうした遅
れのメカニズムを,レベル変数を直列につなげることで
明示的にモデル化することができる。
一方,遅れのメカニズムの内容をリアルにモデル化
するのではなく,単にインプットに対するアウトプットの
時間的応答の遅れとして機械的に表現する方法があ
る。それが以下で挙げる「指数遅れ」である。
DT: 期と期の間の時間間隔
DELX, DELY, DELZ: 平均遅れ(最初のインプッ
トが最後のアウトプットとして出るまでの平均時間)
インパルス・インプット: ある 1 時点で瞬間的に発生
するフロー
ステップ・インプット: ある時点までは a のフローで,
ある時点以降は a+b のフローになるようなフロー
(1)
1 次指数遅れ
DT=1
DELX=6
LX.K=LX.J+DT*(INX.JK-OUTX.JK)
OUTX.K=LX.K/DELX
(2)
2 次指数遅れ
DT=1
DELY=6
LY1.K=LY1.J+DT*(INY.JK-RY1.JK)
LY2.K=LY2.J+DT*(RY1.JK-OUTY.JK)
RY1.K =LY1.J/(DELY/2)
OUTY.K =LY2.J/(DELY/2)
(3)
3 次指数遅れ
DT=1
DELZ=6
LZ1.K =LZ1.J+DT*(INZ.JK -RZ1.JK)
LZ2.K =LZ2.J+DT*(RZ1.JK -RZ2.JK)
LZ3.K =LZ3.J+DT*(RZ2.JK -OUTZ.JK)
RZ1.K =LZ1.K/(DELZ/3)
RZ2.K =LZ2.K/(DELZ/3)
OUTZ.K =LZ3.K/(DELZ/3)
8
都市システム演習 29007803.doc
図 1.7.1 指数遅れを表す SD ダイアグラム
1次指数遅れ
LX
INX
OUTX
2次指数遅れ
LY1
INY
LY2
RY1
OUTY
DELY
3次指数遅れ
LZ1
INZ
LZ2
RZ1
LZ3
RZ2
OUTZ
DELZ
図 1.7.2 インパルス・インプットに対する指数遅れの応答 (DT=1, DEL=6, OUTX,OUTY,OUTZ)
2. 000
1. 500
1次指数遅れ
2次指数遅れ
3次指数遅れ
1. 000
0. 500
0. 000
0
10
20
30
40
50
60
図 1.7.2 ステップ・インプットに対する指数遅れの応答 (DT=1, DEL=6, OUTX,OUTY,OUTZ)
12. 000
10. 000
8. 000
1次指数遅れ
2次指数遅れ
3次指数遅れ
6. 000
4. 000
2. 000
0. 000
0
10
20
30
40
9
50
60
ダウンロード

都市システム演習 (専門演習I)