はじめに
量子アニーリングにて、QUBO行列をハードウェアに投げる作業を備忘の為にメモ書きしたものです。
- D-Waveの場合
- OpenJijの場合
D-Waveの場合
D-waveライブラリのインストールとインポート
#インストール
pip install dwave-ocean-sdk
#使用するD-waveマシンを指定するDWaveSamplerとQBITへの自動割当を行うEmbeddingCompositeをインストール
from dwave.system import DWaveSampler, EmbeddingComposite
使用するD-Waveマシンの指定
以下のTokenはhttps://cloud.dwavesys.com/leap/login/?next=/leap/ でIDを作成すれば無料で3分のマシンタイム獲得可。
#D-Waveマシンの指定 = アクセスURL、token、使用するSolverを指定
endpoint = "https://cloud.dwavesys.com/sapi/"
token = "DEV-XXX…"
solver = "Advantage_system4.1" #以下参照
dw_sampler = DWaveSampler(solver = solver, token = token, endpoint = endpoint)
#指定したD-Waveマシン上でのQBITの自動割当を準備
sampler = EmbeddingComposite(dw_sampler)
D-Waveでの計算
QUBO行列を以下でD-Wave Samplerに投げる。
#QUBO行列の指定
QUBO = [...]
#指定のD-Wave SamplerにQUBO行列を投げて計算行う
ans = sampler.sample_qubo(QUBO, num_reads=10) # num_readsは繰り返し回数
D-Wave Solverの種類
現在以下のSolverが使用可。
・QPUは約5,000変数使用可。
・Hybridは約20,000~100,000変数程度まで使用可能とのこと。
OpenJijの場合(量子アニーリングのシュミレーター)
OpenJijライブラリのインストールとインポート
#インストール
pip install openjij
#ライブラリのインポート
from openjij import SQASampler
OpenJijで計算
QUBO行列を以下でOpenJIjのシュミレーターに投げる。
#QUBO行列の指定
QUBO = [...]
#OpenJij上でQUBO行列を計算
sampler = SQASampler()
ans = sampler.sample_qubo(QUBO, num_reads=10)
以上