Qiskit Aer Simulator

Qiskit Aer Simulatorを回路の評価に利用します。

AerClientとして利用できます。

Tip

登録不要で利用できます。

自身の IBM Cloud Platform アカウントで取得できる IBM Quantum API キーを設定することでIBM Quantumのノイズモデルを利用できます。

ソルバー仕様:

クライアントクラス

amplify.AerClient

実行パラメータ

アルゴリズムに依存

実行結果

アルゴリズムに依存

実行時間

アルゴリズムに依存

量子コンピュータ方式

ゲート型・シミュレータ

API 方式

ローカルシミュレーション (Qiskit Aer)

入力可能な問題の変数型や次数は選択するアルゴリズムに依存します。

  • クライアントの引数で QAOA が設定されている場合

    バイナリ変数

    イジング変数

    整数変数

    実数変数

    目的関数

    -

    N次*

    -

    -

    等式制約

    -

    **

    -

    -

    不等式制約

    -

    -

    -

    -

    *: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。

    **: QAOA の種別制約付き QAOAが選ばれた場合 N-HOT 制約に対応しています。

  • クライアントの引数で RQAOA が設定されている場合

    バイナリ変数

    イジング変数

    整数変数

    実数変数

    目的関数

    -

    N次*

    -

    -

    等式制約

    -

    -

    -

    -

    不等式制約

    -

    -

    -

    -

    *: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。

クライアントクラス:

以下のアトリビュートとメソッドを持ちます。

アトリビュート

データ型

詳細

device

str

Aer Simulator の動作するデバイス。"CPU", "GPU", "Thrust" のいずれか。デフォルト: "CPU"。 詳細は AerSimulator を参照してください。

method

str

シミュレーション手法。"automatic", "statevector", "density_matrix" 等。デフォルト: "automatic"。 詳細は AerSimulator を参照してください。

qiskit_pass_manager

qiskit.transpiler.PassManager | EllipsisType | None

回路のトランスパイルに使用する Qiskit の qiskit.transpiler.PassManager。 デフォルト (...) では generate_preset_pass_manager によって自動生成されます。 None を指定するとトランスパイルをスキップします。

token

str | None

IBM Cloud APIキー。設定することでIBM Quantum のノイズモデルをダウンロードして利用できます。

url

str | None

QiskitRuntimeService の接続先 URL

proxy

str | None

QiskitRuntimeService との接続に用いるプロキシサーバー

verify

bool | None

サーバーの TLS 証明書を検証するかどうか

noise_model

str | None

AerSimulatorで模倣する IBM Quantum のデバイス名。 None であればノイズ無しのシミュレータとして動作します。 設定可能な名前は FakeProviderForBackendV2 からバックエンドを取得可能な名前です。 有効な token が設定されている場合は追加で QiskitRuntimeService.backend() から取得可能な名前も利用可能です。

channel

str | None

QiskitRuntimeService のチャンネル。"ibm_quantum_platform", "ibm_cloud", "local"

メソッド

引数

返却型

詳細

get_options()

dict[str, Any]

set_options で明示的に設定された Aer Simulator のオプションを取得します。

set_options()

任意のキーワード引数

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'}