Skip to main content
IBM Quantum Platform

Kipu Quantum Iskay Quantum Optimizer API リファレンス

  • Qiskit Functions

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


入力

problem

タイプ: Dict[str, float]

QUBO/HUBO形式またはスピン形式で定式化された最適化問題の係数。 問題の仕様に関する詳細は、 「許可される問題形式」 を参照してください。

  • 必須:はい
  • 例: {"()": -21.0, "(0, 4)": 0.5,"(0, 2)": 0.5,"(0, 1)": 0.5,"(1, 3)": 0.5}

problem_type

タイプ: str

問題の係数が2進形式(QUBO/HUBO)かスピン形式かを指定してください。 2つの可能性は、または "spin" です "binary"。 問題の仕様に関する詳細については、 「許可される問題形式」 を参照してください。

  • 必須:はい
  • 例: "spin"

backend_name

タイプ: str

クエリを実行するバックエンドの名前

  • 必須:はい
  • 例: "ibm_fez"

オプション

タイプ: Dict[str, Any]

撮影枚数など、ハードウェアの送信を処理するためのオプション。 この関数のオプションは、ネストされた辞書として指定します。 オプションの一覧とそのデフォルト値を確認してください。

  • 必須:いいえ
  • 例: {"shots": 5000, "num_iterations": 3, "use_session": True, "seed_transpiler": 42}
対応している問題形式

引数 problem problem_type および は、次のような形式の最適化問題を表現している

min(x1,x2,,xn)DC(x1,x2,,xn)\begin{align} \min_{(x_1, x_2, \ldots, x_n) \in D} C(x_1, x_2, \ldots, x_n) \nonumber \end{align}

ここで

C(x1,...,xn)=a+ibixi+i,jci,jxixj+...+k1,...,kmgk1,...,kmxk1...xkmC(x_1, ... , x_n) = a + \sum_{i} b_i x_i + \sum_{i, j} c_{i, j} x_i x_j + ... + \sum_{k_1, ..., k_m} g_{k_1, ..., k_m} x_{k_1} ... x_{k_m}
  • を選択することで problem_type = "binary"、コスト関数が binary 形式であることを指定します。これは、 D={0,1}nD = \{0, 1\}^{n} となることを意味し、つまり、コスト関数がQUBO/HUBO形式で記述されていることを示します。
  • 一方、を選択すると problem_type = "spin"、コスト関数はアイジング形式で表され、ここで D={1,1}nD = \{-1, 1\}^{n} となる。

この問題の係数は、次のように辞書にエンコードする必要があります:

{"()":a,"(i,)":bi,"(i, j)":ci,j,"(k1,...,km)":gk1,...,km,}\begin{align} \nonumber &\texttt{\{} \\ \nonumber &\texttt{"()"}&: \quad &a, \\ \nonumber &\texttt{"(i,)"}&: \quad &b_i, \\ \nonumber &\texttt{"(i, j)"}&: \quad &c_{i, j}, \\ \nonumber &\quad \vdots \\ \nonumber &\texttt{"(} k_1, ..., k_m \texttt{)"} &: \quad &g_{k_1, ..., k_m}, \\ \nonumber &\texttt{\}} \end{align}
  • 辞書のキーは、重複しない整数の有効なタプルを含む文字列でなければならない点にご注意ください。

オプション・リスト

Iskayは、オプションのパラメータを通じて微調整機能を提供します。 デフォルトの設定はほとんどの問題で問題なく機能しますが、特定の要件に合わせて動作をカスタマイズすることも可能です:

shots

タイプ: `int`

デフォルト値: 10000

1回の反復あたりの量子測定回数(数値が大きいほど精度が高い)

num_iterations

タイプ: `int`

デフォルト値: 10

アルゴリズムの反復回数(反復回数を増やすと解の精度が向上する可能性があります)

use_session

タイプ: `bool`

デフォルト値: True

待ち時間を短縮するには、 IBM のセッションをご利用ください

seed_transpiler

タイプ: `int`

デフォルト値: None

再現可能な量子回路のコンパイル用セット。

シードの最適化 :デフォルトでは、 None はに設定されている seed_transpiler ことに注意してください。 これにより、トランスパイラの自動最適化プロセスが有効になります。 この場合 None、システムは複数のシードを用いて試行を開始し、各トランスパイルレベルにおけるパラメータ max_trials の能力を最大限に活用して、回路の深さが最も深くなるものを選択します。

direct_qubit_mapping

タイプ: `bool`

デフォルト値: False

仮想量子ビットを物理量子ビットに直接対応させる

job_tags

タイプ: `List[str]`

デフォルト値: None

業務管理用のカスタムタグ

preprocessing_level

タイプ: `int`

デフォルト値: 0

問題の前処理強度(0~3)。

前処理レベル(0~3) :現在、ハードウェアのコヒーレンス時間に収まらない大規模な問題において特に重要です。 前処理レベルが高いほど、問題のトランスパイルにおける近似によって回路の深さが浅くなります:

  • レベル0 :正確で、より長い回路
  • レベル1 :正確性と近似性のバランスが良好で、角度が下位10パーセンタイルにあるゲートのみを除外する
  • レベル 2 :やや精度の高い近似。下位 20パーセンタイルの角度を持つゲートを除外し、トランスパイレーション approximation_degree=0.95 で を使用する
  • レベル 3 :最高精度レベル。下位 30 パーセンタイルのゲートを除外し、トランスパイル時に approximation_degree=0.90 を使用する
