人工知能 計画 Lecture 9 GPS (general problem solver) および 計画 最も簡単な問題:積み木 • ロボットアームが箱を積み替えるオペレータ • 机の上から箱を持ち上げる:PICKUP(x) • 机の上に箱を置く:上の逆=PICKUP-1(x) 別に名前をつけても良い(例)PUTDOWN(x) • 箱yの上に箱xを置く:PUTON(x,y) 箱のy上から箱xを持ち上げる: PUTON-1(x,y) 別に名前をつけても良い(例)TAKEOFF(x,y) • 順序が大事:前提条件が満たされていなくて は適用できないオペレータ 初期状態→(オペレータ)→目標状態 • 初期状態: ONTABLE(A) ONTABLE(C) ON(B,C) B A C 目標状態 ON(A,C) A C B 一般的な問題解決法 • 目標状態の状態記述のうちで、初期状態によって達 成されていない命題はどれかを探し • それを一つ達成する という操作を繰り返す。 命題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 必要な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を下に置く 前提条件:HOLD(x) 削除リスト:HOLD(x) 追加リスト:ONTABLE(x),CLEAR(x),EMPTY • PICKUP(x):xを拾う 前提条件: ONTABLE(x),CLEAR(x),EMPTY 削除リスト: ONTABLE(x),CLEAR(x),EMPTY 追加リスト: HOLD(x) 最初のタスク: * SG 1. SはGを満たさない 2. ON(A,C)をgoal-listに入れる 3. goal-listはemptyでない 4.T=ON(A,C) としてgoal-listから外す Tを達成するオペレータを全て求め、oplistに入れる >>PUTON(A,C)をoplistへ 5. oplistはemptyではない 6. operator= PUTON(A,C)、適用可能でないLOOP3へ、oplist が空ならLOOP2へ>>fail(????) 7. GからPUTON(A,C)の追加リストを除き、前提条件 HOLD(A);CLEAR(C)を加えた状態をG1として、 LocalPlanning(S,G1)を解く 次のタスク: * S G1 2. HOLD(A);CLEAR(C)をgoal-listへ 4. goal-listを達成するのに必要なオペレータをoplist へ;これらはHOLD(A);CLEAR(C)を追加条件とす るTAKEOFF(A,C)またはPICKUP(A)である 6. operator= PICKUP(A); remove(PICKUP(A),oplist); 7. HOLD(A) はG1から除かれ、代わりにG1に ONTABLE(A),CLEAR(A),EMPTYを入れて LocalPlanning(S,G1)を解く これを繰り返す 初期状態→(オペレータ)→目標状態 初期状態 S ONTABLE(A)&&ON(B,C) A 目標状態 G ON(A,C)&&ONTABLE(C) B A C C B SからGへは直接行けない ON(A,C)を実行するにはoperator PUTON(A,C)が必要 PUTON(A,C)の前提条件としてHOLD(A)&&CLEAR(C)が必要。 これらをsubgoal=G1とする。SからG1へは直接行けない。 HOLD(A)の実行にはoperator PICKUP(A)またはTAKEOFF(A,x)が必要。 CLEAR(C)の実行にはOPERATOR TAKEOFF(B,C)が必要。 PICKUP(A)の前提条件としてONTABLE(A)&&CLEAR(A)&&EMPTYが必要。 TAKEOFF(B,C)の前提条件としてON(B,C)&&EMPTY&&CLEAR(B)が必要。 これらは初期条件Sにより満たされているので実行可能。 ONTABLE(C)は最初からあるので、そのままいじらない ON(A,C) S → ON(A,C) goallistに PUTON(A,C) HOLD(A)&CLEAR(C) PICKUP(A) TAKEOFF(A,x) S → HOLD(A)&CLEAR(C) CLEAR(A) ONTABLE(A) EMPTY CLEAR(C) PUTDOWN(y):y=B CLEAR(A) ON (A,x) EMPTY CLEAR(C) S → CLEAR(A)& ONTABLE(A)& EMPTY&CLEAR(C) PUTON(y,z) HOLD(B) CLEAR(A) ONTABLE(A) CLEAR(C) CLEAR(C)が実現されないので HOLD(y) CLEAR(A) ONTABLE(A) CLEAR(C) CLEAR(A) Cの上に載っている物を下ろす TAKEOFF(B,C) S → HOLD(B)&CLEAR(A) &ONTABLE(A)&CLEAR(C) EMPTY, CLEAR(A), ONTABLE(A), ON(B,C) S → EMPTY & CLEAR(A) &ONTABLE(A)&ON(B,C)
© Copyright 2024 ExpyDoc