build_excitation_span_minimization_model
build_excitation_span_minimization_model(excitations, num_modes, *, objective='multi', mix_delta=0.1)
励起スパンを最小化するために、フェルミオンモードを並べ替えるPyomoモデルを構築する。
このモデルは、元のモードの各インデックスが、線形順序における正確に1つの位置に割り当てられるような順列を構築する。 すべての2モードおよび4モードの励起タプルについて、選択された目的関数に従って、占有位置のスパンが最小化される。
このリスト excitations は、次のように前処理されます:
- 同じタプル内で2回出現するインデックスは相殺される
- 長さが 0 または 1 の結果のタプルは無視されるため、結果として得られる最小化モデルには距離制約が課されない
- したがって、長さが2または4のポストプロセス済みタプルのみが想定されます
この前処理の背景にある考え方について、より詳細な考察と説明については、 本論文の III.B のセクションを参照してください。
パラメーター
-
excitations (Sequence[tuple[int, int] | tuple[int, int, int, int]]) – フェルミオンモードのインデックスにわたる励起インデックスのタプルの列。
-
num_modes (int) – 整列させるフェルミオンモードの総数。
-
objective (Literal['minmax', 'multi', 'avg']) –
選択された目的モード。 これは、以下のリテラルのいずれかである可能性があります:
minmax: 最大励起スパンを最小限に抑えます。avg: 平均励起スパンを最小限に抑える。multi: を最小限に抑えますmax_span + mix_delta * average_span。
-
mix_delta (float) – …の場合に使用される混合重量
objective="multi"。
戻り値
順列変数、スパン変数、制約条件、および目的関数を記述したPyomo最適化モデル。 このモデルをPyomoソルバーで解き、最適化された発注計画を導き出してください。
昇給
- ValueError – 後処理された励起タプルの長さが 2 または 4 以外の場合。
- ValueError – 未知数が選ばれた
objective場合。
戻りの型