授業資料 - 慶應義塾大学 徳田研究室
Download
Report
Transcript 授業資料 - 慶應義塾大学 徳田研究室
自律分散協調システム
分散アルゴリズム(1)
慶應義塾大学環境情報学部
徳田英幸
© H.Tokuda 2009
基本的な概念:自律分散協調
自律性
個の確立
主体的行動
分散性
多数の個
空間的・ネット的に分散
協調性
個と個の協調プロトコル
協調により全体の機能を維持・形成する
構成論的手法 vs. 自己組織論的手法
システムとしての評価
評価の軸
良いシステム vs. 悪いシステム
© H.Tokuda 2008
分散アルゴリズム(1)
Distributed Mutual Exclusion
Election Algorithm
Distributed Deadlock
Clock Synchronization
Byzantine consensus problem
。。。
© H.Tokuda 2008
Mobile Ad hoc Networks
4
無線アドホックネットワーク
アドホックネットワークとは?
ネットワーク・インフラが存在しない
peer-to-peerでの通信スタイル
トポロジが人や物の動きと共に動的に変化する
ノードの移動、無線電波品質の変化
Weak Connectivity
常時接続の保証ではない
5
分散アルゴリズム
~分散デッドロック問題~
並行プロセスの挙動
デッドロック(1)
Process P1
{
…
brec(p2, …);
…
}
Process P2
{
…
brec(p1, …);
…
}
Brec(p2,...)
p1
Brec(p1,...)
p2
© H.Tokuda 2006
並行プロセスの挙動
デッドロックとは?
システムを構成しているすべてのプロセスが
起きるはずのない事象を待ち続ける状態
p1
Brec(p2,...)
Brec(p3,...)
Brec(p1,...)
p3
p2
© H.Tokuda 2006
並行プロセスの挙動
デッドロック(2)
Process P1
{
…
request(printer,…)
request(tape, …)
…
}
p1
Process P2
{
…
request(tape, …)
request(printer,…)
…
}
p2
© H.Tokuda 2006
分散デッドロック
システムを構成しているすべてのプロセスが
起きるはずのない事象を待ち続ける状態
p1
Brec(p2,...)
Brec(p3,...)
Brec(p1,...)
p3
p2
© H.Tokuda 2007
WFG(Wait-for-Gragh)
p1
Brec(p2,...)
Brec(p3,...)
Brec(p1,...)
p3
p2
Host-B
Host-A
© H.Tokuda 2007
Dependability
Dependability
Dependability...
© H.Tokuda 2007
ディペンダブルシステム
高信頼性(Dependability)とは、以下の要件を満たす
可用性(Availability)
システムを利用したいときに高い確率で利用可能
信頼性(Reliability)
システムは、ある一定期間、正常に稼動可能
安全性(Safety)
障害時でも、システムに重大な問題が生じない
保守性(Maintainability)
故障したシステムを容易に回復可能
© H.Tokuda 2007
Dependabilityとの出会い @cmu
Prof. Dan Siewiorek
C.mmp => Cm* => C.vmp
Issues in Testing and Reliability in Computer Systems
新しい概念?
Fault Tolerant Computing Systems
Mission Critical Systems
Dependable Computing Systems
© H.Tokuda 2007
耐障害性(フォールトトレラント性)
フォールトトレラント性
システムの一部に障害が発生しても、システム全体のサービスを
提供し続けられる性質
障害(fault)の種類
過渡障害(transient fault)
一度だけ発生し、消滅する障害
ノイズによるビット損失など
間欠障害(intermittent fault)
一時的な障害が繰り返される障害
コネクタの接続不良など
永久障害(permanent fault)
修復されるまで存在し続ける障害
ディスククラッシュなど
© H.Tokuda 2007
Dependabilityの議論
Dependability と IT assurance
IT
system
情報システム系
Reliability, Availability, Safety
Confidentiality, Integrity, Maintenability
ガバナンス系
Gov.
運用・管理・保守している人、組織、社会制度
何がディペンドしているのか?
人(命)、モノ、金
National Security
...
© H.Tokuda 2007
障害の遮蔽
システムに冗長性を持たせることで障害を隠蔽
情報的冗長性
CRCチェック、エラー訂正符号など
時間的冗長性
動作のやり直しによる冗長性
トランザクション処理など
物理的冗長性
余分なデバイスやプロセスを持たせる冗長性
RAIDなど
© H.Tokuda 2007
耐故障アルゴリズム
停止故障
故障したプロセスは永遠に停止する.
仮定
通信は、可能であるが、プロセスの挙動が保証されない
t-回復力 (t-resilient)
あるアルゴリズムが高々t個のプロセスの故障にも耐えるア
ルゴリズム.
ビザンティン故障
故障したプロセスの動作に一切の仮定をおかない.
故障プロセスは、任意の動作しうる!
© H.Tokuda 2007
ビザンティン合意問題
正常なプロセスが同じ初期値を持っている場合、それ
らのプロセスは、ある値で合意形成することができる。
e.g. 3 processes -- 可能かどうか?
P1
値={0, 1}
合意の値は?
故障プロセス
P2
P3
© H.Tokuda 2007
ビザンティン合意問題:3 Processes
P1
P1
P1
0
0
0
1
1
1
P2
P3
P2
P3
1
P2
値={0, 1}
合意の値は?
© H.Tokuda 2007
P3
ビザンティン合意問題
Lamportの解(1982)
障害プロセスがm個のとき、正常プロセスが
2m+1個以上、全体で3m+1個以上のとき、正常
プロセス同士で合意に至ることが可能
(例)m=1, n=4>=3m+1なのでOK
P1
P2
0
0
0
1
P4
P3
将軍1:(1,2,*,4)、将軍2:(1,2,*,4)、将軍4:(1,2,*,4)
© H.Tokuda 2007
分散アルゴリズムの実践
~頭の体操から創発システムへ~
(I) 分散ソート問題
1からNまでの整数の分散ソート
初期値
N = 100
Processes: P1- P10
各プロセスは、P1から順に横一列に並んでおり、自分の隣接して
いるプロセスとのみ交信出来るものと仮定する。
問題
P1からP10までの各プロセスにランダムに選ばれた10個の数が
初期の値として与えられた時、どのようにしてソートすることができ
るか?
各プロセスは、どのような条件で、ソートが終了したことを判定でき
るか?
© H.Tokuda 2007
(II) ロボット整列問題
ある部屋内において、与えられた半径dの円
周上にほぼ等間隔で整列するプログラムを作
成せよ。
仮定
ロボットが共有座標系を持つ
同期的な動作をする (c.f. life game)
© H.Tokuda 2007
ロボット整列問題
一群のロボットを自律的に円に整列される
Algorithm 1: Big brother方式
各位置を明示
Algorithm 2:先生ロボット+生徒ロボット
先生ロボットが計算し、指示する
Algorithm 3:先生ロボットを選出
先生ロボットを動的に選出
Algorithm 4: 同一ロボット
自律的に整列
© H.Tokuda 2007
課題 3(a):Robotroom.javaの作成
配布されたRobotroom.javaのプログラムを
完成し、要求された協調動作を実現せよ。
提出物
協調動作の説明
プログラムのソースコード
実行例の初期値と最終画面のダンプ
考察
© H.Tokuda 2007
世代の概念: Life game (1)
Life game
J. H. ConwayのLife Game
Life gameのルール
盤面上にいくつかの石(生命体)を置く.(初期集団)
盤面のある場所が空いていて、しかもその場所と隣り合う
ちょうど3個の場所に生命体が存在するならば、次の世代
にはその空いた場所に新しい生命体が誕生する.
また、すでに存在する生命体については、隣り合う場所に
住む生命体が1個以下、または4個以上になると、過疎ま
たは過密のため、次の世代には、死んでしまう.
© H.Tokuda 2007
世代の概念: Life game (2)
世代の概念
*
*
*
*
* *
*
© H.Tokuda 2007
* *
* * *
* *
…
課題3(b) Wave programの作成
配布されたwave2.cプログラムを改良して、
競技場で起こるwave 現象をsimulateできるようにす
る。
<初期状態><次世代生成部分>
提出物
ソースコード
出力結果
考察:これをもとに、創発を起こす上でもっとも重要
な要因について議論せよ。
© H.Tokuda 2007
創発システムに向けて
慶應義塾大学環境情報学部
徳田英幸
創発システムについて
複数の要素が有機的に関係し合って、相互作用を通
して全体としてまとまった機能を発現している要素の
集まり
相互作用が変わればシステムの機能も変わる!
弱い創発システム
ミクロな要素の動きが集まって全体にわたるマクロなパター
ンが創発するシステム
強い創発システム
環境変化に適応できる創発するシステム
© H.Tokuda 2007
創発のかたち
上位層でのかたち
グループ、群、コミュニティ
水の対流
サッカー場のウェーブ
自律型ロボットの整列問題
© H.Tokuda 2006
共通する性質は?
自分と同じ能力の要素が沢山存在する
沢山の要素が広い空間に分散している
すべての要素が共通の方法で(自分の近くの
要素とだけ)情報の交換をする
すべての要素が同時並列的にうごく
すべての要素が同じ状況になるように動く(同
じ評価関数をもっている)
© H.Tokuda 2007
創発のギャップ
人間 vs. 自律型ロボット
個の非プログラム性
個の学習・動的適応性
多様な個
多様な価値観
情動的な行動
同期性
個の密度
population density
全体の規模
Scalability
実空間上の行動 vs. ネットワーク上の行動
© H.Tokuda 2006