Aqarios Constrained Quantum Optimizer API リファレンス
Qiskit Functions — パートナー組織によって開発された既製のツール — は、ソフトウェア開発ワークフローの一部を抽象化することで、ユーティリティ規模でのアルゴリズムの発見およびアプリケーション開発を簡素化し、加速させます。 このQiskit関数のガイドを表示するには、ここをクリックしてください。
Aqarios 制約付き量子オプティマイザー ガイド
Aqarios Constrained Quantum Optimizerは、 IBM Quantum® ハードウェア上で、制約付き二値最適化問題を解きます。 このツールは、LP、MPS、またはLuna Model形式の問題を受け付け、内部ではXYミキサーを用いた固定角度QAOAを用いて、すべての再定式化、回路合成、トランスパイル、および反復的なウォームスタートを処理します。
この関数は、次のように読み込まれ、呼び出されます
optimizer = catalog.load("aqarios/constrained-quantum-optimizer")
job = optimizer.run(model=lp_str, backend_name="ibm_phoenix")
result = job.result()Aqarios Constrained Quantum Optimizerは、「 IBM Quantum® Premium Plan 」、「Flex Plan」、および「 On-Prem Plan 」のユーザーのみが利用可能です。 現在、プレビュー版として提供されており、変更される可能性があります。
入力
このAPIが受け付けるすべての入力パラメータについては、以下のリストを参照してください。 必須のパラメータは、呼び出しのたびに指定する必要があります。それ以外のパラメータはすべて任意です。
model
タイプ: str
解くべき逐次最適化モデル。 以下の3つの形式がサポートされています:
- LP (
*.lp): 文字列としてエクスポートされた標準のLPファイル形式。例えば、DOcplexのexport_as_lp_string() - MPS (
*.mps): 標準のMPSファイル形式を文字列としてエクスポートしたもの。例えば、DOcplexのexport_as_mps_string() - Luna モデル : Base64-encoded 経由で取得した Aqarios Luna モデル オブジェクトのシリアライズ結果
model.encode_b64()
モデルは、最大化または最小化のいずれかとして、二値最適化問題を表現していなければならない。 制約条件は、二値変数に関する不等式または等式とすることができます。 整数変数は、明確な上限と下限が指定されている場合にのみサポートされます。 目的関数や制約条件は高次のものであってもよく、必ずしも線形である必要はありません。
- 必須:はい
- LPの例:
\Problem name: MIS
Minimize
obj: ...
Subject To
c1: ...
...
Binaries
x_0 x_1
End
backend_name
タイプ: str or None
デフォルト値: None
IBM Quantum のバックエンドとして実行する対象の名前(例: "ibm_phoenix")。 に設定すると None、この機能は利用可能なデバイスの中から最も負荷の低いものを自動的に選択します。
- 必須:いいえ
- 例:
"ibm_phoenix"
options
タイプ: dict or None
デフォルト値: None
反復型ウォームスタートQAOAの挙動を制御するアルゴリズムの設定オプション。 オプションは辞書として指定されます。 利用可能なすべてのキーとそのデフォルト値については、以下のオプション一覧をご覧ください。
- 必須:いいえ
- 例:
{"reps": 2, "num_parallel": 10, "postprocessing": "weak"}
オプション・リスト
reps
タイプ: int
デフォルト値: 1
QAOA層の反復回数(回路深度パラメータ )。この値を大きくすると、回路が深くなり実行時間が長くなるという代償を伴うものの、解の品質が向上します。ただし、これによりノイズが増える可能性があります。
- 選択肢:範囲内の整数
[1, 10]
num_parallel
タイプ: int
デフォルト値: 5
並列で実行される独立したウォームスタートチェーンの数。 この値を大きくすると、質の高い解が見つかる確率は高まりますが、消費されるショットの総予算も増加します。
- 選択肢:範囲内の整数
[1, 100]
shots
タイプ: int
デフォルト値: 500
チェーンごとの反復あたりの測定ショット数。
- 選択肢:範囲内の整数
[1, 10000]
total_shots
タイプ: int
デフォルト値: 5000
1つのウォームスタートチェーンについて、すべての反復におけるショットの総予算。 この予算が使い果たされると、そのチェーンに対する反復ループは終了します。
- 選択肢:範囲内の整数
[1, 1000000]
epsilon
タイプ: float
デフォルト値: 0.1
ウォームスタート確率の正則化パラメータ。 確率分布が決定論的な状態に収束するのを防ぎ、反復処理を通じて探索性を維持します。
- 選択肢:範囲内で浮遊する
(0.01, 1)
beta
タイプ: float
デフォルト値: 10
測定サンプルから新しいウォームスタート状態を導出するために用いられるボルツマン重み付けの逆温度。 値が大きいほど、確率質量は低エネルギーのサンプルに集中する。
- 選択肢:フロートが条件を満たす
beta > 0
approximation_degree
タイプ: float
デフォルト値: 1.0
コスト関数およびトランスパイラ処理中に適用される近似レベルを制御します。 値が小さいほど、近似が導入されることで回路の深さが浅くなりますが、これにより解の品質に影響が出る可能性があります。
- 選択肢:範囲内で浮遊する
[0.0, 1.0]
postprocessing
タイプ: str
デフォルト値: "strong"
解の精度を向上させるため、各サンプリングステップの後に適用される古典的な後処理手法。 レベルが高いほど、従来の計算時間が長くなる代わりに、より積極的なローカル検索が行われます。
- 選択肢:
"off"/"weak"/"medium"/"strong""off": 後処理を無効にする。"weak": シングルパス局所探索。 すべてのビットをランダムな順序で一度ずつ反転させ、エネルギーを減少させる反転は維持するようにしてください。"medium": 3パス局所探索。 「弱い戦略」を、異なるランダムな順序で3回適用する。"strong": 貪欲な局所探索。 エネルギーを最も削減できるビット反転を、これ以上改善が見込めなくなるまで繰り返し適用する。
penalty_override
タイプ: float or None
デフォルト値: None
制約条件を目的関数に追加されるペナルティ項に変換する際に使用されるペナルティ値を手動で上書きします。 デフォルトでは、ペナルティは問題の構造から自動的に算出されます。 このオプションは、自動設定された値によって実行不可能な結果が生じる場合にのみ使用してください。
- 選択肢:「満足」を選択するか
penalty_override > 0、自動設定値を使用Noneするか
use_session
タイプ: bool
デフォルト値: False
ジョブの実行に「 IBM Quantum Compute 」サービスのセッションモードを使用するかどうか。 セッションを有効にすると、反復処理を通じてQPUへの専用接続を維持することで、回路実行のオーバーヘッドが軽減され、結果として全体のウォールクロック時間が短縮される可能性があります。
- 選択肢:
True/False
出力
このAPIの出力は、が見つけた最適な解と関連するメタデータを含む辞書であり job.result()、によって返されます。
タイプ: dict[str, Any]
解の割り当て、目的関数値、実行可能性の状態、および実行時間メタデータを含む結果辞書。
- 例:
{"solutions": [{"x_0": 1, "x_1": 0}], "obj_value": 42.0, "feasible": True, "metadata": {...}}
出力構造
solutions
タイプ: list[dict[str, int]]
見つかった最良の解決策の一覧。 各エントリは、変数名(例えば、 "x_0")とそのバイナリ代入値(0 または 1)を対応付ける辞書です。 このリストに複数の項目が含まれるのは、複数の縮退最適解が特定された場合のみです。
- 例:
[{"x_0": 1, "x_1": 0, "x_2": 1}]
obj_value
タイプ: float
見つかった最良の解の目的関数値。元の問題の用語を用いて表される。 最大化問題では、この値が大きいほど解の質が高くなり、最小化問題では小さいほど解の質が高くなります。
- 例:
42.0
raw_energy
タイプ: float
最良解のQAOAエネルギー(生値)は、常に最小化値として表される。 これには、問題の再定式化の過程で追加されたペナルティ項も含まれており、制約違反の診断に役立ちます。
- 例:
-38.5
feasible
タイプ: bool
返された解が、元の入力モデルのすべての制約を満たしているかどうか。 ペナルティ値が、ハードウェア上のすべての制約を確実に満たすのに不十分な場合、その結果は実行不可能となる可能性があります。
- 例:
True
metadata
resource_usage
タイプ: dict
アルゴリズムの各フェーズ(マッピング、ハードウェア最適化、QPU実行、後処理)ごとに分類した、量子および古典リソースの消費量。
- 例:
{'RUNNING: MAPPING': {'CPU': 4.57},
'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU': 0.177},
'RUNNING: WAITING_FOR_QPU': {'CPU': 9.238},
'RUNNING: EXECUTING_QPU': {'QPU': 30},
'RUNNING: POST_PROCESSING': {'CPU': 0.093}}circuit_metrics
タイプ: dict
最適化実行中にデバイスに送信されたすべての回路における、平均ゲート数および回路の深さ。
- 例:
{"depth": 48, "gate_count": 312, "num_qubits": 20}
エラー処理
コード | 説明 |
|---|---|
4710 | この入力モデルはサポートされていません。 このモデルには、範囲が定められていない整数変数または連続変数が含まれている。 |
4711 | 入力文字列をモデルとして解析できません。 入力が有効なLP、MPS、またはLuna Modelの文字列であることを確認してください。 |
4712 | このモデルは前処理の段階で最適解が求められており、量子計算は行われなかった。 結果は依然として返されます。 |
4719 | 予期せぬ内部関数エラーが発生しました。 ジョブIDを明記の上、 [email protected] までご連絡ください。 |
- 無効なモデル形式 :文字
model列を有効な LP、MPS、または Luna モデルとして解析できない場合、ジョブはエラーコード で失敗します4711。 - オプションの検証エラー :オプションのキーまたは値が、ドキュメントに記載された範囲外の場合、ジョブはエラーコード とともに直ちに失敗します
1221。