Upload
viola
View
38
Download
0
Embed Size (px)
DESCRIPTION
人工知能 計画 Lecture 11. 場所を指定した 積み木. ロボットアームが箱を積み替えるオペレータ 机 α の 上から箱を持ち上げる: PICKUP ( x,α ) 机 α の 上に箱を置く:上の逆= PICKUP -1 ( x,α ) 別 に名前をつけても良い ( 例 ) PUTDOWN( x,α ) 箱 y の上に箱 x を置く: PUTON( x,y ) 箱の y 上から箱 x を持ち上げる: PUTON -1 ( x,y ) 別に名前をつけても良い ( 例 )TAKEOFF( x,y ) 順序が大事:前提条件が満たされていなくては適用できないオペレータ. - PowerPoint PPT Presentation
Citation preview
人工知能GPS と ハノイの塔 ,Logic
Theorist
L ecture 11
鳥取大学工学研究科情報エレクトロニクス専攻
田中美栄子
GPS(general problem solver)
および
計画
Newell, Shaw, Simon(1957) による LT の続き
ハノイの塔:箱を積む場所を変える
• ロボットアームが箱を積み替えるオペレータ
• 机の上から箱を持ち上げる: PICKUP( x)
• 机の上の場所 α に箱を置く: PUTDOWN(x,α)
• 箱 y の上に箱 x を置く: PUTON(x,y)• 箱 y の上の箱 x を持ち上げる:
TAKEOFF(x,y)
ハノイの塔問題• 3つの柱 A , B , C と中心に穴の空いた 2 枚
の円板とがあり,円板 1 は円板 2 より小さい.• 上から円板 1 ,円板 2 の順に柱 A に置かれたの
を柱 B に移す
条件:大きな円板を小さな円板の上に置くことは出来ず,また,一回の動作で一枚の円板しか動かすことが出来ない
A AB B
<状態>の記述
• ON(x,y) : 円板 x が円板 y の上にある状態
• AT(x,Y) : 円板 x が柱 Y の最下部にある状態
• CLEAR(x) :円板 x の上に何もない状態• VAC (X) : 柱 X に円板が無い状態
動作オペレータMV1(x,y,Z) :円板 x を円板 y の上から柱 Z に移すP : ON(x,y),CLEAR(x),VAC(Z);D : VAC(Z);A : AT(x,Z),CLR(y)
MV2(x,Y,z) :円板 x を柱 Y から外し,円板 z の上に載せる P : AT(x,Y),CLEAR(x),CLEAR(z); D : AT(x,Y),CLEAR(z); A : ON(x,z),VAC(Y)
MV3(x,Y,Z) :円板 x を柱 Y から外し,空いている柱 Z に移す P:AT(x,Y),VAC(Z),CLEAR(x); D:AT(x,Y),VAC(Z); A::VAC(Y),AT(y,Z)
MV4(x,y,z) :円板 x を円板 y の上から外し,円板 z の上に載せる P:ON(x,y),CLEAR(x),CLEAR(z); D:ON(x,y),CLEAR(z); A::ON(x,z),CLEAR(y)
動作オペレータMV1(x,y,Z) :円板 x を円板 y の上から柱 Z に移すP : ON(x,y), CLEAR(x), VAC(Z);D : VAC(Z);A : AT(x,Z),CLR(y)
MV2(x,Y,z) :円板 x を柱 Y から外し,円板 z の上に載せる P : AT(x,Y),CLEAR(x), CLEAR(z); D : AT(x,Y),CLEAR(z); A : ON(x,z),VAC(Y)
MV3(x,Y,Z) :円板 x を柱 Y から外し,空いている柱 Z に移す P:AT(x,Y),VAC(Z),CLEAR(x); D:AT(x,Y),VAC(Z); A::VAC(Y),AT(y,Z)
MV4(x,y,z) :円板 x を円板 y の上から外し,円板 z の上に載せるP:ON(x,y),CLEAR(x),CLEAR(z); D:ON(x,y),CLEAR(z); A::ON(x,z),CLEAR(y )
初期状態→(オペレータ)→目標状態
初期状態 S : 目標状態 G:
ONTABLE(A) ON(A,C)ONTABLE(C)ON(B,C)
A
B
C C
A
B
一般的な問題解決法• 目標状態の状態記述のうちで、初期状態によって達成さ
れていない命題を探し• それを一つ達成する
という操作を繰り返す。
命題 C を達成するには、
C を追加リストとする動作関数(オペレータ: O )を求める。
そのオペレータ: O の前提条件が初期条件によって満たされているかを調べ、
満たされていれば O を適用満たされていなければそれを満たすのに必要な命題を達成
すること新たな目標にする
Local planningfunction 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 LOOP26 . operator=first(oplist); remove(operator,oplist); if not applicable(operator), goto LOOP37 . G から operator の追加リストを除き、前提条件を加え
た状態を G1 とする8 . G2= LocalPlanning(S,G1)9 . if G2=fail, goto LOOP310. S=operator(S)11. Goto LOOP1
各 LOOP の役割
LOOP1 : function local-planning(S,G)
LOOP2: goallist に含まれる「状態」を実現する
動作オペレータを捜し、 oplist に入れる
LOOP3 : oplist に含まれる動作オペレータが適用できる前提条件が満たされているかをチェック
必要な operators を定義する
• PUTON(x,y) : x を y の上に置く• TAKEOFF ( x,y) : y の上にある x を掴
む• PUTDOWN(x):x をテーブルの上に置く• PICKUP(x) :テーブルの上にある x を掴
む
各 operator に対する P,D,A で定義
• P: Prerequisite condition (前提条件)
その operator を適用できる状態
• D: Delete condition (削除状態リスト)
その operator を適用後に削除される状態
• A : Add condition (追加状態リスト)
その operator を適用後に追加される状態
各動作関数( operator )の P,D,A• PUTON(x,y) : x を y の上に載せる動作P : HOLD(x),CLEAR(y) y の上が空き
x を保持D: HOLD(x),CLEAR(y)A : ON(x,y),CLEAR(x),EMPTY y の上にxが載り ,
上は空、手は空
• TAKEOFF ( x,y) :y の上から x を除去する動作
P : ON(x,y),CLEAR(x),EMPTY xがyに載り , その上は
空き , 手は空D: ON(x,y),CLEAR(x),EMPTYA : HOLD(x),CLEAR(y) xを持ち , yの
上は空
各 operator の前提条件 , 削除 / 追加リスト
• PUTDOWN(x): xをテーブルに置く動作P : HOLD(x)D: HOLD(x)A : ONTABLE(x),CLEAR(x),EMPTY
• PICKUP(x) : x をテーブルから持ち上げる動作
P : ONTABLE(x),CLEAR(x),EMPTYD: ONTABLE(x),CLEAR(x),EMPTYA : HOLD(x)
最初のタスク:1.【 LOOP1 】 S は G を満たさないので次に行く
2. ON(A,C) を goal-list に入れる
3. 【 LOOP2 】 goal-list は empty でないので次に行く4.T=ON(A,C) として goal-list から外す T を達成するオペレータを全て求め、 oplist に入れる
>>PUTON(A,C) を oplist へ
5. 【 LOOP3 】 oplist は empty ではないので次に行く6. operator= PUTON(A,C) 、これを適用するには
HOLD(A),CLEAR(C) が前提条件として必要だが、満たされないので 5 へ
5 ここで oplist が空なら LOOP 3を抜けて 3 に戻る3. ここで goallist が空なら LOOP 2を抜けて 7 に行く
7. G から PUTON(A,C )の追加リストを除き、前提条件HOLD(A);CLEAR(C) を加えた状態を G1 として、 LocalPlanning(S,G1 )を解く
G*
S
次のタスク:2 . HOLD(A);CLEAR(C) を goal-list へ4. goal-list を達成するのに必要なオペレータを oplist へ; これらは HOLD(A);CLEAR(C) を追加条件とする TAKEOFF(A,C) または PICKUP(A) である( pickup ( A) を選んだ場合)6. operator= PICKUP(A); (oplist から外しておく ); これを適用するには ONTABLE(A) と CLEAR(A) が必要
( CLEAR(C) も必要)、満たされないので5へ
5. oplist は empty なので LOOP3 を抜けて 3 に行く3. goallist は empty なので LOOP 2を抜けて 7 に行く
7. HOLD(A) は G1 から除かれ、代わりに G1 にONTABLE(A),CLEAR(A),EMPTY を入れて
LocalPlanning(S,G1) を解くこれを繰り返す
1G*
S
初期状態→(オペレータ)→目標状態
初期状態 S 目標状態 G
ONTABLE(C,α) を消して ONTABLE(C,β) を作る
EMPTY^CLEAR(A)^ON(B,C) )^ON(A,B)の4条件は S と G で共通に存在する
AB
C C
AB
α ββα
Local-planning(S,G) の動作Local-planning(S,G) の手順:
S から G へは直接行けない ( step1)
ON(A,C) を生成する operator として PUTON(A,C) が必要 (step2,3,4)
PUTON(A,C) の前提条件として (step5,6,7) HOLD(A)&CLEAR ( C) が必要
これらを subgoal=G1 として (step8)
local-planning(S,G1) を使う
Local-planning(S,G1) の動作Local-planning(S,G1) の手順: S から G1 へは直接行けない。HOLD(A) の生成には PICKUP(A) または TAKEOFF(A,x) 等の operator が必要
CLEAR(C) の生成には TAKEOFF(B,C) が必要
PICKUP(A) を動作させる前提条件としてONTABLE(A)&CLEAR(A)&EMPTY
が必要
TAKEOFF(B,C) を動作させる前提条件として ON(B,C ) &EMPTY&CLEAR(B) が必要
これらは初期条件 S により満たされているので実行可能
S → ON(A,C) goallist に
S → HOLD(A) &CLEAR ( C )
S → CLEAR(A) & ONTABLE(A) &EMPTY&CLEAR(C )
CLEAR(C )が実現されないので
C の上に載っている物を下ろす
S → HOLD(B) &CLEAR ( A) &ONTABLE(A) &CLEAR(C )
S → EMPTY & CLEAR(A)
&ONTABLE(A)&ON(B,C)
ON(A,C)
HOLD(A) &CLEAR ( C )
PUTON(A,C)
CLEAR(A)ONTABLE(A)EMPTYCLEAR ( C)
PICKUP(A) TAKEOFF(A,x)
PUTDOWN(y) : y=B PUTON(y,z)
TAKEOFF(B,C)
CLEAR(A)ON (A,x)EMPTYCLEAR( C)
HOLD(B)CLEAR(A)ONTABLE(A)CLEAR(C )
HOLD(y)CLEAR(A)ONTABLE(A)CLEAR ( C)CLEAR(A)
EMPTY, CLEAR(A), ONTABLE(A), ON(B,C)
ONTABLE ( C )は最初からあるので、そのままいじらない
演習:ハノイの塔• 大きさが順に大きくなる3つの円盤、 A,B,C と
3つの柱 1,2,3. 最初円盤は全て柱1の上に、一番小さい A を一番上に、 C を一番下にして積み重ねられている。これを柱3に A が一番上になるように移す、但し一度に1個だけ円盤を動かせる、どの円盤もそれより小さい円盤の上に置けない
• 最初に出来るのは A を柱 2 か柱 3 に移すことだが、そのあと A の上には B も C も置けないので、つまりは A を移さなかった柱に B を移して置いて、その上に A を移し、空いた柱 3 に C を移すことができれば成功である.次にその C の上に B を載せ、その上に A を載せる
S は G ではない、ならサブタスク G1• LOOP1 では
• S は ON ( A,B) & ON(B,C ) & ONPOLE1 ( C)• G は ON ( A,B) & ON(B,C ) & ONPOLE2 ( C)• S で満たされていない G の条件は ONPOLE2 ( C)• ONPOLE2 ( C) を goallist にいれる( LOOP2
へ)• goallist の先頭要素を取出し( goallist から消す)• これを実現するオペレータを oplist に入れる
(LOOP3 へ )• これは適用可能か?できなければ LOOP3 へ• 可能ならこのオペレータを適用、 goallist からこの
オペレータの追加リストを除き(用済み) PC を加えた状態を G1 とする( G1 を goal とした問題を解く)
8段階を右の3段階と見る
1 .ABC 2. _ 3. _1 . BC 2. _ 3. A1 . C 2. B 3. A1 . C 2. AB 3. __
1 . __ 2. AB 3. C1 . A 2. B 3. C1 . A 2. _ 3. BC1 . __ 2. __ 3. ABC
高さ2の山を 1. から 2. へ移す
高さ1を 1. から 3.へ
高さ2の山を2. から 3. へ移す
目標:高さ3の山を柱1から柱3へ移す
小目標:高さ 2 の山を柱 2 から柱 3 へ移す
小目標:高さ 2 の山を柱 1 から柱 2 へ避難させる
高さ 1の山を柱 1 から柱 3へ移動
高さ 1の山を柱 1 から柱 2へ移動
高さ 1の山を柱 3 から柱 2へ移動 高さ 1 の
山を柱 2から柱 1へ移動
高さ 1 の山を柱 2 から柱 3 へ移動
高さ 1の山を柱 1 から柱 3へ移動
原始問題:高さ 1 の山を柱 1 から柱 3 へ移動
人工知能は要素技術では足りない
• 問題を要素に分解して緻密な仕事を行う、という状況よりは、人間の行うグローバルな意思決定が実用上は重要
• 人が近づきにくい災害現場、宇宙空間等へ行って救助活動を行うロボット:複雑なタスク
• ロボットは、①移動する(直進する、回転する)②荷物を運ぶ③障害物をどける(戸を開ける)④通信する⑤サブ・タスクを変更する
等様々な意思決定と行動を組み合わせる
別の例: Logic theorist• 数学者の代わりをする人工知能プログラ
ム• Russel-Whitehead の「数学原理」:公理
から構成する数学→コンピュータ向き• 公理( AXIOM) :証明無しで使える命
題:仮定や定義に近い(例えばユークリッドの公理)
• 命題 (proposition) : statement 、{ Yes,No}の値をとる変数
• 定理 (theorem ):証明の必要な命題
Logic Theorist (Newell,Shaw,Simon) の例• 公理をいくつか仮定して 例えば S から G を導く。• S と G の距離を縮める為、公理 1 を適用して S を S1
とする。これで最後の部分が G と同じ形になった
• S1 と G の距離を縮めるには()の中の演算子を同じにしたい。公理 6 を用いてS1 を S2 にし、公理3でS3 にする
• 更に()の中身を G に近づける為、公理 1 を用いてS4 に変換。これで G との差が消失
1. 積は可換
2. 和は可換
3. 2重否定
4. 5.6.
ABBA
)BA(BA
)BA(BA
)B∨A(B∧A
A∨B→B∨A
R)PQ(:G R)QP(:1S
R)QP(:3S
)QP(R:S
AA
!!!GR)PQ(:4S
R)QP(:2S
論理演算• 最初の目標:公理を用いて S→G を導出:
• S→S1 で大まかな形の差異を縮めた• 次の目標: S 1→ G を導出:• S1 → S2 ではS1に公理 6 を適用して 結合子の差異を縮める(→が和演算に)• S 2 に公理 3 を適用して2重否定を消しS 3 を得る• 次の目標: S3→G を導出:• S 3 とGの距離を縮めるため、S 3 に公理1を適用してS 4 を作る
• 次の目標:S 4→Gを導出:• S 4 とGの間に差異無し(解決して問題終了)
)QP(R:S R)PQ(:G
)BA(BA
R)QP(:3S R)PQ(:4S
R)QP(:1S
R)QP(:2S
GPSの問題
• General Problem Solver という名前ほどには一般的な問題解決はできない
• 単純な問題しか解けない→改良の工夫• いくつかの距離を重要性の程度の順に並
べて重要なものから順に距離を減らす• 前提条件の重要度を最初から決めておく