Tutorial: Runing VQE on Braket backend#

[3]:
from qiskit.algorithms.minimum_eigensolvers import VQE
from qiskit.quantum_info import SparsePauliOp
from qiskit.algorithms.optimizers import SLSQP
from qiskit.circuit.library import TwoLocal
from qiskit.utils import algorithm_globals
from qiskit.primitives import BackendEstimator

from qiskit_braket_provider import AWSBraketProvider, BraketLocalBackend

seed = 50
algorithm_globals.random_seed = seed

Get backend to run VQE with

[2]:
provider = AWSBraketProvider()
local_simulator = BraketLocalBackend()
local_simulator
[2]:
BraketBackend[default]
[4]:
state_vector_simulator_backend = provider.get_backend("SV1")
state_vector_simulator_backend
[4]:
BraketBackend[SV1]

Running VQE

More docs on VQE and algorithms https://qiskit.org/documentation/tutorials/algorithms/01_algorithms_introduction.html#A-complete-working-example

[5]:
H2_op = SparsePauliOp(
    ["II", "IZ", "ZI", "ZZ", "XX"],
    coeffs=[
        -1.052373245772859,
        0.39793742484318045,
        -0.39793742484318045,
        -0.01128010425623538,
        0.18093119978423156,
    ],
)

estimator = BackendEstimator(
    local_simulator,
    options={"seed_transpiler": seed, "seed_simulator": seed},
    skip_transpilation=False,
)
ansatz = TwoLocal(rotation_blocks="ry", entanglement_blocks="cz")
slsqp = SLSQP(maxiter=1)

vqe = VQE(estimator=estimator, ansatz=ansatz, optimizer=slsqp)

result = vqe.compute_minimum_eigenvalue(H2_op)
print(result)
{   'aux_operators_evaluated': None,
    'cost_function_evals': 9,
    'eigenvalue': -1.0778032163726936,
    'optimal_circuit': <qiskit.circuit.library.n_local.two_local.TwoLocal object at 0x13801f5d0>,
    'optimal_parameters': {   ParameterVectorElement(θ[0]): 3.611860069224077,
                              ParameterVectorElement(θ[1]): 4.19301252102391,
                              ParameterVectorElement(θ[2]): 0.6019852007557844,
                              ParameterVectorElement(θ[3]): 5.949536809130025,
                              ParameterVectorElement(θ[4]): -3.3070470445355764,
                              ParameterVectorElement(θ[5]): 1.8462931831829383,
                              ParameterVectorElement(θ[6]): -5.466043598406607,
                              ParameterVectorElement(θ[7]): 0.6984088030463615},
    'optimal_point': array([ 3.61186007,  4.19301252,  0.6019852 ,  5.94953681, -3.30704704,
        1.84629318, -5.4660436 ,  0.6984088 ]),
    'optimal_value': -1.0778032163726936,
    'optimizer_evals': None,
    'optimizer_result': <qiskit.algorithms.optimizers.optimizer.OptimizerResult object at 0x138be0fd0>,
    'optimizer_time': 4.060570001602173}