STRIPS(2).

STRIPS(2)
再帰処理の考え方を説明する。
STRIPS(I, G)
1. 状態I と状態G の差D を計算する。ここで、D は
状態G を表すリテラルの中で、状態I で真でな
いリテラルの集合である。
2. 差D が空ならば、空の計画を返却し終了する。
3. 差D の中から副目標を一つ選択し、それを達成
する動作規則O を選択する。
4. 再帰的に STRIPS(I, P) を呼ぶ。ただし、P の動
作規則O の前提条件式である。
5. Step 4 で得た計画(P を充足する状態に到達す
るための計画)の最後にO を追加する。
資料(4)
分散人工知能
2
STRIPS(I, G)
6. 状態I に、Step5で得られた計画を適用し、
その結果得られた状態をQ とする。
7.再帰的にSTRIPS(Q, G) を呼ぶ。
8.Step5で得られた計画の末尾にStep7で
得られた計画を付加する。
9.Step8で得られた計画を返却して終了す
る。
資料(4)
分散人工知能
3
ある副目標を真とするプランを作り、
実行させて中間状態を作成
stack(A,B)
再帰的に・・・
初期
状態
前提
条件
動作
O
前提条件を真とする
プランP1(動作列)が
初期状態から作成できた
真
プランP1+Oを実行して中間状態を作成
資料(4)
ある
副目標
最終
目標状態
G
中間
状態
分散人工知能
4
中間状態を初期状態として、Gを真
となる残りのプランを作成し、連結
再帰的に・・・
初期
状態
前提
条件
動作
O
前提条件を真とする
プランP1(動作列)が
初期状態から作成できた
ある
副目標
真
プランP1+Oを実行して中間状態を作成
再帰的に・・・
中間
状態
最終
目標状態
G
これを初期状態とし
てGを真とするプラ
ンP2を作成できた
求めるプランは、P1 + O + P2
資料(4)
分散人工知能
5
中間状態作成まで
Clear(B),
stack(A,B)
OnTable(A), pickup(A) Holding(A)
HandEmpty,
Clear(A)
初期状態
On(A,B)
中間
状態
putdown(C)
実行
unstack(C,A)
資料(4)
Holding(C),
¬HandEmpty,
Clear(A)
分散人工知能
6
中間状態から再帰処理
Clear(C),
stack(B,C)
OnTable(B), pickup(B) Holding(B)
HandEmpty,
Clear(B)
初期状態
(中間)
On(B,C)
中間
状態
putdown(A)
unstack(A,B)
実行
資料(4)
Holding(A),
¬HandEmpty,
Clear(B),
¬On(A,B)
当初、真となった副目標を偽に!
分散人工知能
7
目標状態作成まで
On(B,C)
中間
状態
On(B,C)
Step 7の再帰で、
Dでなく、G となっ
ている理由
目標
状態
再度、副目標 On(A,B)を真とするために
Clear(B),
stack(A,B)
pickup(A) Holding(A)
資料(4)
分散人工知能
On(A,B)
8