局所探索によるCSPの解法 (local search algorithms for solving csps)

26
局局局局局局局 局局局 CSP (Local search algorithms for solving CSPs) 局局局局局局局 局局局局 (3) 局局局局局局局局局局局局局局局局局局 局局局局局局局局局局 局局局局局局局局局局

Upload: phelan-owen

Post on 01-Jan-2016

35 views

Category:

Documents


2 download

DESCRIPTION

認知システム論 制約充足 (3) 制約をみたす組合せを探すエージェント. 局所探索によるCSPの解法 (Local search algorithms for solving CSPs).  局所整合アルゴリズム  局所探索アルゴリズム. 制約充足問題 ( CSP ) とは(復習). x 1 x 2 … x n. 問題. 変数 (variable) の集合  X 各変数の 領域 (domain) D 変数間の 制約 (constraint) の集合  C. D 1 D 2 … D n. C xy ={(a,b), (c,d),…} - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

局所探索によるCSPの解法(Local search algorithms for solving

CSPs)

認知システム論 制約充足 (3)制約をみたす組合せを探すエージェント

 局所整合アルゴリズム

 局所探索アルゴリズム

Page 2: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

制約充足問題 (CSP) とは(復習)

変数 (variable) の集合  X  各変数の領域 (domain)   D変数間の制約 (constraint) の集合  C

問題

すべての制約を満たすような変数への値の割当て

x1 x2 … xn

D1 D2 … Dn

Cxy ={(a,b), (c,d),…}

変数 x-y 間で許される値の組

x1=a1 x2=a2 … xn=an

Page 3: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

局所整合と局所探索

 局所探索アルゴリズム

制約をすべて(大域的に)満たすのは困難

局所的に満たしながら大域に拡大するglobal

local 局所整合アルゴリズム

局所的にバックトラック不要になるように,不適切な値を事前に削除

local consistency

backtrack-free

局所的に制約違反を修復し,バックトラックをしない

local search

repair

Page 4: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

局所整合アルゴリズム(Local Consistency

Algorithms)

2. 制約伝播

1. アーク整合

arc

consistency constraint

propagation

Page 5: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

準備:制約ネットワークと制約グラフ

{(0,0), (0,1), (1,1)}xyC {(1,0), (1,1)}yzC

x z

y

制約のある変数ノードを辺で結ぶ

制約グラフ

0 1

0 1

0 1

x

y

z

許された値の組を辺で結ぶ

制約ネットワーク

constraint graph

constraint network

Page 6: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

1.アーク整合 (1/3)arc

consistency

a

a'

x y

DxDy

( , )y xyb D a b C ■ 値 x=a は y にサポートをもつsupport

x=c は y にサポートをもたない

c

Dx から値 c を削除

( アーク整合アルゴリズム )

x=a のサポート

Page 7: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

アーク整合 (2/3)

a

x y

Dx Dy

■ アーク (x, y) はアーク整合 しているarc

consistent = x のすべての値が y にサポートをもつ

(y, x) はアーク整合 していない

Page 8: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

アーク整合 (3/3)■ 制約ネットワーク はアーク整合 して

いる=すべてのアーク (x, y) がアーク整合 している

■ アーク整合アルゴリズム =アーク整合 していない制約ネットワークから  最小限の要素を削除してアーク整合させる.  空の領域が生じたら,CSPには解がない.

x

y

z

グラフ彩色(2色)

アーク整合 していても解がないことがある

制約グラフが閉路を含むとき

バックトラックなしで,局所的な(長さ2の)部分解を求めら

れる.

Page 9: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

アーク整合アルゴリズムの動作例

④ ⑤

X X

constraint

propagation 2.制約伝播

X1 X2

X3 X4

X6X5

Page 10: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

boolean REVISE(x, y) { changed ← false; for each a in Dx { if (x=a が y にサポートをもたない ) {

Dx から a を除去する. changed ← true; } } return changed;}

アーク (x, y) の整合アルゴリズム REVISE

計算量(制約チェック回数)

d は領域 Dx,Dy の要素数の最大値

2( )O d

値を1つでも除去したら true

ax y

Dx Dy

Page 11: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

アーク整合アルゴリズム AC-3

AC-3(CSP G) { Q ← G のすべての有向アークの集合 . while ( Q が空でない ) { Q から先頭のアークを取り出し, (x, y) とする. if ( REVISE(x,y) ) for each z in (y を除く x の隣接ノードのすべて ) { Q の末尾にアーク (z,x) を追加する.    } }}

