Skip to main content
IBM Quantum Platform

Aqarios Constrained Quantum Optimizer API リファレンス

  • Qiskit Functions

    Qiskit Functions — パートナー組織によって開発された既製のツール — は、ソフトウェア開発ワークフローの一部を抽象化することで、ユーティリティ規模でのアルゴリズムの発見およびアプリケーション開発を簡素化し、加速させます。 このQiskit関数のガイドを表示するには、ここをクリックしてください。

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層の反復回数(回路深度パラメータ pp )。この値を大きくすると、回路が深くなり実行時間が長くなるという代償を伴うものの、解の品質が向上します。ただし、これによりノイズが増える可能性があります。

  • 選択肢:範囲内の整数 [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。
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。