qiskit.algorithms.time_evolvers.variational
Variational Quantum Time Evolutions
qiskit.algorithms.time_evolvers.variational
Algorithms for performing Variational Quantum Time Evolution of quantum states, which can be tailored to near-term devices. VarQTE
base class exposes an interface, compliant with the Quantum Time Evolution Framework in Qiskit Terra, that is implemented by VarQRTE
and VarQITE
classes for real and imaginary time evolution respectively. The variational approach is taken according to a variational principle chosen by a user.
Example
import numpy as np
from qiskit.algorithms import TimeEvolutionProblem, VarQITE
from qiskit.algorithms.time_evolvers.variational import ImaginaryMcLachlanPrinciple
from qiskit.circuit.library import EfficientSU2
from qiskit.quantum_info import SparsePauliOp
observable = SparsePauliOp.from_list(
[
("II", 0.2252),
("ZZ", 0.5716),
("IZ", 0.3435),
("ZI", -0.4347),
("YY", 0.091),
("XX", 0.091),
]
)
ansatz = EfficientSU2(observable.num_qubits, reps=1)
init_param_values = np.zeros(len(ansatz.parameters))
for i in range(len(ansatz.parameters)):
init_param_values[i] = np.pi / 2
var_principle = ImaginaryMcLachlanPrinciple()
time = 1
evolution_problem = TimeEvolutionProblem(observable, time)
var_qite = VarQITE(ansatz, var_principle, init_param_values)
evolution_result = var_qite.evolve(evolution_problem)
Variational Principles
With variational principles we can project time evolution of a quantum state onto the parameters of a model, in our case a variational quantum circuit.
They can be divided into two categories: Variational Quantum _Real_ Time Evolution, which evolves the variational ansatz under the standard Schroediger equation and Variational Quantum _Imaginary_ Time Evolution, which evolves under the normalized Wick-rotated Schroedinger equation.
VariationalPrinciple (qgt, gradient) | A Variational Principle class. |
RealVariationalPrinciple (qgt, gradient) | Class for a Real Variational Principle. |
ImaginaryVariationalPrinciple (qgt, gradient) | Abstract class for an Imaginary Variational Principle. |
RealMcLachlanPrinciple ([qgt, gradient]) | Class for a Real McLachlan's Variational Principle. |
ImaginaryMcLachlanPrinciple ([qgt, gradient]) | Class for an Imaginary McLachlan's Variational Principle. |
ODE solvers
ODE solvers that implement the SciPy ODE Solver interface. The Forward Euler Solver is a preferred choice in the presence of noise. One might also use solvers provided by SciPy directly, e.g. RK45.
ForwardEulerSolver (function, t0, y0, t_bound) | Forward Euler ODE solver. |