授業資料 - 慶應義塾大学 徳田研究室

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