• 検索結果がありません。

未踏 TG 2020 アニーリングを用いた効率的な 制約充足問題ソルバの実装 小津泰生 ( 応用 実用化枠 ) 担当 PM: 棚橋耕太郎 2021 年 2 月 11 日 1/19

N/A
N/A
Protected

Academic year: 2021

シェア "未踏 TG 2020 アニーリングを用いた効率的な 制約充足問題ソルバの実装 小津泰生 ( 応用 実用化枠 ) 担当 PM: 棚橋耕太郎 2021 年 2 月 11 日 1/19"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

アニーリングを用いた効率的な

制約充足問題ソルバの実装

小津 泰生 (応用・実用化枠)

担当 PM: 棚橋耕太郎

(2)

発表の流れ

1

制約充足問題

の解き方について

本プロジェクトの成果物「SpoonQ」の位置づけについて (メインプロジェクト) 2

プログラマーの方向け情報

Rust 言語から最適化問題及びアニーリングを利用するライブラリについて (サブ プロジェクト) 3

皆様へのメッセージ

今後、アニーリングがどのように発展してゆくか、について 公式サイト (スライド公開中) https://spoonq.github.io/

(3)

制約充足問題とは

与えられた条件すべてを満たす実行可能解を求める問題。

塗り分け問題 8-Queen 問題 ペンシルパズル

(4)

SAT ソルバについて

制約充足問題を解く方法 ⋯SAT ソルバを用いる

制約充足問題

CNF

形式

の問題

実行可能解

制約記述言語 (Sugar など)

SAT

ソルバ

による求解

解の対応づけ ※ 後で説明

(5)

CNF 形式とは

決定すべき二値変数 1 〜 𝑁 が存在する。 , これらの変数 もしくはその否定 (という) の ∨ :OR (論理和) をとったもの (という) の ∧ :AND (論理積) をとったもの 例 (𝑁 = 5, 節 : 3 個) 節 1 ∨ 2 ∨ 3 ∧ 節 2 ∨ 4 ∧ 節 3 ∨ 5

(6)

例 : 3-Queen 問題

3 つの Queen を 3 × 3 の盤に配置する。ただし、同じ行・列・対 角線に複数の Queen を配置してはならない。 CNF で表すと ...。 1 ∨ 2 ∧ 3 ∨ 4 ∧ 5 ∨ 6 ∧ 3 ∨ 7 ∧ 2 ∨ 4 ∨ 7 ∧ 3 ∨ 7 ∧ 1 ∨ 8 ∧ 2 ∨ 3 ∨ 8 ∧ 5 ∨ 8 ∧ 8 ∨ 8 ∧ 5 ∨ 9 ∧ 2 ∨ 6 ∨ 9 ∧ 3 ∨ 9 ∧ 1 ∨ 10 ∧ 2 ∨ 5 ∨ 10 ∧ 7 ∨ 10 ∧ 10 ∨ 10 ∧ 5 ∨ 11 ∧ 4 ∨ 6 ∨ 11 ∧ 5 ∨ 11 ∧ 3 ∨ 12 ∧ 4 ∨ 5 ∨ 12 ∧ 7 ∨ 12 ∧ 12 ∨ 12 ∧ 2 ∨ 4 ∨ 6 ∧ 2 ∨ 3 ∨ 5

(7)

SAT ソルバによる解法

1 ∨ 2 ∧ 2 ∨ 3 ∧ 1 ∨ 3 1. 選択 ↑ ∨ 2 ∧ 2 ∨ 3 ∧ ∨ 3 2. 推論 ⋯ ⋯ ↑ ∨ ∧ ∨ 3 ∧ ∨ 3 3. 推論 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ↑ ∨ ∧ ∨ ∧ ∨ ⇐矛盾 矛盾を検出すると、直前の選択 まで巻き戻す (巻き戻せなければ解なし)

(8)

SAT ソルバのアルゴリズム

選択

推論

1

