プラニングとは? - Ueda Lab. Homepage

17.プランニング(Planning)
1G01P069
飛田伸一
2004/5/17
1
プラニングとは?
エージェントに与えられた目標を達成するた
めの一連の行為(action)を自動生成する
こと。
 ロボットが積み木を積み上げる手順
 カメラの準備の仕方
 巡回セールスマン問題
 並列CPUの効率的なタスクの割り当て
2004/5/17
2
17.1 行為表現(Representing
actions)


Prologでプランニングするためには、当然
プログラムを書かなければならない。
故に、状態、行為をどうやってプログラムと
して表すかが問題となる。
2004/5/17
3
1
初期状態
ゴール
c
a
a
b
c
2
2004/5/17
b
3
4
1
2
3
4
4
行為に必要なもの
前提条件:
行為を可能にするのに満たさなければなら
ない状態の条件
追加リスト:
行為が実行された後に追加されるもののリ
スト
削除リスト:
行為が実行されたら消えるもののリスト
2004/5/17
5
Prologで表現する

状態



前提条件


adds( Action, AddRels)
削除リスト


can( Action, Cond)
追加リスト


on( Block, Object)
clear( Object)
delete( Action, DelRels)
行為

2004/5/17
move( Block, From, To)
6
Prologで表現する

初期状態


[clear(2), clear(4), clear(b), clear( c),
on(b,3), on(c,a)]
目標

2004/5/17
[ on( a, b), on( b, c)]
7
17.2 手段目標解析でプランを得
よう


17.1で状態と行為を表現することが出来た。
今度はそれらを使って実際にプランニング
を行ってみる。
手段目標解析を用いてプランの導出を行う
2004/5/17
8
手段目標解析(means-ends
analysis)

初期状態とゴールの差を減少させるように,
ゴールをサブゴールに分解して解いていく
方法
2004/5/17
9
手段目標解析の例(1)
ルールはfig17.2を参照のこと
①目標 on(a,b)
これを満たす行為を見つける。
②Move(a,From,b)
この行為の前提条件を見つける。
③[clear(a),clear(b),on(a,From)]
clear(b)とon(a, 1)(Fromを1とする)は初期状態
ですでにあるので、今度はclear(a)を新たな目標
とする。
2004/5/17
10
手段目標解析の例(2)
④新たな目標 clear(a)
これを満たす行為を見つける。
⑤Move(Block,a,To)
この行為の前提条件を見つける。
⑥[clear(Block),clear(To),on(Block,a)]
Block=c,To=2のとき初期状態を満たす。よって
move(c,a,2)が出てくる。
つまりプランは[move(c,a,2),move(a,1,b)]となる
2004/5/17
11
補足
初期状態
[clear(2),clear(4),clear(b),clear( c),on(a,1),on(b,3),on(c,a)]
行為
Move(c,a,2)
前提条件: [clear( c),clear(2), on(c,a)]
追加リスト: [on(c,2),clear(a)]
削除リスト: [on(c,a),clear(2)]
[clear(a),clear(b),clear( c),clear(4),on(a,1),on(b,3),on(c,2)]
2004/5/17
12
補足(2)
[clear(a),clear(b),clear( c),clear(4),on(a,1),on(b,3),on(c,
2)]
行為
move(a,1,b)
前提条件: [clear(a),clear(b),on(a,1)]
追加リスト: [on(a,b),clear(1)]
削除リスト: [on(a,1),clear(b)]
[clear(a),clear( c),clear(1),clear(4),on(a,b),on(b,3),on(c,2)]
目標達成
2004/5/17
13
手段目標解析によるプランニン
グアルゴリズム
状態Stateの目標リストGoalsを解決して最終状態FinalStateまでもって
いく。
もし、状態StateでGoalsが全て満たされていた場合、FinalState=State
となる。そうでなければ以下のステップを行う。
1.まだ解決していない目標Goalを目標リストGoalsの中から選ぶ。
2.今の状態にGoalを加えるような行為Actionを見つける。
3.Actionの前提条件であるConditionを解決することによってActionを可
能にする。故に、Conditionが入っている状態MidState1を得る。
4.MidState1にActionを適用し、MidState2を得る。なお、MidState2では
Goalは真になっている。(後ろ向き推論)
5.MidState2でGoalsを解決することにより、FinalStateへもっていく
2004/5/17
14
Condition
PrePlan
State
2004/5/17
Goal
Action
MidState1
Goals
PostPlan
MidState2
FinalState
15
17.3 目標保護(Protecting
goals)

