cuda-q-vqe
Table of Contents
VQE (Variational Quantum Eigensolver)
VQE finds ground state energies of Hamiltonians using a variational ansatz trained by a classical optimizer. Given Hamiltonian $H$, VQE finds parameters $\theta^*$ that minimize $\langle \psi(\theta) | H | \psi(\theta) \rangle$.
#include "cudaq.h" #include "cudaq/algorithm/vqe.h" #include "cudaq/optimizer.h" #include <complex> // Hamiltonian: combination of Pauli operators // H = 0.5*Z + 0.25*X cudaq::spin_op hamiltonian = 0.5 * cudaq::spin::z(0) + 0.25 * cudaq::spin::x(0); // Ansatz: parameterized circuit struct VQEAnsatz { void operator()(std::vector<double> params) __qpu__ { cudaq::qvector q(1); ry(params[0], q[0]); if (params.size() > 1) { rz(params[1], q[0]); } } }; int main() { // Initialize optimizer and parameters cudaq::optimizers::COBYLA optimizer; std::vector<double> initial_params = {0.1, 0.1}; // Run VQE auto [params_opt, energy] = cudaq::vqe<VQEAnsatz>( hamiltonian, // Hamiltonian to minimize optimizer, // Classical optimizer initial_params, // Initial parameters 100 // Max iterations ); printf("Optimal energy: %.6f\n", energy); printf("Optimal params: "); for (auto p : params_opt) { printf("%.3f ", p); } printf("\n"); return 0; }
VQE is practical for near-term quantum hardware: it requires only measuring expectation values, not full state tomography. Useful for quantum chemistry (molecular ground states) and optimization.
cuda-q-vqe.md · Last modified: by 127.0.0.1
