The 15th J-C Workshop 2016&日本設備管理学会 2015 年度知能技術応用研究会(2016.2.18 石川四高記念文化交流会館) 組合せ最適問題の厳密解探索のためのGAによる解法の検討 (数独パズルの解探索) 椋田 實(日本工業大学 特別研究員)、江藤 香(日本工業大学) Solution method of the elucidation by GA for exact solution searches of the combinatorial optimization Minoru Mukuda*, Kaoru Eto* ( *Nippon Institute of Technology) キーワード:遺伝的アルゴリズム、バックトラック法、組合せ最適化、厳密解探索、数独パズル (Genetic Algorithm, backtracking, depth-first search, combinatorial optimization, exact solution, search tree, Sudoku puzzle) 1. はじめに 多数であり、多数の局所解が存在する。このパズルと同じ ルールでも最初のマスの数字設定(図1の1,3,2,3) 我々は組合せ最適問題の厳密解の解法として遺伝的アル により複数の解が存在する。なお、解の探索には組み合せ ゴリズム(GA: Genetic Algorithm)を考察した。GAは多目 を探索木に形成できる。 的で複雑な組合せ問題の近似解を探索する方法として効果 厳密解を組合せにより求めるには、全ての探索木を根から 的である[1]。しかし、厳密解を解くには苦手な事が知られ 辿ることで発見できる。これらの探索は再帰的に行うと手 ている。本論文では、厳密解を解くためのGAの手法につ 続きが容易となる。 いて「どの様な方法が考えられるか」 「どの様な点を考慮す 探索速度を早くするには、枝を制約条件で「刈り取る」こ るのか」、実例を用いて検討した。 とで実現する。この様な方法をバックトラック法と呼ぶ。 問題には「数独パズル[2](ナンバープレースも同じルー また、全ての組合せを単純に生成し、制約条件で判定する ル)」を採用した。探索方法の比較対象としてバックトラッ ことでも探索できるが、組合せが膨大になるため、効率的 ク法(backtracking)を使用した。バックトラック法は探索 ではない。次に数字置きパズルの例を用いて説明する。 木を“刈り取る”ので、全組合せ探索よりも早く厳密解を 得ることができる。GAでは厳密解を得られない場合があ <数字置きパズル> るが、バックトラック法は処理時間を考えなければ必ず発 1 見できる。 GAは、染色体の初期値や突然変異、交叉の方法が探索時 3 間に大きく影響する。本稿では、①全組合せから基本的な 制約条件を適用して解空間を縮小する。②GAにより解空 間をさらに絞り込む、③力まかせ探索により厳密解を探索 する、と言う3段階の手順で解の探索を行った。 2. 2 組合せ最適化と数独パズル 3 ①4×4の空マスに 1,2,3,4の数 字を次のルールに従 って入れる。 ②横・縦列に1〜4、 2×2ブロックに1 〜4の数字を置く。 なお、縦・横・ブロ ックに置く数字はユ ニークとする。 ※この例では解が2 個ある。 図1 数字置きパズル 厳密解とは、近似解ではなく全ての制約条件を満足した最 Fig.1 Set Number Puzzle 良の解である。数独パズルは近似解がなく、解が1つ(あ るいは2つ)程度に設定されている。厳密解をGAで探索 数独パズルは、図1の4×4マスを9×9マスにして、 する例として、数独パズル(同様のルールを持つパズルを 1〜9の数字を置くパズルであり、仕組みは同じである。 数字置きパズルと呼ぶ)は制約条件を満足すれば最適解で 3.遺伝的アルゴリズムの適用 あること、近似解がないことから実験対象に採用した。 なお、パズルには解空間は957個程度の解候補が存在す 数独パズルの解を探索するのに遺伝的アルゴリズム(G る。これらの中から1つの解を探索するので、非実行解が A)を適用する。図 1 の数字置きパズルを使用して,GA の 1 The 15th J-C Workshop 2016&日本設備管理学会 2015 年度知能技術応用研究会(2016.2.18 石川四高記念文化交流会館) この探索木は表1の遺伝子座番号1から2,3 ,… ,16と 遺伝子表現を説明する。 空マスに置ける数字はルール(制約条件)を複数回に渡り 16段階(深度16)で構成される。全組合せの生成は、 適用すると表1の様に各マスの数字候補が得られる。最初 図2の木を全て辿ることで実現できる。これに制約条件を から数字が設定されているマスは確定であるが、制約条件 加えて枝の刈り込みを行えば効率よく解を探索できる。 を適用すると候補がひとつになるマスもある。この候補が 遺伝子から実際のパズルにデコードするには、表1の候 ひとつなら数字は確定である。この段階で解が得られる場 補表を用いて変換する。 合もあるが、これは初心者向けの問題である。図1の問題 に制約条件を適用した結果を表1に示す。 遺伝子には候補数字に付けた“順序番号”を使用する。た にエンコードすると表2の様になる。 表1 マスに置く数字の候補表 表2 遺伝子 Table 1 Set Candidate Number table Table 2 Gene 1 2 3 1 2 1 3 2 3 2 3 2 1 2 2 1 2 3 4 3 遺伝子 1 1 3 1 1 1 2 2 2 1 2 2 1 2 1 1 4 4 4 4 3 4 2 4 4 4 4 4 4 2 4 1 1 3 4 4 3 1 2 4 2 4 1 3 ・・・・ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 4 2 2 1 1 3 2 2 1 1 1 2 2 1 1 3 解候補 1 1 3 1 1 1 2 2 2 1 2 2 1 2 1 1 ・・・・ 候補数 遺伝子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 表1のマスに置く数字の候補表 とえば、2個の候補があれば1と2である。図1を遺伝子 No. 図3 デコード(遺伝子→候補数字) Fig.3 Decord (Gene -> Candidate Number) 4×4パズル 4 1 3 2 (注)基本的な制約条件の適用後 この例における遺伝子座は16座あり、10,368通り の組合せがある。このパズルの探索木を図2に示す。 2 3 1 4 4 4 2 1 1 4 4 3 1次元を2次元 に展開する。 No.1→1 行 1 列 No.2→1 行2列 No.3→1 行3列 図4 候補数字を埋めた4×4マス 深度は16段階 1 1 2 1 1 ・・・ 1 ・・・・・・ 2 ・・・・・・ Fig.4 Put Candidate Number on 4x4 Puzzle 遺伝子は表1の候補表から順序番号を使用して、実際の 数字を得る。これが図3の右側にある「解候補」である。 この候補数字は図4の様に4×4のマスに配置される。 1 3 1 ・・・・・・ ≪2-1 GAによる進化手順≫ 1 1 ・・・・・・ ①第1段階:空マスに制約条件を適用して候補数字を置く 2 1 ・・・・・・ 3 1 ・・・・・・ 本稿の探索手順は3段階(図5参照)で構成している。 ことで解空間を縮小する。制約条件は横・縦・ブロックの 2 数字が1〜4のユニークであること。なお、9×9マスで は1〜9である。この段階で解が得られれば終了である。 ②第2段階:GAにより解空間をさらに絞り込む。表1の 候補表と染色体(遺伝子)を用いて、交叉、突然変異、選 図2 4×4数字置きパズルの組合せの探索木 Fig.2 択を行い、解空間を縮小する。GAは初期値を変えて評価 Search Tree of 4x4 Puzzle 値が一定以上になるまで反復処理する。この処理で得られ 2 The 15th J-C Workshop 2016&日本設備管理学会 2015 年度知能技術応用研究会(2016.2.18 石川四高記念文化交流会館) た組合せを10個保存する。もちろん、この段階で解が得 横列に同じ数字が存在することが多数ある。この時、縦列 られれば終了である。 と横列の数字を異なる数字の候補(遺伝子)に変更する。 ③第3段階:力まかせ探索により厳密解を探索する。GA ただし、その数字が突然変異で選んだ数字と同じで、候補 で保存した解候補の10個を2×2マスブロック(9×9 数が1の場合はその突然変異を中止する。 マスでは3×3マスブロック)単位に組み合せる。組合せ 親個体 総数は10 9通りとなる。この段階で解が得られない場合 は、②の処理で再探索回数を増やす、進化世代数を多くす るなどの変更を行い、第1段階から解探索を行う。 はじめ 第1段階 制約条件を適用して解空間 を減少させる 第2段階 GAにより解空間の絞り込 む Yes 再探索か? No 第3段階 10個の途中解を使い全組 合せで探索する おわり 4 2 4 1 1 3 4 4 遺伝子座の10(3 行2列)が選ばれた とする。この数字は 【第1段階】 制約条件を適用して空 マスに解候補となる数 字を記録する。 【第2段階】 GAにより解を探索す る。評価基準を満たした 途中解を10個探し保 存する。10個未満なら ば再探索する。 【第3段階】 ブロック単位に全部の 組合せを行い、解を探索 する。ブロックとは9× 9の場合、3×3マスを ブロックと呼ぶ。 4であるが突然変異 で1となると、横列 1 4 2 4 と縦列に1があり、 制約条件を満たさな 1 2 3 1 い。 突然変異で生成された子個体 そこで、3行2列の 4 4 2 1 数字を4から1にし た場合、3行1列の 1 4 3 4 数字は3に変えた。 また、4行2列の数 図5 解探索の3段階の流れ Fig. 5 Solution searches of 3 steps flow 3 1 2 4 字は4に変えた。も 2 4 1 3 数字に変えることは ちろん、候補以外の できない。 図7 突然変異の操作 ≪2-2 交叉・突然変異≫ Fig.7 交叉は一般的な1点交叉と数字置きパズルを考慮した特 別な交叉を適用する。1点交叉は81個の遺伝子を一様ラ Operation of Mutation ≪2-3 選択≫ ンダム(以後単にランダムと呼ぶ)な1点で交叉させる。 選択はエリート選択で、親個体は30とする。なお、選 つまり、ランダムに選んだ2個の親個体から2個の子個体 択する時に、良い個体を複数個、残すために上位の5個体 を生成する。もう一つの交叉はランダムに選んだ個体で、 は常に保存する。評価値は全て81個のマスを対象に、縦・ ランダムで指した遺伝子座に候補が2個の場合、異なる候 横・3×3ブロックに「ない数字」があればその数を計数 補を組み込んだ1個の個体を生成する。この交叉を局所探 して、合計値を評価値とする。つまり、1〜9の数字が必 索的な交叉と呼ぶ。なお、交叉の対象は5%である。 ず「1個ある」のが解である。評価値が小さいほど解に近 いことになり、解の評価値はゼロとなる。 親個体 1 1 3 2 1 ≪2-4 ブロック単位の全組合せ≫ 1 4×4パズルで、第3段階の総組合せは、図7の2×2 ブロックの4個×10 枚を組合せる。 遺伝子座に候補が2個の場合、異なる候 補の個体を生成する 子個体 1 ・・・・ 2 3 ・・・・ 2 1 1 4 1 3 2 図6局所探索的な交叉 Fig.6 Crossover with Local Search 突然変異はランダムに選んだ個体で、ランダムで指した 遺伝子座の候補をランダムに変更する。この場合、縦列と 3 3 21 33 12 2 43 41 24 4 1 3 1 43 132 42 41 3 2 3 11 24 4 3 3 4 2 1 1 2 4 3 2×2ブロック が組合せの単位 である。数独パズ ルの場合、3×3 ブロックである。 図8 保存したパズルの解候補 Fig.8 Candidate solution of puzzle The 15th J-C Workshop 2016&日本設備管理学会 2015 年度知能技術応用研究会(2016.2.18 石川四高記念文化交流会館) データ101の試行では解の未発見が多くあった。試行 3.バックトラック法で解探索 回数の比で言えば、約80%が未発見であった。難易度が バックトラック法は全ての厳密解を探索する方法として 上がると未発見回数が増加する。 効率的な方法である。この方法は深さ優先探索+刈り込み と同じ方法である。探索には探索木を用いるが、深度を進 表4 数独パズルの解探索の結果(2) Table 4 Result of Solution searches in Sudoku puzzle (2) めるごとに制約条件を調べ満足しなければ、これ以下の深 度への探索を中止(枝を刈り取る)する。この刈り込みに バックトラック法 より無駄な探索を省いている。 データ 番号 実際の探索は図2の様な探索木を適用して、全ての枝を 再帰構造で辿ることで実現する。なお、この探索では深度 がひとつ進むごとに、制約条件による判断とそのノードの 101 9×9マス(例では4×4マス)の状態を保存する。保存 104 発見(秒) 人間 最大深度 32 1,620 1 20 1,800 105 56 24 1,800 本稿のプログラムでは染色体(遺伝子)に使用した表2 300 1 1 - の1次元データを利用して探索木を作成している。実際の 339 1 4 - 387 1 7 - 398 1 7 - 1 15 - した9×9マスデータは枝を辿って戻ってきた時に、9× 9マスの状態を再生するために使用する。 数字データではなく、数字データの格納位置を示す順序番 号(1〜n連番)を使用する(表1参照)。この方法で組合 せを生成することで、探索処理が効率よく実現できる。 901 4.数値実験 ※1秒とは1秒以下を含む。 本稿の厳密解の探索は3段階で実施する。使用したパソ コンは、MPU:Intel® Core™ i7-4770 CPU @ 3.40GHz、メ 表4はバックトラック法と人で解を探索した結果であ モリ:16.0GB、OS:64 ビット Windows 8.1 Pro である。 る。バックトラック法では探索木の深度が深いほど組合せ GAによる解探索は,親個体は30個体、個体群の最大 数が多くなり、解発見に時間を要する。しかし、組合せの 格納数は800個体、染色体の遺伝子数は81座、進化世 最初に解がある場合は早く発見できる。 代数は40,000から90,000世代、第3段階用に探索 人間の場合、操作速度が遅いが、解を探索するアルゴリ 結果を10個保存する。保存の評価基準は18から64で ズムの中で、①局所解を早期に飛ばす、②候補数字をトラ ある。また、染色体の初期値は時刻から乱数の種を生成さ イする、③候補数字が少ない所を優先する、④3ヵ所や4 せる。再探索は事前の乱数列を継続する。 ヵ所が相互に関連して同じ数字が競合する時の仮置きな 数字置きパズルの問題の多くは“激辛数独7”[1]から引 ど、探索操作をジャンプすることができる。そのため、デ 用した。実験結果の1例を表3、表4に示す。 表3 8,931 発見(秒) ータ101、104、105の処理時間が約1,800秒と 同じ程度になる。 数独パズルの解探索の結果(1) 本稿のGAによる解探索は染色体の初期値で探索時間が Table 3 Result of Solution searches in Sudoku puzzle (1) 大きく変化する。次にデータ104の例を示す。表5の様 本稿の探索結果(カッコの数字は秒) に、発見までの探索時間のバラツキが非常に大きい。これ データ 番号 第1段階 総組数(組) 第2段階 10個生成時間(秒) 第3段階(秒) 101 1.80×10 41 発見(3,416) - 104 8.56×10 35 発見(580) - 105 7.7×10 33 発見(3,651) - Table 5 Result of Solution searches in data104 300 発見(1) - - 339 1.87×10 27 発見(36) - 387 7.26×10 24 229 発見(294) 398 4.16×10 23 発見(776) - GA4回目 GA3回目 GA2回目 GA1回目 平均 901 3.72×10 30 1209 発見(1,427) は、染色体の初期値が大きく影響していると思われる。し かし、GAの再探索回数を多くしても変わらないことがあ る(例えば300回)。 表5 データ番号104の解探索結果 580 1,274 68 2,233 1,039 秒 秒 秒 秒 秒 ※最短で68秒、 最長で2,233 秒と探索時間が大 きく異なり、平均 は1,039秒であ った。 図9のグラフはデータ104の進化過程である。GA ※第1段階の総組数とは、制約条件を適用した後の組数。 (1)は解を発見したケースで、40,000世代付近で解 を発見している。GA(2),(3),(4)は局所解に落ち 4 The 15th J-C Workshop 2016&日本設備管理学会 2015 年度知能技術応用研究会(2016.2.18 石川四高記念文化交流会館) たケースである。進化世代から見ると、一定世代の間、進 厳密解を探索した。なお、多くの場合、数独パズルはGA 化が止まると、局所解に落ちていると判断できる。本稿の 段階で発見されている。この段階での発見の可否は難易度 突然変異では局所解に落ちると抜け出すことが難しかった に依存しない(親個体の初期設定に依存)。なお、GAでの ので、初期値を変えて再探索を行った。 解発見は組合せ数が多い(深度が深い)と“再探索の回数 が多くなる”傾向がある。 厳密解の探索の場合、次のような点を考慮すると良い。 350 評価値 300 250 GA(1) ①解空間が広く、解が少ないと考えられるので、局所解に GA(2) 落ちる確率が高いので、落ちた場合の対策が重要である。 GA(3) 200 本稿では初期染色体の値を変えて、再探索を行っている。 GA(4) ②局所解に落ちたことを早期に発見する仕組みを組み込 150 み、処理時間を短縮する。本稿では評価値が連続する回数 100 を決めて打ち切る。 50 0 ③親個体の初期設定(初期の染色体)は解空間を広く網羅 0 20000 40000 60000 する。単純にランダムな数値を使う方が良いが制約条件を 80000 適用する等の操作も考えられる。本稿では遺伝子を一様な 世代 乱数で生成している。 図9 進化過程の例(データ104) Fig.9 Sample of Evolution process (data104) ④遺伝的操作は問題に対応した突然変異や交叉が効果的で ある。本稿では、一般的な1点交叉に加えて問題対応の突 然変異と交叉を組み合せている。選択は一般的なエリート 第3段階の力まかせ探索で解を発見できないケース(デ ータ番号101の例)がある。理由はGAで解の一部とな る3×3ブロックが得られなかったことによる。なお、図 10は第3段階で解が得られた時に保存された途中結果の ひとつである。網掛けの12マスが解と異なるが、5つの 3×3ブロックは解と同じである。 選択を用いている。 ⑤進化処理は単純な構造とし、世代進化や再探索回数を増 やすのに影響が少ない方が良い。本稿では標準的なGAの 処理手順を使用している。 ⑥GAで解を得られない場合、絞り込んだ解候補から部分 を切り出して、組み合わせることで解を求める(第3段階)。 5 8 2 6 4 1 9 7 3 7 1 3 2 5 9 6 8 4 4 6 9 7 8 3 5 1 2 3 2 5 5 7 4 1 6 9 8 7 4 9 1 6 3 2 8 1 9 6 3 2 8 7 4 5 GAを用いて厳密解を求めるには、問題に対応した交叉や 2 3 8 1 9 7 4 5 6 個体の初期値を変えた再探索が重要である。探索時間の短 9 5 1 4 6 2 8 3 7 6 4 7 8 3 5 2 9 1 本稿では候補とする9×9パズルの10個を3×3ブロッ ク単位に切り出して組み合せている。 ⑦GA処理の前に制約条件を適用して、組み合せ回数を減 らすことが必要である。本稿では、第1段階で、縦と横方 向の制約条件により、組み合せ回数を減らしている。 6.おわりに 本稿では容易に解か否かを判断でき、解が相互に 独立している問題として、数独パズルを採用した。 突然変異、選択が必要である。局所解に落ち易いため、親 縮は初期の親個体に大きく依存する。現在、初期値生成の 良い方法は見つかっていない。また、選択では、2目的に して、優先順序を付けることも考えられる[3]。3×3ブ ロックの評価を順位1位、縦・横の評価を順位2位とする。 図10 評価18で保存された数独パズル Fig.10 Saved Sudoku puzzle by evaluation 18 現状で、探索速度は人間とバックトラック法の方が早い。 しかし、親個体の初期設定によってはGAが早くなる。親 7.まとめ 個体の初期設定や遺伝的操作の仕組みを問題に対応させ ることで厳密解を発見できると考える。 本稿では3段階方式の解探索を検証した。第1段階では、 参考文献 制約条件(縦・横・ブロックのユニーク性)による解空間 の縮小。第2段階ではGAによる解空間の絞り込み。突然 [1] Gen, M. and Cheng, R.: Genetic Algorithms and Engineering Optimization, John Wiley and Sons, New York, (2000). [2] 荒川正幹他:激辛数独7,KKニコリ,2009 [3] 椋田實,江藤香:遺伝的アルゴリズムの経路選択順方式による順 序付き最適化,第3回知能技術応用研究会,SOPEJ,2013 変異に縦・横ユニーク性の補正を組込み、一定の評価が得 られるまで初期値を変えて反復処理し10個の途中解を得 る。第3段階では3×3ブロック単位の全組合せにより、 5 The 15th J-C Workshop 2016&日本設備管理学会 2015 年度知能技術応用研究会(2016.2.18 石川四高記念文化交流会館) 解答 付録(実験データ) 8 4 7 1 5 2 3 6 9 3 1 9 8 6 4 2 7 5 5 6 2 7 3 9 4 8 1 4 5 8 3 2 7 9 1 6 6 9 3 4 8 1 5 2 7 2 7 1 5 9 6 8 3 4 5 7 3 6 2 4 5 1 9 8 6 9 8 4 6 1 3 7 5 2 1 2 5 9 7 8 6 4 3 Data file: data0101.txt // Lebel 難しい問題、作:不明 5 7 9 8 1 9 4 1 7 8 1 1 4 7 3 5 1 Data file: data0105.txt // 105(激辛数独7)株式会社ニコリ 発行:2010 年 // Level10 作:おく山みつゆき 解答 5 8 2 6 4 1 9 7 3 7 1 3 2 5 9 6 8 4 4 6 9 7 8 3 5 1 2 8 2 5 3 7 4 1 6 9 9 7 4 5 1 6 3 2 8 1 3 6 9 2 8 7 4 5 2 9 8 1 3 7 4 5 6 6 5 1 4 9 2 8 3 7 3 4 7 8 6 5 2 9 1 5 6 3 3 8 4 7 4 2 2 6 8 9 3 6 1 7 8 2 9 5 3 5 7 解答 Data file: data0104.txt // 104(激辛数独7) 株式会社ニコリ // Leval10 作:高由良りむ 発行:2010 年 8 9 1 4 2 3 7 4 7 3 7 5 5 6 8 1 1 4 6 1 5 3 6 9 8 2 4 7 1 3 6 5 6 5 1 2 3 8 4 7 9 7 4 3 5 6 9 8 1 2 5 3 6 7 9 4 1 2 8 1 9 4 8 2 5 6 3 7 8 2 7 6 1 3 5 9 4 2 7 8 1 5 6 9 4 3 4 1 9 3 8 7 2 5 6 3 6 5 9 4 2 7 8 1
© Copyright 2024 Paperzz