• 発売日:2025/06/04
  • 出版社:共立出版
  • ISBN:9784320036369

読み込み中…

Pythonによるアニーリングマシン入門

Pythonによるアニーリングマシン入門

田中 宗 (監修)
通常価格 3,300 円(税込)
通常価格 セール価格 3,300 円(税込)
SALE 売り切れ
  • 発売日:2025/06/04
  • 出版社:共立出版
  • ISBN:9784320036369
ネットストア在庫 詳細
    読み込み中...
My店舗在庫
    My店舗登録で在庫確認と店舗お受け取りのご利用が可能になります。(要ログイン)
  • 在庫表示のサンプル
商品説明
本書では、プログラミング言語であるPythonを用いて、アニーリングマシンを利用し最適化問題を解くための方法を学ぶことができます。

世の中にはたくさんの組合せ最適化問題が存在しています。電車の運行計画、工場の生産スケジュール、チラシ上の商品のレイアウト、電子回路の最適な設計など、例を挙げるときりがありません。これらは従来、汎用的な数理最適化ソルバーを用いて解かれていましたが、2011年にD-Wave Systemsによって世界初の量子アニーリングマシンが開発されて以来、多くのアニーリングマシンが世の中に登場し、組合せ最適化問題に対する新しい技術的なアプローチとして注目されるようになりました。
ユーザがこれらのマシンを利用する際には、最適化問題の形式の一種であるイジングモデルやQUBO(Quadratic Unconstrained Binary Optimization)を作成してマシンに入力し、その解をビット列の出力として得ます。それぞれのアニーリングマシンはそれぞれ固有の動作原理を持っており、アニーリングマシンとしての特徴も非常に異なっていますが、解きたい問題をイジングモデルやQUBOにさえ変換できれば、どのようなアニーリングマシンであってもQUBOから問題を解いてくれます。

本書では、PythonライブラリのPyQUBOを用いることで最適化問題からQUBOを作成する方法を説明します。実際にアニーリングマシンで問題を解くには、パラメータの逐次調整や得られたビット列の解釈など、多くの処理が必要になります。この処理をしてくれるのがPyQUBOです。どのようなアニーリングマシンを使うかにかかわらず、組合せ最適化問題を記述してQUBOを生成し、マシンから返ってきたビット列を解釈する役割をPyQUBOが担ってくれます。また、QUBOは量子アニーリングだけでなく量子ゲート方式の最適化手法にも頻繁に登場します。そこで、PyQUBOを用いた量子最適化計算についても説明します。

なお、アニーリングは組合せ最適化問題を解くためのアプローチの1つに過ぎないため、本書では組合せ最適化問題を解くための他の手法として、貪欲法、全探索法、数理最適化ソルバーを用いる方法についても紹介します。問題によって解くための適切なアプローチは異なるため、それぞれの手法を知っておくことで、アニーリングマシンがどのような問題に対して得意であるのかなどの見極めができるようになります。
目次
第1章 PyQUBOを使うための準備
1.1 Pythonの開発環境構築
 1.1.1 uvのインストール
 1.1.2 uvプロジェクトの初期化
 1.1.3 パッケージのインストール方法
 1.1.4 Pythonプログラムの実行
 1.1.5 本書で利用するパッケージ
1.2 Pythonの基本操作
 1.2.1 データ構造
1.3 アニーリングの基礎
 1.3.1 組合せ最適化問題とは
 1.3.2 ナップサック問題の定式化
 1.3.3 QUBO,イジングモデルとは
 1.3.4 QUBOとイジングモデルの変換
1.4 組合せ最適化問題からQUBOへの変換
 1.4.1 線形計画問題として定式化
 1.4.2 ペナルティ法により制約式を削除
 1.4.3 整数をバイナリにエンコード
 1.4.4 多項式の展開
 1.4.5 高次項の次元削減
 1.4.6 式を整理して係数からQUBO行列を作成する
 1.4.7 ナップサック問題のQUBO定式化

