人工知能 GPS と ハノイの塔,Logic Theorist Lecture 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 B A 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: ONTABLE(A) ONTABLE(C) ON(B,C) B A C 目標状態 G: ON(A,C) A C B 一般的な問題解決法 • 目標状態の状態記述のうちで、初期状態によって達成されて いない命題を探し • それを一つ達成する という操作を繰り返す。 命題Cを達成するには、 Cを追加リストとする動作関数(オペレータ:O)を求める。 そのオペレータ:Oの前提条件が初期条件によって満たされてい るかを調べ、 満たされていればOを適用 満たされていなければそれを満たすのに必要な命題を達成する こと新たな目標にする Local planning function LocalPlanning(S,G) .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 1 各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),EMPTY A: 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),EMPTY D: ONTABLE(x),CLEAR(x),EMPTY A: HOLD(x) 最初のタスク: 1.【LOOP1】 SはGを満たさないので次に行く 2. * SG 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が空ならLOOP3を抜けて3に戻る 3. ここでgoallistが空ならLOOP2を抜けて7に行く 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)である (pickup(A)を選んだ場合) 6. operator= PICKUP(A); (oplistから外しておく); これを適用するには ONTABLE(A)とCLEAR(A)が必要(CLEAR(C) も必要)、満たされないので5へ 5. oplistはemptyなのでLOOP3を抜けて3に行く 3. goallistはemptyなのでLOOP2を抜けて7に行く 7. HOLD(A) はG1から除かれ、代わりにG1に ONTABLE(A),CLEAR(A),EMPTYを入れて LocalPlanning(S,G1)を解く これを繰り返す 初期状態→(オペレータ)→目標状態 初期状態 S 目標状態 G A A B B C α C β α β ONTABLE(C,α)を消してONTABLE(C,β)を作る EMPTY^CLEAR(A)^ON(B,C) )^ON(A,B) の4条件はSとGで共通に存在する Local-planning(S,G)の動作 Local-planning(S,G)の手順: SからGへは直接行けない ON(A,C)を生成するoperatorとして PUTON(A,C)が必要 (step1) PUTON(A,C)の前提条件として HOLD(A)&CLEAR(C)が必要 (step5,6,7) これらをsubgoal=G1として local-planning(S,G1)を使う (step2,3,4) (step8) 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により満たされているので実行可能 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) 演習:ハノイの塔 • 大きさが順に大きくなる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 1. BC 1. C 1. C 2. _ 2. _ 2. B 2. AB 3._ 3. A 3. A 3.__ 高さ2の山を1. から2. へ移す 高さ1を1.から3.へ 1.__ 1. A 1. A 1.__ 2. AB 2. B 2. _ 2.__ 3. C 3. C 3. BC 3. ABC 高さ2の山を2. から3. へ移す 目標:高さ3の山を柱1から柱3へ移す 原始問題: 高さ1の山を 小目標:高さ2の山を柱1 柱1から柱3 へ移動 から柱2へ避難させる 高さ1の 高さ1の 山を柱3 高さ1 山を柱1 から柱2 の山を から柱2 へ移動 柱1か へ移動 ら柱3 へ移動 小目標:高さ2の山 を 柱2から柱3へ移す 高さ1の山を 高さ1の山 柱2から柱3 を柱2から へ移動 柱1へ移動 高さ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. 4. 5. 6. A B B A 積は可換 A ∨B → B∨A 和は可換 2重否定 A A A∧B (A∨B) A B (A B) A B (A B) S : R (P Q) G : (Q P) R S1: (P Q) R S2 : (P Q) R S3: (P Q) R S4 : (Q P) R G !!! 論理演算 • 最初の目標:公理を用いてS→Gを導出: S : R (P Q) G : (Q P) R • S→S1で大まかな形の差異を縮めた • 次の目標:S1→Gを導出: S1: (P Q) R • S1 →S2ではS1に公理6を適用して A B (A B) 結合子の差異を縮める(→が和演算に) • S2に公理3を適用して2重否定を消しS3を得る S2 : (P Q) R • 次の目標: S3→Gを導出: • S3とGの距離を縮めるため、S3に公理1を適用してS4を作る • 次の目標:S4→Gを導出: S3: (P Q) R • S4とGの間に差異無し(解決して問題終了) S4 : (Q P) R GPSの問題 • General Problem Solverという名前ほどに は一般的な問題解決はできない • 単純な問題しか解けない→改良の工夫 • いくつかの距離を重要性の程度の順に並べ て重要なものから順に距離を減らす • 前提条件の重要度を最初から決めておく
© Copyright 2024 ExpyDoc