Ansatz¶
このセクションでは求めたい量子状態を準備する Ansatz を設定します。
Type¶
ansatz
のタイプは以下の種類から選択可能です。
HARDWARE_EFFICIENT [Kan17][解説]
SYMMETRY_PRESERVING [Gar20]
UCCD [Per14, Sok20]
UCCSD [Per14, Sok20][解説]
FERMIONIC_ADAPTIVE [Gri19][解説]
注意:¶
UCCD 及び UCCSD を使用して励起状態を求める場合、
spin_adapted_ref_state
を true にする必要があります。
参考文献:¶
[Kan17] “Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets”, A. Kandala et al., Nature 549, 242–246 (2017).
[Gar20] “Efficient symmetry-preserving state preparation circuits for the variational quantum eigensolver algorithm”, B. T. Gard, L. Zhu, G. S. Barron, N. J. Mayhall, S. E. Economou, and E. Barnes, npj Quantum Information volume 6, Article number: 10 (2020).
[Per14] “A variational eigenvalue solver on a photonic quantum processor” A. Peruzzo et al., Nature Communications 5, 4213 (2014).
[Sok20] “Quantum orbital-optimized unitary coupled cluster methods in the strongly correlated regime: Can quantum algorithms outperform their classical equivalents?”, I. O. Sokolov et al., The Journal of Chemical Physics volume 152, 124107 (2020).
[Gri19] “An adaptive variational algorithm for exact molecular simulations on a quantum computer”, H. R. Grimsley et al., Nature Communications 10, 3007 (2019).
共通オプション¶
全ての Ansatz に共通して指定可能なオプションは以下の通りです。
reference_state
: 以下の参照状態から選択が可能です:RHF: Restricted Hartree–Fock 状態 (デフォルト)。
CIS: Configuration Interaction Singles 状態。周期境界条件と共には使用できません。(注:MCVQEの場合はCIS固定となります)
spin_adapted_ref_state
:reference_state
に RHF が選択され、target_molecule
でmultiplicity
およびsz_number
を指定した場合に、それらの固有状態を参照状態として生成するか指定します (デフォルト値は false)。spin_state_list
:spin_adapted_ref_state
が true のとき、参照状態ごとにmultiplicity
とsz
をリストで指定可能です。このオプションでmultiplicity
とsz
が与えられていない場合はtarget_molecule
で指定された値が用いられます。initial_parameter
: Ansatz の初期パラメター。VQD の場合は各状態に対応する初期パラメターを多重リストで指定可能。use_random_initial_guess
: Ansatz の初期パラメターにランダムな値を用います (デフォルト値は true)。randomness_type
:use_random_initial_guess
がtrueのとき、用いる乱数の確率分布を以下の選択肢から指定可能:UNIFORM: 連続一様分布。(デフォルト)
GAUSSIAN: 正規 (ガウス) 分布。
initial_parameter
が与えられた場合、それを中心とする分布を作ります。
randomness_variance
:randomness_type
がgaussian
の場合の正規分布した乱数の分散init_param_random_seed
:use_random_initial_guess
がtrueのとき、用いる乱数のシードを指定します (デフォルト値は1)。
UCCD, UCCSDのオプション¶
Ansatz が
UCCD
UCCSD
の際に必要なオプション:
trotter_steps
: Trotter-Suzuki 展開 (\(e^{\hat{A} + \hat{B}} \approx [e^{\hat{A}/n} e^{\hat{B}/n}]^n\)) の次数 \(n\)
Ansatz が UCCSD の際に指定可能なオプション:
is_spin_restricted_uccsd
: true を指定すると、UCCSD ansatz が全スピン (\(S^2\)) を保存するように励起演算子を制限します(デフォルトでfalse)。
入力例¶
"ansatz": {
"type": "UCCD",
"reference_state": "RHF",
"is_spin_restricted_uccsd": true,
"trotter_steps": 1,
"initial_parameter": [0],
"use_random_initial_guess": false
}
"ansatz": {
"type": "UCCSD",
"reference_state": "RHF",
"spin_adapted_ref_state": true,
"spin_state_list": [
{
"state": 0,
"multiplicity": 1,
"sz": 0
},
{
"state": 1,
"multiplicity": 3,
"sz": 0
}
],
"trotter_steps": 1,
"use_random_initial_guess": true,
"randomness_type": "GAUSSIAN",
"randomness_variance": 0.1
}
Hardware Efficient, Symmetry Preservingのオプション¶
Ansatz が
HARDWARE_EFFICIENT
SYMMETRY_PRESERVING
の際に指定が必要なオプション:
depth
: 繰り返し回路にかかるゲート層の数is_state_real
: true を指定すると、状態ベクトルを実数に保ちます。(デフォルトでtrue)
Ansatz が SYMMETRY_PRESERVING の際に指定が必要なオプション:
entanglement_pattern
: エンタングリングゲートが配置されるパターンを指定するオプション。 LINEAR が指定された場合n
-量子ビット回路の (0, 1), (1, 2), …, (n-2, n-1) の量子ビットペアがそれぞれエンタングルされます。 CIRCULAR が指定された場合、これらに加えて (n-1, 0) の量子ビットもエンタングルされます。入力がない場合は LINEAR がデフォルト値として指定されます。
入力例¶
"ansatz": {
"type": "SYMMETRY_PRESERVING",
"is_state_real": true,
"reference_state": "RHF",
"depth": 4,
"use_random_initial_guess": true,
"randomness_variance": 0.75,
"randomness_type": "GAUSSIAN",
"init_param_random_seed": 1,
"entanglement_pattern": "LINEAR",
}
Fermionic Adaptiveのオプション¶
Ansatz が FERMIONIC_ADAPTIVE の際に以下のオプションで終了条件を設定する必要があります。
adaptive_gtol
: 次のイテレーションのAnsatz に追加する回転ゲート \(e^{i \theta \hat{G}}\) の勾配の閾値
初期パラメーターの設定方法¶
ポテンシャルエネルギー曲面のスキャン、分子動力学計算など分子構造を変化させながら計算する場合、収束を早めるために前回収束したVQEのパラメーターをVQEの初期パラメーターとして設定することが可能です。
前回出力にあるvqe_result
のopt_params
を、入力にあるansatz
内のinitial_parameter
とすれば初期パラメーターとして設定できます。
target_molecule
に複数分子構造が設定され、かつuse_previous_result
が
true
のとき、前回の計算で得られたopt_params
を自動でinitial parameters
にします。