第2章 PyQUBO の使い方
2.1 PyQUBOの基礎
 2.1.1 BinaryクラスとSpinクラス
 2.1.2 数式をコンパイルしてQUBOを作成する
 2.1.3 Spinクラスを使ってハミルトニアンの数式を構築する
 2.1.4 Spinクラスを使って整数分割問題を解く
 2.1.5 イジングモデルによって整数分割問題を解いてみる
2.2 PyQUBOの応用
 2.2.1 Arrayクラス
 2.2.2 SubHクラス
 2.2.3 Placeholderクラス
 2.2.4 Integerクラス
 2.2.5 論理ゲートクラス
 2.2.6 論理ゲートクラスの応用
 2.2.7 論理制約クラス
2.3 PyQUBOを使わないナップサック問題の定式化
2.4 アニーリング以外でナップサック問題を解く
 2.4.1 全探索(枝刈りあり)
 2.4.2 貪欲法で解く
 2.4.3 整数計画問題ソルバーを使って解く

第3章 様々な組合せ最適化問題を解く
3.1 セールスマン巡回問題
 3.1.1 2値変数によるTSPの表現
 3.1.2 TSPにおける制約条件
 3.1.3 二部グラフの割当問題との関係
 3.1.4 PyQUBOのコード
3.2 二次割当問題(QAP)
 3.2.1 QAPのQUBO定式化
3.3 配送計画問題(集合分割問題によるアプローチ)
 3.3.1 容量制約付配送計画問題
3.4 集合被覆問題
 3.4.1 アニーリングで解いてみる
3.5 ジョブショップスケジューリング問題
3.6 素因数分解
 3.6.1 多ビット積算器の仕組みを理解する
 3.6.2 PyQUBOで因数分解を実装する
 3.6.3 素因数分解を実装する
3.7 シフトスケジューリング

第4章 アニーリングマシンを使う
4.1 量子アニーリングマシン
 4.1.1 D-Wave Leap
 4.1.2 D-Wave Ocean SDK
 4.1.3 dimodの基本的な使い方およびPyQUBOとの連携
 4.1.4 D-Waveの量子ビット配置
 4.1.5 ハードウェアへの問題の埋め込み
 4.1.6 鎖の値の解釈
 4.1.7 D-Waveをソルバーとして利用する
 4.1.8 D-Wave Hybridによる問題分割
4.2 東芝シミュレーテッド分岐マシン
 4.2.1 東芝SQBM+の利用の準備
 4.2.2 東芝SQBM+を利用する
4.3 富士通デジタルアニーラ
4.4 Annealing Cloud Web
 4.4.1 APIからソルバーにアクセスする
 4.4.2 PythonからAPIにアクセスする
 4.4.3 PyQUBOを使ってAnnealing Cloud Webを使う
4.5 OpenJij
 4.5.1 GPUを使った計算

第5章 量子計算アルゴリズムを使う
5.1 量子計算の基本
 5.1.1 量子ビット
 5.1.2 量子ビットの観測
 5.1.3 ブロッホ球
5.2 量子ゲート
 5.2.1 パウリ演算子
 5.2.2 回転ゲート
 5.2.3 アダマールゲート
 5.2.4 位相ゲート
 5.2.5 ユニバーサルゲート
5.3 複数量子ビット
 5.3.1 量子もつれ
 5.3.2 2量子ビットゲート
 5.3.3 3量子ビットゲート
5.4 QAOAの基本
 5.4.1 QAOAの操作
 5.4.2 PyQUBOとQulacsでQAOAを解いてみる
 5.4.3 QiskitとPyQUBOを使ってQAOAを解く
 5.4.4 QAOAと量子アニーリングとの関係
5.5 QAOAをさらに深く理解する
 5.5.1 コストハミルトニアンをカスタムする
 5.5.2 ミキサーハミルトニアンをカスタムする
 5.5.3 初期状態をカスタムする
 5.5.4 パラメータの最適化方法をカスタムする
5.6 QAOA以外の最適化手法について
 5.6.1 VQE
 5.6.2 Grover適応探索
 5.6.3 テンソルネットワーク

参考文献
索 引
詳細を表示する

カスタマーレビュー

honto本の通販ストアのレビュー(0件)

並び順:
1/1ページ

最近チェックした商品