1

I am doing VQE using Qiskit Nature. I want to see how my final quantum circuit looks like. How to print the whole quantum circuit (like an ansatz)?

Farida
  • 11
  • 2

1 Answers1

1

You can use the construct_circuit method for that. E.g. (assuming you have the latest Qiskit release installed)

from qiskit import Aer
from qiskit.algorithms import VQE
from qiskit.algorithms.optimizers import SPSA
from qiskit.circuit.library import EfficientSU2
from qiskit.opflow import X, Y, Z

backend = Aer.get_backend('qasm_simulator')
hamiltonian = X ^ Y ^ Z
ansatz = EfficientSU2(3)
optimizer = SPSA()
parameters = list(ansatz.parameters)

vqe = VQE(ansatz, optimizer, quantum_instance=backend)
circuits = vqe.construct_circuit(parameters, hamiltonian)

for circuit in circuits:
    print(circuit.draw())

which prints

      ┌──────────┐┌───────────┐          ┌───────────┐┌───────────┐                       ┌───────────┐┌───────────┐                       ┌───────────┐┌───────────┐
q_0: ─┤ RY(θ[0]) ├┤ RZ(θ[17]) ├──■────■──┤ RY(θ[20]) ├┤ RZ(θ[23]) ├───────────────■────■──┤ RY(θ[17]) ├┤ RZ(θ[20]) ├───────────────■────■──┤ RY(θ[23]) ├┤ RZ(θ[13]) ├─────────────────────────
     ┌┴──────────┤├───────────┤┌─┴─┐  │  └───────────┘├───────────┤┌───────────┐┌─┴─┐  │  └───────────┘├───────────┤┌───────────┐┌─┴─┐  │  └───────────┘├───────────┤┌───────────┐┌─────┐┌───┐
q_1: ┤ RY(θ[11]) ├┤ RZ(θ[18]) ├┤ X ├──┼────────■──────┤ RY(θ[21]) ├┤ RZ(θ[11]) ├┤ X ├──┼────────■──────┤ RY(θ[18]) ├┤ RZ(θ[21]) ├┤ X ├──┼────────■──────┤ RY(θ[10]) ├┤ RZ(θ[14]) ├┤ SDG ├┤ H ├
     ├───────────┤├───────────┤└───┘┌─┴─┐    ┌─┴─┐    ├───────────┤├───────────┤└───┘┌─┴─┐    ┌─┴─┐    ├───────────┤├───────────┤└───┘┌─┴─┐    ┌─┴─┐    ├───────────┤├───────────┤└┬───┬┘└───┘
q_2: ┤ RY(θ[16]) ├┤ RZ(θ[19]) ├─────┤ X ├────┤ X ├────┤ RY(θ[22]) ├┤ RZ(θ[16]) ├─────┤ X ├────┤ X ├────┤ RY(θ[19]) ├┤ RZ(θ[22]) ├─────┤ X ├────┤ X ├────┤ RY(θ[12]) ├┤ RZ(θ[15]) ├─┤ H ├──────
     └───────────┘└───────────┘     └───┘    └───┘    └───────────┘└───────────┘     └───┘    └───┘    └───────────┘└───────────┘     └───┘    └───┘    └───────────┘└───────────┘ └───┘

which is the ansatz plus Basis transformation gates (H and Sdg at the very end) to map from the Pauli-X and -Y basis to the computational basis.

Cryoris
  • 319
  • 1
  • 2
  • 10