{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Complexity++: N=3\n",
"\n",
"Author(s): Kyle Godbey\n",
"\n",
"Maintainer: Kyle Godbey\n",
"\n",
"Our previous example was great for introducing us to the methods and computational framework, but it's time to take another step towards something a little trickier and expand our basis by one.\n",
"\n",
"The key difference here is that now our ansatz will require another parameter, making it a 2d optimization problem. Our Hamiltonian will also change of course, meaning the bulk of the changes will be in those two cells since our VQE machinery can still handle it well. Even though most of this page will be the same as the last be sure to step through it all if only to see the nice two dimensional plot of the PES.\n",
"\n",
"Let's set up imports again, it never gets old! We will again 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": 14,
"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.\n",
"\n",
"Here is where the first big change comes in, since we now need 3 qubits. Our ansatz circuit is thus a little more complicated than before, being a little deeper and requiring another variational parameter.\n",
"\n",
"Our Hamiltonian is also changed, of course, but here we're still writing it out by hand, with automatic generation being introduced next."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" (-9.625) [Z2]\n",
"+ (-6.125) [Z1]\n",
"+ (0.21829) [Z0]\n",
"+ (15.531709) [I0]\n",
"+ (-3.91) [X1 X2]\n",
"+ (-3.91) [Y1 Y2]\n",
"+ (-2.1433) [X0 X1]\n",
"+ (-2.1433) [Y0 Y1]\n",
"(, )\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# In this case we now need 3 qubits\n",
"\n",
"dev = qml.device(\"default.qubit\", wires=3)\n",
"\n",
"# Defining our ansatz circuit for the N=3 case\n",
"\n",
"def circuit(params,wires):\n",
" t0 = params[0]\n",
" t1 = params[1]\n",
" qml.PauliX(wires=0)\n",
" qml.RY(t1, wires=1)\n",
" qml.RY(t0, wires=2)\n",
" qml.CNOT(wires=[2,0])\n",
" qml.CNOT(wires=[0,1])\n",
" qml.RY(-t1, wires=1)\n",
" qml.CNOT(wires=[0,1])\n",
" qml.CNOT(wires=[1,0])\n",
"\n",
"# And building our Hamiltonian for the N=3 case\n",
"\n",
"coeffs = [15.531709 ,-2.1433, -2.1433, 0.21829, -6.125, -9.625, -3.91, -3.91]\n",
"obs = [qml.Identity(0),qml.PauliX(0) @ qml.PauliX(1), qml.PauliY(0) @ qml.PauliY(1),qml.PauliZ(0),qml.PauliZ(1),qml.PauliZ(2),qml.PauliX(1) @ qml.PauliX(2),qml.PauliY(1) @ qml.PauliY(2)]\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": [
"Amazing! That's an even better looking Hamiltonian! The circuit is starting to look a little more involved as well.\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.\n",
"\n",
"In this case, we also need an additional parameter as mentioned when we set up our circuit."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"# Our parameter array, now our params have a friend :3\n",
"\n",
"init_params = np.array([2.5,4.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. We're still using the standard gradient descent optimizer since it worked so well before, but soon the time will come to shop around for better options."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration = 0, Energy = 22.73185830 MeV, Convergence parameter = 0.16533643 MeV\n",
"Iteration = 20, Energy = 13.86733622 MeV, Convergence parameter = 0.85950160 MeV\n",
"Iteration = 40, Energy = 0.66226895 MeV, Convergence parameter = 0.41277410 MeV\n",
"Iteration = 60, Energy = -1.94958676 MeV, Convergence parameter = 0.01827050 MeV\n",
"Iteration = 80, Energy = -2.04226133 MeV, Convergence parameter = 0.00054725 MeV\n",
"Iteration = 100, Energy = -2.04502496 MeV, Convergence parameter = 0.00001629 MeV\n",
"\n",
"Final value of the energy = -2.04510468 MeV\n",
"Number of iterations = 116\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": [
"As expected, we get closer to the true value with our expanded basis, though we're not all the way there. We still match our reference value very well, meaning we're on the right track for building out our robust nuclear VQE framework, so good job team!\n",
"\n",
"Let's plot the convergence next and see if going to 2-D hurt us any."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"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. Now that we've moved up a dimension, we'll be plotting an actual surface instead of a line, so be sure to take note of the features of the surface in parameter space.\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": 20,
"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",
"theta1 = 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_n3.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",
"cmap = plt.cm.get_cmap(\"coolwarm\")\n",
"contour_plot = plt.contourf(theta0, theta1, pes.T, cmap=cmap)\n",
"\n",
"plt.xlabel(r\"$\\theta_0$\")\n",
"plt.ylabel(r\"$\\theta_1$\")\n",
"\n",
"plt.plot(theta0[minloc[0]],theta1[minloc[1]],\"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_param_history)[::10, 1],\n",
" \".\",markersize=12,\n",
" color=gd_color,\n",
" linewidth=2,\n",
" label=\"Gradient descent\",\n",
")\n",
"plt.plot(\n",
" np.array(gd_param_history)[:, 0],\n",
" np.array(gd_param_history)[:, 1],\n",
" \"-\",\n",
" color=gd_color,\n",
" linewidth=1,\n",
")\n",
"\n",
"\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is all looking very nice, so now let's take it to the extreme! Next up we're going to programmatically generate our Hamiltonian and ansatz to an arbitrary, user-defined order. This means we'll probably take a big performance hit, but shooting for scalability is always a worthy endeavor."
]
}
],
"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
}