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
© Copyright 2024 ExpyDoc