現在の手段目標プランニングの問題点を
考える。
2004/5/17
16
問題がある例(1)
先の問題を解いてみる
Plan( Start, [on(a,b),on(b,c)],Plan,_)
すると
Plan =
[move(b,3,c),move(b,c,3),move(c,a,2),move(a,1,b),m
ove(a,b,1),move(b,3,c),move(a,1,b)]
が出てくる。
本来なら3ステップで良いはずなのに何故か7ステップのプ
ランが出来た。
どういう推論でこのようなプランが出てきたのか?

2004/5/17
17
問題がある例(1)
move(b,3,c)
move(b,c,3)
move(c,a,2)
move(a,1,b)
move(a,b,1)
move(b,3,c)
move(a,1,b)
目標on(b,c)を達成する行為
次の行為の条件であるclear( c)を作り出す行為
行為move(a,1,b)の前提条件であるclear(a)を作る行為
目標on(a,b)を達成する行為
行為move(b,3,c)の前提条件であるclear(b)を作る行為
目標on(b,c)を達成する行為(2回目)
目標on(a,b)を達成する行為(2回目)
すでに達成した目標を壊すときがある。
2回目はたまたまon(b,c)が達成された時にon(a,b)を達成できる状況に
あった。
2004/5/17
18
問題がある例(2)
Plan(Start,[clear(2),clear( 3)].Plan,_)
を実行。
するとプランナーは無限に次のことを繰り返す。
move(b,3,2) 目標clear(3)を達成
move(b,2,3) 目標clear(2)を達成
move(b,3,2) 目標clear(3)を達成
move(b,2,3) 目標clear(2)を達成
目標を達成しようとするとすでに達成した目標を壊してしま
う。
どうするか?
2004/5/17
19
Protected Goals(目標保護)

すでに達成した目標を保護すればよい
保護用の引数をひとつ導入 ProtectedGoals
それに伴いPrologも変更

Plan(State, Goals, ProtectedGoals, Plan, FinalState)
この方法を使って例(2)を解くと
move(b,3,2) 目標clear(3)を達成
move(b,2,4) clear(3)を壊さないように目標clear(2)を達成
となる。本来はmove(b,3,4)だけで良いのでまだ最適でない。
2004/5/17
20
17.4 手続き解釈と幅優先(Procedural
aspects and breadth-first regime)


今まで使ってきた探索法は深さ優先探索
である。
幅優先探索も併用することにより、すこしプ
ランを短くすることができる。
2004/5/17
21
幅優先探索実装

先に作ったプログラムにconc(Plan,_,_)を入れる。
plan( Start,[on(a,b),on(b,c)],Plan,_).
結果
move(c,a,2)
move(b,3,a)
move(b,a,c)
move(a,1,b)
この場合は最適解ではない。move(b,3,a)がいらない。
何故最適解にならないのか?
2004/5/17
22
2つの疑問


プランナーはどのような推論をしたのか?
何故プランナーは最適プランを見つけられ
ないのか?
2004/5/17
23
プランナーはどのような推論をし
たのか?

追ってみよう
move(a,1,b) 目標on(a,b)を達成(前提条件はclear(a))
move(b,a,c) 前提条件clear(a)を導く。(前提条件は
on(b,a))
move(b,3,a) 前提条件on(b,a)を導く。(前提条件は
clear(a))
move(c,a,2) 前提条件clear(a)を導く。
プランナーはこの様な推論をした。
2004/5/17
24
何故プランナーは最適プランを
見つけられないのか?



先のような推論では最適プランは見つけら
れない。何故こんなことになっているの
か?
さっきのプランニングでは目標がずっと
on(a,b)だった。
目標on(b,c)が達成できたのは偶然である。
2004/5/17
25

手段目標プランニングでは不完全。


目標を追っている間はほかの目標のことは気
にしないから
ほかの目標のことも考えよう

2004/5/17
目標後退
26
17.5 目標後退(Goal
regression)
状態 S0:
Goals0
状態 S: Goals
A
Goals0は次の特性を備えていなければならない
1.状態S0で行為Aは可能でなければならない。
故にAの前提条件をGoals0が含んでなければならない
2.Goalsの目標Gについて次のどちらかが成り立つ
・行為AがGを加える
・GがGoals0の中にあり、行為AがGを消さない
与えられたGoalsとAを使いGoal0を決定することをAを通した
Goalsの後退という。
2004/5/17
27
目標後退をプランニングに組み
込む
初期状態StartStateから目標リストGoalsを達成す
るために
・もし、StartStateでGoalsが満たされていたら、空
のプランで十分である。
・さもなければ、Goalsの中から目標Gを、さらにGを
加えるような行為Aを選び、そして、Aを使って
Goalsを退行することによってNewGoalsを得る。
さらに、StartStateからNewGoalsを達成するよう
なプランを見つける。
2004/5/17
28
impossible

