{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Variational Quantum Eigensolver\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%pip install openfermionpyscf" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-1.1371755939165522\n" ] } ], "source": [ "import cudaq\n", "\n", "geometry = [('H', (0., 0., 0.)), ('H', (0., 0., .7474))]\n", "\n", "molecule, data = cudaq.chemistry.create_molecular_hamiltonian(\n", " geometry, 'sto-3g', 1, 0)\n", "\n", "electron_count = data.n_electrons\n", "qubit_count = 2 * data.n_orbitals\n", "\n", "kernel, angles = cudaq.make_kernel(list)\n", "qubits = kernel.qalloc(qubit_count)\n", "\n", "# Prepare the Hartree Fock State.\n", "kernel.x(qubits[0])\n", "kernel.x(qubits[1])\n", "\n", "# Adds parameterized gates based on the UCCSD ansatz.\n", "cudaq.kernels.uccsd(kernel, qubits, angles, electron_count, qubit_count)\n", "\n", "parameter_count = cudaq.kernels.uccsd_num_parameters(electron_count,\n", " qubit_count)\n", "\n", "optimizer = cudaq.optimizers.COBYLA()\n", "\n", "energy, parameters = cudaq.vqe(kernel,\n", " molecule,\n", " optimizer,\n", " parameter_count=parameter_count)\n", "\n", "print(energy)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We see that the energy has converged to the ground state minimum as expected for $H_{2}$." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 2 }