SAT ソルバはすべての解を探索するため、(存在する場合) 必ず解を見つけ出す反 面、本質的に非常に時間がかかる 効率を上げるため、選択フェーズにおいて どの未確定変数 を選択するか (→ 選択の回数を減らす) その変数に と のどちらを代入するか (→ 巻き戻しを減らす) (ヒューリスティクス) が重要

(9)

SAT ソルバの前処理の必要性

SAT ソルバのヒューリスティクスとして、正しい解から距離 𝑑(横軸) の状態を与え たときの実行時間 0 20 40 60 80 100 manhattan distance 309 509 709 909 time [us] 理想的なヒューリスティクスを与えることで、 SAT ソルバの実行時間が短くなる

(10)

SpoonQ とは

本プロジェクトの目的

アニーリング

を用いた効率的な

ここでは SAT ソルバを扱う

制約充足問題

ソルバの実装

アニーリング

SAT ソルバ

のアイデアを組み合わせる

(11)

SpoonQ のアルゴリズム

CNF形式の論理式 目的関数 アニーリング解 SAT ソルバ 実行可能解 目的関数の生成 アニーリング 解の探索 (時間がかかる ) ヒューリスティック 定数時間で処理可能 1 アニーリングは定数時間で実行 できる反面、 解が実行可能解で あることが保証されないSAT ソルバは (存在する場合) 実 行可能解を確実に見つけ出す。 ⇒ アニーリングの結果をヒュー リスティックとして与えるこ とで SAT ソルバによる求解の 効率化を目指す

(12)
(13)

制約充足問題 → 組合せ最適化問題への拡張

組合せ最適化問題

=

(今年度のプロジェクト)

制約充足問題 +最適化問題

目的関数の値 解 目的関数 実行可能解 SAT ソルバ 局所解 最適解 1 最適化問題目的関数の値が最小値をとる 最適解を求める問題 アニーリングでは近似的に局所解が求まる ⇒SAT ソルバを用いて実行可能解を求める 最適化問題 制約充足問題 目的関数 アニーリング解 SAT ソルバ 実行可能解 アニーリング 解の探索 ヒューリスティック 追加 13/19

(14)

Rust 言語について

Rust 言語 ⋯ 新しい (2010 年) 汎用プログ

ラミング言語。C++ を置き換える存在

採用例 : AWS, Firefox, Dropbox, Fastly,

npmjs.com, Cookpad, Dwango,…

プログラマーに最も愛されている言語 (2020 年 Stack Overflow 調べ) 1 3 5 10 30 50 100 300 ++ g++ C++ g++ C++ g++ C++ g++ R ust R ust R ust R ust R ust R ust C gcc C gcc C gcc C gcc C gcc Intel F ortran Intel F ortran Intel F ortran

Julia Julia Julia Julia Julia

C# .NET C# .NET C# .NET C# .NET

12 GNA T A da 2012 GNA T A da 2012 GNA T F ree P ascal F ree P ascal F ree P ascal

F# .NET F# .NET F# .NET F# .NET

OCaml OCaml OCaml OCaml OCaml

Java Java Java Java Java Java

o Go Go Go Go Go Go Go Go Go Hask

ell GHC Hask

ell GHC Hask

ell GHC

Chapel Chapel Chapel Chapel Chapel

Lisp SB CL Lisp SB CL Lisp SB CL 01 Dec 2020 u64q benchmarks game pr ogram busy time / least busy

How many times slower? Python ライブラリも多く移植 (?) されている

numpy, scipy, sympy, matplotlib, Jupyter, Ten-sorFlow, ⋯

安全かつ最も高速な言語 (Tier 1) の一つ

C++ より遅いわけではない

(15)

現在開発中のライブラリ

Rust 言語向けの以下のライブラリをオープンソースで開発している。(これらは現 在の SpoonQ でも使用している)

RustQUBO

