人工知能 計画(3個の箱) Lecture 12 3個の積み木 • ロボットアームが箱を積み替えるオペレータ • 机αの上から箱を持ち上げる:PICKUP(x,α) • 机αの上に箱を置く:上の逆=PICKUP-1(x,α) 別に名前をつけても良い(例)PUTDOWN(x,α) • 箱yの上に箱xを置く:PUTON(x,y) 箱のy上から箱xを持ち上げる: PUTON-1(x,y) 別に名前をつけても良い(例)TAKEOFF(x,y) • 順序が大事:前提条件が満たされていなくて は適用できないオペレータ 初期状態→(オペレータ)→目標状態 初期状態: 目標状態 ONTABLE(A),CLEAR(A) ONTABLE(B),CLEAR(B) ONTABLE(C),CLEAR(C) EMPTY ON(B,C), ON(A,B) CLEAR(A), ONTABLE(C) EMPTY A B A B C C 状態(state)の定義 • • • • • 箱xが机の上にある ONTABLE(x) 箱xが箱yの上にある ON(x,y) 箱xの上は何もない CLEAR (x) ロボットアームは何も持っていない EMPTY ロボットアームは箱xを持っている HOLD(x) 必要なoperatorsを定義する • • • • PUTON(x,y):xをyの上に置く TAKEOFF(x,y):yの上にあるxを掴む PUTDOWN(x):xをテーブルの上に置く PICKUP(x):テーブルの上にあるxを掴む 各operatorに対するpc,D,Aで定義 • pc:Prerequisite condition前提条件 そのoperatorを適用できる条件 • D:削除delete状態リスト そのoperatorを適用後に削除される状態 • A:追加add状態リスト そのoperatorを適用後に追加される状態 各operatorの前提条件,削除/追加リスト • PUTON(x,y):xをyの上に載せる 前提条件:HOLD(x),CLEAR(y):yの上が空きxを保持 削除リスト:HOLD(x),CLEAR(y):yの上は詰まり,手は空 追加リスト:ON(x,y),CLEAR(x),EMPTY:yにxが載り,上 は空、手は空 • TAKEOFF(x,y):yの上からxを除去 前提条件: ON(x,y),CLEAR(x),EMPTY:xがyに載り,そ の上は空き,手は空 削除リスト: ON(x,y),CLEAR(x),EMPTY: 追加リスト:HOLD(x),CLEAR(y):xを保持し、yの上は空 各operatorの前提条件,削除/追加リスト • PUTDOWN(x):xをテーブルαに置く P&D:HOLD(x) A:ONTABLE(x),CLEAR(x),EMPTY • PICKUP(x):テーブルαにあるxを拾う P&D: ONTABLE(x),CLEAR(x),EMPTY A: HOLD(x) オペレータ(operator)の定義 • PICKUP(x): <P&D>:ONTABLE(x),CLEAR(x),EMPTY <A>: HOLD(x) • PUTON(x): <P&D>: HOLD(x) <A>:ONTABLE(x),CLEAR(x),EMPTY • PUTON(x,y): <P&D>: HOLD(x), CLEAR(y) <A>:ON(x,y),CLEAR(x),EMPTY • TAKEOFF(x,y): <P&D>: ON(x,y), CLEAR(x), EMPTY <A>: HOLD(x), CLEAR(y) 一般的な問題解決法 • 目標状態の状態記述のうちで、初期状態によって達 成されていない命題はどれかを探し • それを一つ達成する という操作を繰り返す。 命題Cを達成するには、 Cを追加リストとするオペ レータOを求める。そのオペレータの前提条件が初 期条件によって満たされているかを調べ、満たされ ていればOを適用。満たされていなければそれを満 たすのに必要な命題を達成することを目標にする Local planning function LocalPlanning(S,G) 1.LOOP1: if satisfy G exit (S); 2.Sによって満たされないGの命題をgoal-listに入 3.LOOP2: if empty(goal-list) return(fail); 4.C=first(goal-list); remove(C,goal-list); Cを達成するオペレータを全て求めoplistに入 5.LOOP3:if empty (oplist) goto LOOP2 6.operator=first(oplist); remove(operator,oplist); if not applicable(operator), goto LOOP3 7.Gからoperatorの追加リストを除き、前提条件を加えた状態をG1とする 8.G2= LocalPlanning(S,G1) 9.if G2=fail, goto LOOP3 10. S=operator(S) 11. Goto LOOP1 LOOP1の最初のタスク: * SG 1. SはGを満たさないので次へ行く 2. ON(B,C)とON(A,B)をgoal-listに入れる (LOOP2へ) 3. goal-listはEMPTYでない 4.T=ON(B,C) としてgoal-listから外す Tを達成するオペレータを全て求め、oplistに入れる >>PUTON(B,C)をoplistへ (LOOP3へ) 5. oplistはemptyではない 6. operator= PUTON(B,C),適用可能なら次へ→実は適用不可 理由はPUTON(B,C)を適用後CLEAR(B)が追加されるが それはGにはないから. そこでgolalistの次の要素に行 く.ON(A,B)をgoal-listから外したうえでT=ON(A,B)を達成 するオペレータを全て求め、oplistに入れる >>PUTON(A,B)をoplistへ (LOOP3へ) 5. oplistはemptyではない 6. operator= PUTON(A,B),今度は適用可能な ので次へ 7. GからPUTON(A,B)の追加リストである ON(A,B)とCLEAR(A)を除き、前提条件であ るHOLD(A)とCLEAR(B)を加えた状態をG1 として LocalPlanning(S,G1)を解く (LOOP1の次のタスク) S→G1 G1= HOLD(A),CLEAR(B),ON(B,C),ONTABLE(C) Loop1の次のタスク: * S G1 2. HOLD(A);ON(B,C)をgoal-listへ(Loop2へ) 3. goal-listは空ではないので次へ 4. HOLD(A)を達成するのに必要なオペレータを oplistへ;これらはHOLD(A)を追加条件とする TAKEOFF(A,x)またはPICKUP(A)である 6. operator= PICKUP(A); remove(PICKUP(A),oplist); 7. HOLD(A) はG1から除かれ、代わりにG1に PICKUP(A)の前提条件である ONTABLE(A),CLEAR(A),EMPTYを入れてG2とし LocalPlanning(S,G2)を解く G2= ON(B,C), CLEAR(B), ONTABLE(C),ONTABLE(A),CLEAR(A),EMPTY Loop1の次のタスク: * S → G2 G2= ON(B,C), CLEAR(B), ONTABLE(C), ONTABLE(A), CLEAR(A), EMPTY でSにないのは ON(B,C)なので 2. ON(B,C)をgoal-listへ(Loop2へ) 3. goal-listは空ではないので次へ 4. ON(B,C)を達成するのに必要なオペレータをoplistへ; これらはON(B,C)を追加条件とするPUTON(B,C) 6. operator= PUTON(B,C); remove(PUTON(B,C),oplist); 7. ON(B,C) をG1から外し代わりにPUTON(B,C)の前提 条件であるHOLD(B),CLEAR(C)を入れてG3とし LocalPlanning(S,G3)を解く Loop1の次のタスク: * S → G3 G3= HOLD(B),CLEAR(C), ONTABLE(C),ONTABLE(A), CLEAR(A) でSに無いのは HOLD(B)なので 2. HOLD(B)をgoal-listへ(Loop2へ) 3. goal-listは空ではないので次へ 4. HOLD(B)を達成するのに必要なオペレータをoplistへ; これらはHOLD(B)を追加条件とするPICKUP(B) 6. operator= PICKUP(B); remove(PICKUP(B),oplist); 7. HOLD(B)をG3から外し代わりにPICKUP(B)の前提条 件であるONTABLE(B),CLEAR(B)を入れてG4とし LocalPlanning(S,G4)を解く ここでS=G4なので終了 副目標subgoalが複数命題となる場合 • 命題同士が独立とは 限らない • もし干渉しあったらど うするか? 1)並列にそれぞれの目 標を達成したあとで整 理 HOLD(A) ON(A, B) ON(B, C) CLEAR(B) HOLD(B) CLEAR(C) A 例 A B ON(A, B) ON(B,C) B C C EMPTY CLEAR(A) ONTABLE (A) EMPTY CLEAR(B) ONTABLE(B) A B A B C C S G A S B A B C C G ON(A, B) ON(B, C) ONTABLE(C) CLEAR(A) ON(A, B) を実現する オペレータ は適用可能.で 前提条件は HOLD(A) CLEAR(B) ON(B, C) を実現する オペレータはG にCLEAR(A)を 作るがこれはGに 含まれないので 適用不可 G1=HOLD(A),CLEAR(B),ON(B,C),ONTABLE(C) S→G A B A B C S C G A B A B S C C G ON(A, B) ON(B, C) ONTABLE(C) CLEAR(A) ON(A, B) を実現する オペレータ は適用可能.で 前提条件は HOLD(A) CLEAR(B) ON(B, C) を実現する オペレータはG にCLEAR(A)を 作るがこれはGに 含まれないので 適用不可 G1=HOLD(A),CLEAR(B),ON(B,C),ONTABLE(C) S → G1=HOLD(A),CLEAR(B),ON(B,C),ONTABLE(C) A B A B C C S G1 B A B S C A G2 C HOLD(A) G1 CLEAR(B) ON(B,C) ONTABLE(C) HOLD(A)を実現する オペレータは適用可能. で,前提条件は ONTABLE(A) CLEAR(A), EMPTY ON(B,C) を実現する オペレータはG にEMPTYを 作るがこれはGに 含まれないので 適用不可 G2=ONTABLE(A),EMPTY,CLEAR(A), ON(B,C),CLEAR(B), ONTABLE(C) S→G2=ONTABLE(A),EMPTY,CLEAR(A), ON(B,C),CLEAR(B), ONTABLE(C) G3=HOLD(B),CLEAR(C), CLEAR(A),CLEAR(B), ONTABLE(C), ONTABLE(A) B A B C A C ON(B,C), EMPTY CLEAR(A), CLEAR(B) G2 ONTABLE(C) ONTABLE(A) ON(B,C)を実現するオペレータ PUTON(B,C)は適用可能.で 前提条件はHOLD(B)とCLEAR(C) 追加条件はON(B,C)とEMPTY. S→G3 =HOLD(B),CLEAR(C),CLEAR(A),CLEAR(B), ONTABLE(C), ONTABLE(A) • G3にあってSに無いのはHOLD(B) • HOLD(B)を実現するオペレータはPICKUP(B) またはTAKEOFF(B,x) • PICKUP(B)は適用可能で前提条件は ONTABLE(B),CLEAR(B),EMPTY • 故に、G4= ONTABLE(B),CLEAR(B),EMPTY, CLEAR(C),CLEAR(A),CLEAR(B),ONTABLE(C), ONTABLE(A) となってS=G4で終了 A B C
© Copyright 2024 ExpyDoc