無理なものはimpossibleで定義する.
impossible( on(X,X), _).
自分の上に自分は来ない
impossible( on(X,Y), Goals) :- 同時に二箇所にいない
member( clear(Y), Goals)
;
member( on(X,Y1), Goals), Y1 \== Y
;
member( on(X,Y1), Goals), X1 \== X.
impossible( clear(X), Goals) :member( on(_,X), Goals).
2004/5/17
同じ場所に違うブロックは乗らない
29
目標後退の効果


プログラムを実行してみる
目標後退の結果4ステップかかっていたの
が3ステップになった。
2004/5/17
30
17.6 手段目標プランニングと最
良優先探索を組合せる


これまで探索には、深さ優先探索、幅優先
探索、反復深化法などを使ってきた。
せっかく問題に特有な知識があるのだから、
それを元に発見的な最良優先探索を使う
と、素早いプランニングをしやすくなる。
2004/5/17
31
最良優先探索


評価関数とコストという概念を導入して、そ
の時点でもっともコストが低くなりそうな方
向に枝を伸ばしていく探索法
“良さそうな”方向へ探索していける
2004/5/17
32
プランナーへ最良優先探索を導
入する
定義するもの
(1)状態空間の節点間の後継関係
s(Node1,Node2,Cost)
(2)関係による探索の目標節点
goal(Node)
(3)関係による発見的関数
h(Node,HeuristicEstimate)
(4)探索の開始節点
2004/5/17
33
状態空間とか
Action
Cost
Node1
Node2
状態がノードとしてあり、それに対して操作。
2004/5/17
34
プランナーへ最良優先探索を導
入する
状態空間の目標集合Goals1とGoals2および
行為Aの間に次の関係が成り立つ
 AはGoals1のいくつかの目標を加える


AはGoals1の目標を破壊することなく、し
かも
Goals2はAを通したGoals1の退行の結果
である。
2004/5/17
35
プランナーへ最良優先探索を導
入する
このままだと目標リストしか出てこないので
Goals -> Action
としてプランをだすようにする
2004/5/17
36
17.7 Uninstantiated actionsと
半順序プランニング

能率を良くするためほかのことも考えてみ
よう


2004/5/17
Uninstantiated actions and goals
半順序プランニング
37
Uninstantiated actions and
goals

変数を確定しないまま進めていく方法
2004/5/17
38
半順序プランニング


プランの中で順番を一概に決められないも
のがあるプランニング(cf 全順序プランニ
ング)
探索空間がプランをノードとするプラン探
索空間
2004/5/17
39
例
a
d
e
b
e
f
d
c
f
7
8
b
a
c
1
2
3
2004/5/17
4
5
6
1
2
3
4
5
6
7
8
40
半順序プランニング
上の例で以下の2つのプランは互いに独立である。
Plan1 = [move(b,a,c),move(a,1,b)]
Plan2 = [move(e,d,f),move(d,8,e)]
そこでプランを
[move(b,a,c),move(a,1,b),move(e,d,f),move(d,8,e)]
としようが
[move(b,a,c),move(e,d,f),move(a,1,b),move(d,8,e)]
としようがどちらでも同じである。
2004/5/17
41
START
move(b,a,c
)
move(e,d,f
)
move(a,1,b
)
move(d,8,e
)
FINISH
2004/5/17
42
半順序プランニング

プランステップ


プラン中の個々の行為に付けられるインデックス集合。
行為の名前みたいなもの
因果リンク

プラン中で、プランステップSが、プランステップWの前
提条件のPを追加する時、
S
P
W
と記述する。これを因果リンクという。
2004/5/17
43
半順序プランニング

順序制約

プランステップSは、プランステップWよりも先に実行さ
れる必要があるという制約
S

脅威ステップ


2004/5/17
W
P
W に関して、ステップSとW以
因果リンク S
外で、Pを削除リストにもつステップV
あるプランにおいて,VがSとWの間にあるとWが適用
できない。それを避けるために、制約順序
V S
or
が必要
W
V
44
半順序プランニング

完全なプラン


プラン中のすべてのステップの条件リストが、
他のステップにより達成されるようなプラン
無矛盾なプラン

2004/5/17
制約順序に矛盾のないプラン
45
半順序プランニングのアルゴリズム

