STRIPS

STRIPS
STRIPSのアルゴリズムをブロック
ワールドに適用してみる。
ブロックワールド
A
C
A
B
B
C
I: {Clear(B), Clear(C), On(C, A),
HandEmpty,
OnTable(A), OnTable(B)}
G: {On(B, C), On(A, B)}
資料(3)
分散人工知能
2
動作規則
1. pickup(x): テーブル上のブロックxを手に持つ。
前提条件:OnTable(x)∧Clear(x)∧HandEmpty
削除リスト: OnTable(x), Clear(x), HandEmpty
追加リスト:Holding(x)
2. putdown(x): 手に持ったブロック x をテーブル上に置く。
前提条件: Holding(x)
削除リスト: Holding(x)
追加リスト:OnTable(x), Clear(x), HandEmpty
3. stack(x, y): 手に持ったブロック x を y の上に積む。
前提条件:Holding(x) ∧Clear(y)
削除リスト: Holding(x), Clear(y)
追加リスト: HandEmpty, On(x,y), Clear(x)
4. unstack(x, y): y の上に積まれたブロック x を手に持つ。
前提条件: HandEmpty ∧ On(x,y)∧Clear(x)
削除リスト: HandEmpty, On(x,y), Clear(x)
追加リスト: Holding(x), Clear(y)
資料(3)
分散人工知能
3
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 を追加する。
資料(3)
分散人工知能
4
STRIPS(I, G)
6. 状態I に、Step5で得られた計画を適用し、
その結果得られた状態をQ とする。
7.再帰的にSTRIPS(Q, G) を呼ぶ。
8.Step5で得られた計画の末尾にStep7で
得られた計画を付加する。
9.Step8で得られた計画を返却して終了す
る。
資料(3)
分散人工知能
5
Step-1
1. 状態I と状態G の差D を計算する。ここで、D は状態G
を表すリテラルの中で、状態I で真でないリテラルの
集合である。
I: {Clear(B), Clear(C), On(C, A), HandEmpty,
OnTable(A), OnTable(B)}
G: {On(A, B ), On(B, C)}
D: {On(A, B), On(B, C)}
資料(3)
分散人工知能
6
Step-2
2. 差D が空ならば、空の計画を返却し終了する。
D ¬= Φ
資料(3)
分散人工知能
7
Step-3
副目標 On(A, B) が達成できなけ
れば、次に選択される副目標
(後戻り点)
3. 差D の中から副目標を一つ選択し、それを達成する動作
規則O を選択する。
I: {Clear(B), Clear(C), On(C, A), HandEmpty, OnTable(A), OnTable(B)}
D: {On(A, B), On(B, C)}
手段・目標解析:目標状態と現在の状態の差を小さくするため
1.目標に含まれるリテラルの中で、動作の実行により、真となるリテラルの数が最大の動
作規則(差D を最も減少させる動作規則)
stack(A, B), stack(B, C)
2.目標に含まれるリテラルの中で、動作の実行により、偽となるリテラルの数が最小の動
作規則(差D を最も増大させない動作規則)
unstack(A, B), unstack(B, C)
3.動作の前提状態に含まれるリテラルの中で、現状態で偽であるリテラルの数が最小の
動作規則(実行できる可能性が最も高い動作規則)
pickup(B), unstack(C, A)
資料(3)
分散人工知能
8
Step-4(Step-1,2)
4. 再帰的に STRIPS(I, P) を呼ぶ。ただし、P は動作規則O
の前提条件式である。
I: {Clear(B), Clear(C), On(C, A), HandEmpty,
OnTable(A), OnTable(B)}
O: stack(A, B)
P: {Holding(A), Clear(B)}
Step-4(Step-1)
D: {Holding(A)}
Step-4(Step-2)
D ¬= Φ
資料(3)
分散人工知能
9
Step-4(Step-3)
I: {Clear(B), Clear(C), On(C, A), HandEmpty, OnTable(A), OnTable(B)}
D: {Holding(A)}
手段・目標解析:目標状態と現在の状態の差を小さくするため
1.目標に含まれるリテラルの中で、動作の実行により、真となるリテラルの数が最大の動
作規則(差D を最も減少させる動作規則)
pickup(A), unstack(A, B), unstack(A, C)
2.目標に含まれるリテラルの中で、動作の実行により、偽となるリテラルの数が最小の動
作規則(差D を最も増大させない動作規則)
putdown(A), stack(A, B), stack(A, C)
3.動作の前提状態に含まれるリテラルの中で、現状態で偽であるリテラルの数が最小の
動作規則(実行できる可能性が最も高い動作規則)
pickup(B), unstack(C, A)
資料(3)
分散人工知能
10
Step-4(Step-4)
I: {Clear(B), Clear(C), On(C, A), HandEmpty,
OnTable(A), OnTable(B)}
O: pickup(A)
P: {OnTable(A), Clear(A), HandEmpty}
Step-4(Step-4(Step-1))
D: {Clear(A)}
Step-4(Step-4(Step-2))
D ¬= Φ
資料(3)
分散人工知能
11
Step-4(Step-4(Step-3))
I: {Clear(B), Clear(C), On(C, A), HandEmpty, OnTable(A), OnTable(B)}
D: {Clear(A)}
手段・目標解析:目標状態と現在の状態の差を小さくするため
1.目標に含まれるリテラルの中で、動作の実行により、真となるリテラルの数が最大の動
作規則(差D を最も減少させる動作規則)
unstack(C, A), unstack(B, A), stack(A, B), stack(A, C), putdown(A)
2.目標に含まれるリテラルの中で、動作の実行により、偽となるリテラルの数が最小の動
作規則(差D を最も増大させない動作規則)
pickup(A), stack(B, A), stack(C, A)
3.動作の前提状態に含まれるリテラルの中で、現状態で偽であるリテラルの数が最小の
動作規則(実行できる可能性が最も高い動作規則)
pickup(B), unstack(C, A)
資料(3)
分散人工知能
12
Step-4(Step-4(Step-4))
I: {Clear(B), Clear(C), On(C, A), HandEmpty,
OnTable(A), OnTable(B)}
O: unstack(C, A)
P: {HandEmpty, On(C, A), Clear(C),}
Step-4(Step-4(Step-4(step-1)))
D: {}
Step-4(Step-4(Step-4(step-2)))
D=Φ
資料(3)
Step-4(Step-4(Step-5))
分散人工知能
13
Step-4(Step-4(Step-5,6))
5. Step 4 で得た計画(P を充足する状態に到達するための計画)
の最後にO を追加する。
Plan ={} + unstack(C, A)
6. 状態I に、Step5で得られた計画を適用し、その結果得られた状態
をQ とする。
I: {Clear(B), Clear(C), On(C, A), HandEmpty,
OnTable(A), OnTable(B)}
O: unstack(C, A)
Q: {Clear(B), OnTable(A), OnTable(B), Holdind(C), Clear(A)}
資料(3)
分散人工知能
14
Step-4(Step-4(Step-7))
7.再帰的にSTRIPS(Q, G) を呼ぶ。
Q: {Clear(B), OnTable(A), OnTable(B), Holdind(C), Clear(A)}
G: {OnTable(A), Clear(A), HandEmpty}
資料(3)
分散人工知能
15
Step-4(Step-4(Step-8,9))
8.Step5で得られた計画の末尾にStep7で得られた計画を付加する。
9.Step8で得られた計画を返却して終了する。
資料(3)
分散人工知能
16