{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# First Steps: N=2\n",
"\n",
"Author(s): Kyle Godbey\n",
"\n",
"Maintainer: Kyle Godbey\n",
"\n",
"With the background of the previous page, we now begin our quantum computing journey! This entry will walk you through how to set up our Hamiltonian for the deuteron defined previously as well as an appropriate ansatz for the problem. \n",
"\n",
"Now let's set up our imports! For this first example and the next we will just use [pennylane](https://pennylane.ai/) and define the circuits and Hamiltonian directly in the form from [Cloud Quantum Computing of an Atomic Nucleus](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.120.210501)."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"from pennylane import numpy as np\n",
"import pennylane as qml\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"plt.style.use(['science','notebook'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we will define our 'device' (a simulator in this case) as well as our ansatz and Hamiltonian."
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" (-6.125) [Z1]\n",
"+ (0.218291) [Z0]\n",
"+ (5.906709) [I0]\n",
"+ (-2.143304) [X0 X1]\n",
"+ (-2.143304) [Y0 Y1]\n",
"(, )\n"
]
},
{
"data": {
"image/png": "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XcNwQIqVkZGB7OxsWPZv7LU7wNYdn2X/RmRnZyMjI0PukshPsD/YH93BGy+RomVmZgIAsrKy4DHXInLKfGhjkmSuyjecNWVo+Lbl02F2dnbbe0HUiv3B/ugqzhxQQMjNzcU9985H2dEjCE2fhYjLMqHSB8tdVo/w2C1o3JoDc/4q9E8egLeXvslPRHRe7A/2x4ViOKCAYbPZsGTJEjzz7CK4PB4YBqYjaOhEBKWMh0oXJHd53eJxWGE9uA3WA5thO5QPjUqFvyx8AgsWLOA5VOoU9gddCIYDCjjl5eXIzs7GRzkrsGvHdqi1euiNyUB4HLRRCdBEJUAdGg1Bo4Og1gKCIHfJLUQRotsJ0eWA21wHV31Fyx32miphNx2B22nHmLHjMC9zDrKysng5FnUJ+4M6g+GAAlppaSk+//xzFBQU4EBRMYqLS2CqOi53WZ1ijI1HaupgDB2SirS0NMycORODBg2SuywKIOwPOheGA+p1mpubYTKZYLPZYLPZ4C8tIAgCDAYDDAYDjEYjQkJC5C6JeiH2BwEMB0RERHQGrnNAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTBcEBEREQSDAdEREQkwXBAREREEgwHREREJMFwQERERBIMB0RERCTx/wEURAG3HoTDhwAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# In this case we just need 2 qubits\n",
"\n",
"dev = qml.device(\"default.qubit\", wires=2)\n",
"\n",
"# Defining our ansatz circuit for the N=2 case\n",
"\n",
"def circuit(params,wires):\n",
" t0 = params[0]\n",
" qml.PauliX(wires=0)\n",
" qml.RY(t0, wires=1)\n",
" qml.CNOT(wires=[1,0])\n",
"\n",
"# And building our Hamiltonian for the N=2 case\n",
"\n",
"coeffs = [5.906709, 0.218291, -6.125, -2.143304, -2.143304]\n",
"obs = [qml.Identity(0), qml.PauliZ(0), qml.PauliZ(1), qml.PauliX(0) @ qml.PauliX(1), qml.PauliY(0) @ qml.PauliY(1)]\n",
"\n",
"H = qml.Hamiltonian(coeffs, obs)\n",
"cost_fn = qml.ExpvalCost(circuit, H, dev)\n",
"\n",
"# Let's print it out\n",
"\n",
"print(H)\n",
"\n",
"@qml.qnode(dev)\n",
"def draw_circuit(params):\n",
" circuit(params,wires=dev.wires)\n",
" return qml.expval(H)\n",
"\n",
"qml.drawer.use_style('default')\n",
"print(qml.draw_mpl(draw_circuit)(init_params))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! That's a good looking Hamiltonian, even if it was a bit tedious to write it out. We'll find out a more programmatic way to do it later, but for now let's move on to the fun stuff.\n",
"\n",
"Now we'll set up what we'll need for the VQE procedure; namely some initial parameters and convergence info. You can select the initial guess randomly, but in this case we'll set it manually for repeatability."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"# Our parameter array, only one lonely element in this case :c\n",
"\n",
"init_params = np.array([2.5,])\n",
"\n",
"# Convergence information and step size\n",
"\n",
"max_iterations = 500\n",
"conv_tol = 1e-06\n",
"step_size = 0.01"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, the VQE block. A lot of the stuff in this block is bookkeeping -- the real magic happens in the `opt` object that contains an built-in optimizer. You can have a look at the documentation and change this if you like, but we'll also have a look at this later."
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration = 0, Energy = 7.89426366 MeV, Convergence parameter = 0.52891694 MeV\n",
"Iteration = 20, Energy = -0.66950925 MeV, Convergence parameter = 0.17005461 MeV\n",
"Iteration = 40, Energy = -1.70101182 MeV, Convergence parameter = 0.00828148 MeV\n",
"Iteration = 60, Energy = -1.74716419 MeV, Convergence parameter = 0.00034480 MeV\n",
"Iteration = 80, Energy = -1.74907865 MeV, Convergence parameter = 0.00001426 MeV\n",
"\n",
"Final value of the energy = -1.74915572 MeV\n",
"Number of iterations = 97\n"
]
}
],
"source": [
"opt = qml.GradientDescentOptimizer(stepsize=step_size)\n",
"\n",
"params = init_params\n",
"\n",
"gd_param_history = [params]\n",
"gd_cost_history = []\n",
"\n",
"for n in range(max_iterations):\n",
"\n",
" # Take a step in parameter space and record your energy\n",
" params, prev_energy = opt.step_and_cost(cost_fn, params)\n",
"\n",
" # This keeps track of our energy for plotting at comparisons\n",
" gd_param_history.append(params)\n",
" gd_cost_history.append(prev_energy)\n",
"\n",
" # Here we see what the energy of our system is with the new parameters\n",
" energy = cost_fn(params)\n",
"\n",
" # Calculate difference between new and old energies\n",
" conv = np.abs(energy - prev_energy)\n",
"\n",
" if n % 20 == 0:\n",
" print(\n",
" \"Iteration = {:}, Energy = {:.8f} MeV, Convergence parameter = {\"\n",
" \":.8f} MeV\".format(n, energy, conv)\n",
" )\n",
"\n",
" if conv <= conv_tol:\n",
" break\n",
"\n",
"print()\n",
"print(\"Final value of the energy = {:.8f} MeV\".format(energy))\n",
"print(\"Number of iterations = \", n)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Not too bad! Well, it's a far cry from the true, real-life binding energy of the deuteron, but it's a start! You can have a look at the paper linked above and find some tricks to extrapolate to the true value. \n",
"\n",
"But just looking at the VQE result, if you compare this to the value reported in the paper you'll see that we match their value very well, which is encouraging.\n",
"\n",
"Let's plot the convergence next."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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xhtvwN3dHbGxsSgtLUVqaipu3ryJyZMnqz978eLFaNKkCcLDw/Hf//4XN2/exIgRIx76vUSkiUd0iCxEkyZNkJqaikaNGuH5559HWFgYXn31VXTr1g379++Hl5eXxvZTpkxBamoqIiMj8eGHH2LBggXo2bOn+v358+dj69atCAoKQmRkpMFyJycnIysrCy1atIC/v7962bdvH+rXr49ly5bhp59+QosWLRAfH49PPvlE4+cbNGiADz74ANOnT4evry8mTJhQ5fckJiaibdu2eOqppxAdHQ0hBH777bf7TlfpwsHBATNmzEDr1q3x+OOPw9bWFqtWrQIgjatZuHAhli5dioCAAHWhGjVqFL7++mskJiYiIiICXbp0wbJly+47ohMfH4/4+Hi0adMGe/bswYYNG1CvXr2Hfi8RaVIIXUYvEpFFaNiwISZNmsQpEkzQ+fPnERoairS0tFpPt0FEPKJDREREFoxFh4iIiCwWT10RERGRxeIRHSIiIrJYLDpERERksVh0iIiIyGKx6BAREZHFYtEhIiIii8WiQ0RERBaLRYeIiIgsFosOERERWaz/A60wxlbZGNGKAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(gd_cost_history, \"b\", label=\"Gradient descent\")\n",
"\n",
"plt.ylabel(\"Energy (MeV)\")\n",
"plt.xlabel(\"Optimization steps\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we can plot how we trace the potential energy surface (PES) as we find a solution. For this 1-D case it's not as interesting, but it might hint at how you can improve performance.\n",
"\n",
"If you're running this yourself, you can either generate the surface yourself or put this code in a cell to download it locally:\n",
"\n",
"`!wget https://github.com/kylegodbey/nuclear-quantum-computing/raw/main/nuclear-qc/vqe/deut_pes_n2.npy`"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Discretize the parameter space\n",
"theta0 = np.linspace(0.0, 2.0 * np.pi, 100)\n",
"\n",
"# Load energy value at each point in parameter space\n",
"pes = np.load(\"deut_pes_n2.npy\")\n",
"\n",
"# Get the minimum of the PES\n",
"minloc=np.unravel_index(pes.argmin(),pes.shape)\n",
"\n",
"# Plot energy landscape\n",
"fig, axes = plt.subplots(figsize=(6, 6))\n",
"\n",
"plt.plot(theta0,pes[:,0],label=\"Underlying Surface (MeV)\")\n",
"\n",
"plt.xlabel(r\"$\\theta_0$\")\n",
"plt.ylabel(r\"Energy (MeV)\")\n",
"plt.plot(theta0[minloc[0]],cost_fn([theta0[minloc[0]],]),\"r*\",markersize=20,label=\"Minimum\")\n",
"\n",
"# Plot optimization path for gradient descent. Plot every 10th point.\n",
"gd_color = \"g\"\n",
"\n",
"plt.plot(\n",
" np.array(gd_param_history)[::10, 0],\n",
" np.array(gd_cost_history)[::10],\n",
" \".\",markersize=12,\n",
" color=gd_color,\n",
" linewidth=2,\n",
" label=\"Gradient descent\",\n",
")\n",
"plt.plot(\n",
" np.array(gd_param_history)[:-1, 0],\n",
" np.array(gd_cost_history)[:],\n",
" \"-\",\n",
" color=gd_color,\n",
" linewidth=1,\n",
")\n",
"\n",
"\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Perfect! Now that you've got this working, you can go back and play around with the parameters of the VQE, potential, initial guesses, etc. and see how your convergence changes! When it comes to running on real hardware for serious problems, one key goal is to get the number of evaluations as low as possible. This is an even bigger deal for larger circuits, like the N=3 case we'll look at next!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.10.4 64-bit",
"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.4"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}