初期化

特別なステップSTARTとFINISHを作る



順序制約リストをORDERとする


2004/5/17
STARTは、追加リストに初期状態を持つ
FINISHは、条件リストにゴールを持つ
空集合で初期化する
Pをプランとし、 START 、FINISH 、および
ORDERで初期化する
46
半順序プランニングのアルゴリズム
Pが完全・無矛盾なら完了、or Backtrack
P中に、S p W なる因果リンクがあり、vがこの
因果リンクに対する脅威ステップの場合 、V
S
か W V を付加し1へ
さもなければ、P中に条件pが満たされないよう
なwがあるなら
1.
2.
3.
1.
2.
2004/5/17
Pかオペレータ集合(前提条件、追加リスト、削除リ
ストをあわせたもの)から、pを追加リストに持つよう
なステップsを探しPにsと S p W と S
W
を追加する
sがオペレータ集合から得られたなら、Pに
S を追加し1へ
FINISH
START
S
と
47
半順序プランニング
半順序プランニングを使うと、fig17.2の例
も簡単に解ける
 Uninstantiated actions and goalsと組み
合わせる事によって複雑さの緩和ができる
(制約)

2004/5/17
48
まとめ


プランニングをPrologでとく場合、さまざま
なテクニックがある。それらをうまく使い、
良いプランナーをつくる事が大切である。
今日紹介したプランニングは古典的プラン
ニングである。近年では即応プランニング
(reactive planning)というものも出てきて
おり、プランニングは着実に進歩している。
2004/5/17
49
参考文献(書籍)
・Ivan Bratko: "PROLOG Programming for Artificial
Intelligence“
・Prologプログラミング入門 安部憲広 共立出版 1985
-上の訳本
・AIプログラミング 安部憲広・田中和明 近代科学社
1996
-訳本の続き
・人工知能の基礎 馬場口登・山田誠二 昭晃堂 1999
2004/5/17
50
参考文献(Internet)
人工知能論
http://bruch.sfc.keio.ac.jp/course/AI01/ai01-6/tsld001.htm

問題解決と学習 ~問題解決プログラムの作成と評価~ 第2章
http://isl.educ.fukushima-u.ac.jp/~hitomi/soturon/soturon.html

プランニング
http://www.watanabe.nuie.nagoyau.ac.jp/member/sagawa/AI/chap
3.ppt

プランニング技術
http://www.jaist.ac.jp/~itota/Lecture/K415-4.ppt
半順序プランニングを調べるのに参照。

2004/5/17
51
大切なこと




Prologに慣れておく
Prologの用語をきちんと理解しておく
時間をきちんと取る
理解できなかったらどんどん聞く
2004/5/17
52
END
2004/5/17
53
おまけ
2004/5/17
54
Uninstantiated actions and
goals
move(b,a,c)
move(c,a,1)
move(c,a,2)
can(move(Block,From,To),[clear(Block),clear(To),on(Blo
ck,From)]).
move(Something,a,Somewhere)
前提条件
[clear(Something),clear(Somewhere),on(Something,a)]
Something = c
Somewhere = 2
move(c,a,c) これは駄目
2004/5/17
55
Uninstantiated actions and
goals
Can(move(Block,From,To),[clear(Block),clear(To),on(Blo
ck,From)]) :Block(Block),
Object(To),
・・・
move(Something,a,Somewhere)
can(move(Something,a,somewhere),Condition)
move(b,a,1)
move(b,a,2)
move(b,a,3)
move(b,a,4)
2004/5/17
56
Uninstantiated actions and
goals
can(move(Block,From,To),[clear(Block),clear(To),on(Block,From),dif
ferent(Block,To),different(From,To),different(Block,From)]).
satisfied(State,[Goal | Goals]) :holds(Goal),satisfied(Goals).
holds(different(X,Y))
これは以下のように定義されている
・もしXとYがマッチしなければdifferent(X,Y)が保たれる
・もしXとYが文字通り一致するならば、この状態は偽となり、この先いく
らプランを進めても常にプランは偽となる。その後、状態は関係
impossibleとして目標を同じような方法で扱うことができる。
・さもなければ、(XとYはマッチするが文字的には違う)その場での判断
は出来ない。
あとでXとYとの関係を見る事にする。
2004/5/17
57
M1 = move(a,X,b)
M2 = move(b,Y,c)
M3 = move(U,a,V)
Before(M3,M1)
[M3,M1,M2]
[M3,M2,M1]
[M2,M3,M1]
2004/5/17
58