Qiskit Aer Simulator¶
Qiskit Aer Simulatorを回路の評価に利用します。
AerClientとして利用できます。
Tip
登録不要で利用できます。
自身の IBM Cloud Platform アカウントで取得できる IBM Quantum API キーを設定することでIBM Quantumのノイズモデルを利用できます。
- ソルバー仕様:
クライアントクラス
アルゴリズムに依存
アルゴリズムに依存
アルゴリズムに依存
量子コンピュータ方式
ゲート型・シミュレータ
API 方式
ローカルシミュレーション (Qiskit Aer)
入力可能な問題の変数型や次数は選択するアルゴリズムに依存します。
クライアントの引数で QAOA が設定されている場合
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
-
N次*
-
-
等式制約
-
**
-
-
不等式制約
-
-
-
-
*: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。
クライアントの引数で RQAOA が設定されている場合
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
-
N次*
-
-
等式制約
-
-
-
-
不等式制約
-
-
-
-
*: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。
- クライアントクラス:
以下のアトリビュートとメソッドを持ちます。
アトリビュート
データ型
詳細
Aer Simulator の動作するデバイス。
"CPU","GPU","Thrust"のいずれか。デフォルト:"CPU"。 詳細は AerSimulator を参照してください。シミュレーション手法。
"automatic","statevector","density_matrix"等。デフォルト:"automatic"。 詳細は AerSimulator を参照してください。回路のトランスパイルに使用する Qiskit の
qiskit.transpiler.PassManager。 デフォルト (...) では generate_preset_pass_manager によって自動生成されます。Noneを指定するとトランスパイルをスキップします。IBM Cloud APIキー。設定することでIBM Quantum のノイズモデルをダウンロードして利用できます。
QiskitRuntimeService の接続先 URL
QiskitRuntimeService との接続に用いるプロキシサーバー
サーバーの TLS 証明書を検証するかどうか
AerSimulatorで模倣する IBM Quantum のデバイス名。
Noneであればノイズ無しのシミュレータとして動作します。 設定可能な名前は FakeProviderForBackendV2 からバックエンドを取得可能な名前です。 有効なtokenが設定されている場合は追加で QiskitRuntimeService.backend() から取得可能な名前も利用可能です。QiskitRuntimeService のチャンネル。
"ibm_quantum_platform","ibm_cloud","local"等メソッド
引数
返却型
詳細
set_optionsで明示的に設定された Aer Simulator のオプションを取得します。任意のキーワード引数
Aer Simulator の実行オプションを設定します。 設定可能なオプションは AerSimulator のドキュメントを参照してください。 例:
seed_simulator,noise_model,precision,fusion_enable等- バックエンド固有のメタ情報:
QAOAのsampling_metaなどで取得できるサンプリング時の詳細情報です。
QiskitJobMetaが利用されます。meta = client_result.history[0].sampling_meta meta.job_id # ジョブ ID meta.circuit # 実行した Qiskit 回路オブジェクト meta.transpiled_circuit # トランスパイル後の回路 (トランスパイルされなかった場合は None) meta.metadata # ジョブの結果から得られる生のメタデータ meta.metrics # ジョブの結果から得られる実行時間などのメトリクスデータ
- 設定例:
from amplify import QAOA, AerClient # クライアントの作成 client = AerClient(QAOA) # QAOAのパラメータを設定 client.parameters.reps = 1 client.parameters.shots = 100 # ノイズモデルを利用する場合 client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" client.noise_model = "fake_fez" # シミュレーションデバイスの設定 client.device = "CPU" client.method = "automatic"
- 実行例:
from amplify import Model, VariableGenerator, solve # 決定変数と目的関数を定義 g = VariableGenerator() q = g.array("Binary", 2) f = q[0] * q[1] + q[0] - q[1] + 1 # モデルを作成 model = Model(f) # ソルバーを実行 result = solve(model, client)
バックエンドのバージョンを取得:
>>> client.version() '0.17.2'
Aer Simulator のオプションを確認・設定:
>>> client.get_options() {'device': 'CPU', 'method': 'automatic'} >>> client.set_options(seed_simulator=42) >>> client.get_options() {'seed_simulator': 42, 'device': 'CPU', 'method': 'automatic'}