Q は First-In First-Out のキュー(待ち行

列)

(x, y) の整合の結果, x の領域から要素が削除されたら  x へ向かうすべての有向アーク (z, x) (ただし,z≠y)をQに追加する.

x yz 計算量(制約チェック回数)

d は領域の要素数の最大値e は制約グラフのアーク数

2 3( ) ( )O d de O d e

高々 d 回Qに追加

Page 12: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

アーク整合の利用法前処理バックトラック法で,変数の値を選択したときに,フォワードチェックのかわりに使う

制約グラフが木のときに,バックトラックなしで解を求める

x y z

X XX

backtrack-free

この例では,z の2つの値を削除して,失敗を早期に検知できる

制約グラフが木であるCSPは多項式時間

で解くことができる

Page 13: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

局所探索アルゴリズム(Local Search Algorithms)

hill climbing

1. 山登り法2. 制約違反最小化3. 焼きなまし法

min-conflicts

simulated annealing

Page 14: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

反復改良の考え方

Q

Q

Q

Q

すべての変数に(ランダムに)初期値を設定

Q

Q

Q

Q

改良をくりかえす

(後戻りはしない)

Q

Q

Q

Q

iterative improvement

一般には完全性がない

Page 15: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

評価関数 z=f(x,y) の山を登る

最適解局所最適解

x

y

z

最適化問題

局所最適解からの

脱出

optimization problem

local optimum

optimum escape

Page 16: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

1. 山登り法

近傍の状態のうち評価値が最大の状態に進む.

決して下り坂を降りない.近傍

neighborhood

hill climbing

Page 17: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

山登り法の欠点

局所最適

高原

局所最適解で停止する. 対策:ランダムな初期状態から再出発する      ( random restart) など.

高原では進むべき方向を判断できない.

それにもかかわらず有効なことがある

plateau

Page 18: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

2. ヒューリスティック修復法

現在の状態許される値

の組

山登り法により制約違反を反復的に改善する heuristic repair

Page 19: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

制約違反最小化ヒューリスティック

制約違反=2制約違反=1制約違反=2

これを選ぶ

min-conflicts

変数は,ランダムに選ぶ.値は,制約違反の数が最小のものを選ぶ.

Page 20: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

3. 焼きなまし法

エネルギ

近傍の状態から次の状態をランダムに選ぶ.

エネルギが減少するなら,必ずそこに進む.

エネルギが増加するなら,温度に応じた確率でそこに進む.

最適解局所最適解

局所解をある確率で脱出できる

最小化すべき関数をエネルギと呼ぶ

Simulated Annealing (SA)

Page 21: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

熱的なノイズによるランダムな揺れの表現

E/Te

確率 大

エネルギ

確率=1

ΔE確率=

エネルギ増加分 ΔE

温度  T 大

温度

温度はじょじょに下げていく

xey 1

Page 22: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

冷却スケジュール:徐々に冷やしていく

cTT kk 1 kk cTT 1

T = schedule (k), k=1,2,…

T

k

)1log(/ kcTk

線形冷却 指数冷却

対数冷却

Page 23: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

焼きなまし法の最適性

温度 T を十分ゆっくり下げるならば,確率1で大域的最適解を見つける.

対数冷却 Tk=c/log(k+1) はこの条件を満たすが,収束時間は O(n!) より長い.

温度は適度にゆっくり下げていく

現実的には

Page 24: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

レポート課題と定期試験について

すでに授業および掲示で連絡してあるとおり

レポート課題: 課題 A,B,C から1つ選択して,          定期試験時に提出

定期試験: 7月28日 (火 ) の授業時間内で実施

7月21日 (火 ) (予備日)は休講とする.

Page 25: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

授業アンケート

1)授業を改善するために毎年実施

2)10分間程度で回答してください.

3)教員が指名する受講生の代表2名が回収し,この場で封をして,工学部①窓口に届けてもらいます.(窓口が閉まっていたら教員まで.)

Page 26: 局所探索によるCSPの解法 (Local search algorithms for solving CSPs)

付録:アーク整合アルゴリズム AC-1

AC-1(CSP G) { Q ← G のすべての有向アークの集合 . do { changed ← false; for each (x, y) in Q if ( REVISE(x, y) ) changed ← true; } while ( changed );}

全アークをそれぞれ整合

1か所だけ変化しても,全アークをスキャンしなおすので効率が悪い