postprocessing_level

タイプ: `int`

デフォルト値: 2

解の精緻化レベル(0~2)。

後処理レベル (0~2) :局所探索の貪欲法による反復回数を変更し、ビット反転エラーを補正する古典的最適化の度合いを制御します:

  • レベル0 :1回通過
  • レベル1 :2回合格
  • レベル2 :3回
transpilation_level

タイプ: `int`

デフォルト値: 0

トランスパイラ最適化の実験(0~5)。

トランスパイルレベル(0~5) :量子回路のコンパイルにおける高度なトランスパイラ最適化の試行を制御します。 これにより、従来のオーバーヘッドが増加する可能性があり、場合によっては回路の深さに変化がないこともあります。 一般的に、デフォルト値 2 を使用すると回路が最も小さくなり、処理も比較的速くなります。

  • レベル0 :分解されたDCQO回路の最適化(レイアウト、配線、スケジューリング)
  • レベル1 :および、分解された PauliEvolutionGate DCQO回路の最適化( max_trials=10 )
  • レベル2 :および、分解された PauliEvolutionGate DCQO回路の最適化( max_trials=15 )
  • レベル3 :および、分解された PauliEvolutionGate DCQO回路の最適化( max_trials=20 )
  • レベル4 :および、分解された PauliEvolutionGate DCQO回路の最適化( max_trials=25 )
  • レベル5 :および、分解された PauliEvolutionGate DCQO回路の最適化( max_trials=50 )
transpile_only

タイプ: `bool`

デフォルト値: False

量子アルゴリズムを完全に実行することなく、回路の最適化を分析したいユーザー向けに利用可能です。 回路解析や深さ最適化の検討、および完全な実行に移す前にトランスパイラの影響を把握するのに役立ちます。

トランスパイル時のパフォーマンス

の値を高く設定 max_trials して transpilation_level の数を増やすと、必然的にトランスパイル時間が長くなりますが、必ずしも最終的な回路が変更されるとは限りません。これは、具体的な回路の構造や複雑さに大きく依存します。 ただし、回路や問題によっては、10回の試行(レベル1)と50回の試行(レベル5)との間に劇的な違いが生じる場合があるため、これらのパラメータを調整することが、解決策を見出すための鍵となるかもしれません。


出力

タイプ: `Dict[str, Any]`

ソリューションとメタデータ。 構成はオプション transpile_only によって異なります。

結果辞書

結果辞書の構造は、実行モードによって異なります:

solution

タイプ: `Dict[str, int]`

キーが数値順にソートされた変数インデックス(文字列として)であり、値が対応する変数の値(スピン問題の場合は1/-1、二値問題の場合は1/0)である、ソート済みマップ型ソリューション。

  • モード:標準
  • 例: {'0': -1, '1': -1, '2': -1, '3': 1, '4': 1}

solution_info

タイプ: `Dict[str, Any]`

ソリューションに関する詳細情報。

  • モード:標準
  • 例: {'bitstring': '11100', 'cost': -13.8, 'seed_transpiler': 42, 'mapping': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}}
  • 標準的な実行 :オプションのパラメータが指定された transpile_only=False場合、以下の辞書を参照してください。
bitstring

タイプ: `str`

解の生のビット列表現。

cost

タイプ: `float`

その解決策に伴う費用対効果。

seed_transpiler

タイプ: `int`

この結果を生成したトランスパイラで使用された乱数シード。

mapping

タイプ: `Dict[int, int]`

計算に使用された、元の量子ビットと変数の対応関係。

qpu_time

タイプ: `float`, optional

QPUの実行時間(秒単位)。

変数マッピングに関する注意事項
  • 辞書 solution は、ソリューションのビット列から、変数のインデックス付けにオブジェクト mapping を使用して取得されます。
  • 11,011 \rightarrow -1, \quad 0 \rightarrow 1 という代入 problem_type=spin を行うと。
  • ソリューション辞書のキーは、文字列として数値順に並べられた変数インデックスです。

prob_type

タイプ: `str`

最適化問題の種類(spin または binary

  • モード:標準
  • 例: 'spin'

transpilation_info

タイプ: `Dict[str, Any]`

回路解析およびトランスパイルの詳細。

  • モード:トランスパイルのみ
  • 例: {'best_seed': 42, 'transpilation_time_seconds': 50.06, 'transpiled_circuit': {'depth': 576, 'gate_count': 4177, 'num_qubits': 156, 'width': 176, 'operations': {'sx': 1325, 'rx': 891, 'cz': 783, 'rz': 650, 'rzz': 466, 'x': 42, 'measure': 20}}}
  • トランスパイル解析 :オプションのパラメータが指定された transpile_only=True場合、以下の辞書を参照してください:
best_seed

タイプ: `int`

転植に適した最適な種子が発見された。

transpilation_time_seconds

タイプ: `float`

トランスパイル処理にかかる時間。

transpiled_circuit

タイプ: `Dict`

以下の内容を含む回路解析:

  • depth

タイプ: `int`

回路の深さ(層数)

  • gate_count

タイプ: `int`

回路内のゲート総数。

  • num_qubits

タイプ: `int`

使用される量子ビットの数。

  • width

タイプ: `int`

回路の幅。

  • operations

タイプ: `Dict[str, int]`

各ゲートタイプの使用回数。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。