Rust 言語上で目的関数を記述する 目的関数から QUBO を生成する annealers を用いて QUBO を解く 与えられた制約が満たされているか確 認する 制約が満たされない場合、自動でパラ メタチューニングを行う 類似のライブラリ

PyQUBO (Python), ThreeQ.jl(Julia)

annealers

シミュレーテッドアニーリング又は ニーリング API を用いてアニーリング を行う 複数のアニーリングマシンを同じイン ターフェースで扱える

D-Wave, Hitachi (Annealing Cloud Web), Fujitsu, Toshiba 等に対応予定

問題分割をサポート (予定)

(16)

RustQUBO について

特徴⋯ QUBO 生成アルゴリズムに石川の方法を使用している 例 : w x y z (4 次の積) を高々 2 次に変換 既存の方法 (PyQUBO 等)⋯ 追加のビット : u , v , 制約 : 2 0 = min u 2 − 2 w −2 x = min v 3 − 2 u −2 y v z 石川の方法 (RustQUBO)⋯ 追加のビット : u , 制約 : 0 − 2 u w + x + y + z + 3 u + w x + w y + w z + x y + x z + y z アルゴリズムが制約を増やさない → アニーリングのやり直しが減る

(17)

RustQUBO の使用例

実数型

Rust 標準のすべての実数

型 (i8, i32, i128, f32, f64 など) が利用できる。 使用する Solver(Anneal-er) のビット深度に対応

変数

Expr::Binary(...) Expr::Spin(...) が使える。... 部 (ラベル) には数値や文字列等、好 きな型を入れられる。

その他

解のエネルギー、部 分場の計算 Constraint WithPenalty Placeholder

(18)

annealers について

問題(ModelView)

SolverGenerator Solver Solution

.generate() .solve() など ソルバの設定 1 複数のアニーリングマシンを同じ インターフェースで扱えるように するため、アニーリングマシンや 解くべき問題を一般化する。 問題について Order Quadric⋯ 高々 2 次 HighOrder⋯ N 次 Node DiscreteNode⋯3 つ以上の値を 取る変数 SingleNode⋯ 真偽 2 つの値をと る変数 Real ビット深度を表す。i8, i32, f64 など ソルバについて ClassicalSolver⋯ 古典コンピュータ上で動作する。 与えられた乱数ジェネレータを用いて処理を行う AsyncSolver⋯ 他のコンピュータと通信して処理を 行う。 UnstructuredSolver⋯ 全結合かつ変数の番号の欠 番がないソルバ

(19)

メッセージ

プログラマーの方へ

アニーリング向けツールはまだ成熟し切っていない ⇒ 研究・実装の両面で参入する余地がある 共にアニーリング業界を盛り上げましょう !

アニーリングを利用している (or 興味がある) 方へ

開発中の RustQUBO や annealers の採用を検討いただければ幸いです

SAT ソルバに興味がある方へ

ぜひ SpoonQ を使ってみてください

参照

関連したドキュメント

• 問題が解決しない場合は、アンテナレベルを確認し てください(14

東京大学 大学院情報理工学系研究科 数理情報学専攻. hirai@mist.i.u-tokyo.ac.jp

⑬PCa採用におけるその他課題 ⑭問い合わせ 会社名 所属部署・役職 担当者名 電話番号 メールアドレス... <契約形態別>

of IEEE 51st Annual Symposium on Foundations of Computer Science (FOCS 2010), pp..

最大消滅部分空間問題 MVSP Maximum Vanishing Subspace Problem.. MVSP:

"A matroid generalization of the stable matching polytope." International Conference on Integer Programming and Combinatorial Optimization (IPCO 2001). "An extension of

ポートフォリオ最適化問題の改良代理制約法による対話型解法 仲川 勇二 関西大学 * 伊佐田 百合子 関西学院大学 井垣 伸子

I Samuel Fiorini, Serge Massar, Sebastian Pokutta, Hans Raj Tiwary, Ronald de Wolf: Exponential Lower Bounds for Polytopes in Combinatorial Optimization. Gerards: Compact systems for