{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Subspace-Search Variational Quantum Eigensolver\n", "As explained in section 5-1, the variational quantum eigensolver (VQE) is an algorithm for searching the ground state of a quantum system. The ground state is an important state that determines the properties of various substances, but there are also phenomena such as photoresponse that are difficult to describe without the excited states.\n", "\n", "Therefore, algorithms for generating a wave function of an excited state on a quantum computer have been actively studied. Among them, here a new method proposed in 2018, Subspace-Search VQE (SSVQE) [1] is introduced.\n", "\n", "This notebook is translated from https://dojo.qulacs.org/ja/latest/notebooks/6.3_subspace_search_VQE.html\n", "\n", "## Algorithnm\n", "The procedures for SSVQE is as following:\n", "\n", "1. Prepare $k$ initial states $\\{\\left|\\varphi_i\\right>\\}_{i=0}^{k-1}$ orthogonal to each other.\n", "2. For each of them, operate an appropriate quantum circuit $U(\\theta)$ to generate a trial state. (Note: $\\left|\\psi_i(\\theta)\\right>=U(\\theta)\\left|\\varphi_i\\right>$)\n", "3. Adjust $\\theta$ to minimize cost function $L(\\theta)=\\sum_i w_i \\left<\\psi_i(\\theta)\\left|H\\right|\\psi_i(\\theta)\\right>$. Here when $w_i$ is positive and $i>j$, make sure $w_i$ becomes the $i$th excited state at converged $\\theta$. This is because when the $i$th excited state of the Hamiltonian is $\\left|E_i\\right>$, the global minimum of the cost function is $\\left|\\psi_i\\right>=\\left|E_i\\right>$. (Refer to the original paper [1] for details)\n", "\n", "The following shows an example of simulating SSVQE using Qulacs.\n", "\n", "## Implementation of SSVQE\n", "Implement SSVQE to search ground state and first excited state of hydrogen molecule. When hydrogen molecule is treated with sto-3g minimal basis set, 4 qubit Hamiltonian can be obtained. Therefore, two initial states, $\\left|0000\\right>$ and $\\left|0001\\right>$, which are flipped by one qubit, are used as orthogonal initial states required for SSVQE.\n", "\n", "* Note for those who are familiar with quantum chemistry: The first excited state here is the first excited state of the Hamiltonian of a hydrogen molecule without considering the number of electrons, and in chemistry terms, the ground state of a hydrogen molecular ion.\n", "\n", "### Create Hamiltonian\n", "Follow the same procedure as explained before to calculate Hamiltonian using PySCF + OpenFermion. However, the excited state is considered in SSVQE, so `scipy.sparse.linalg.eigsh` is used to obtain the exact solution of excited state." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "## Please execute if various libraries are not installed\n", "## When use Google Colaboratory, please ignore 'You must restart the runtime in order to use newly installed versions'.\n", "## Crash when restarting runtime.\n", "!pip install qulacs pyscf openfermion openfermionpyscf" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import qulacs\n", "from openfermion.transforms import get_fermion_operator, jordan_wigner\n", "from openfermion.transforms import get_sparse_operator\n", "from openfermion.hamiltonians import MolecularData\n", "from openfermionpyscf import run_pyscf\n", "from scipy.optimize import minimize\n", "from pyscf import fci\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "basis = \"sto-3g\"\n", "multiplicity = 1\n", "charge = 0\n", "distance = 0.977\n", "geometry = [[\"H\", [0,0,0]],[\"H\", [0,0,distance]]]\n", "description = \"tmp\"\n", "molecule = MolecularData(geometry, basis, multiplicity, charge, description)\n", "molecule = run_pyscf(molecule,run_scf=1,run_fci=1)\n", "n_qubit = molecule.n_qubits\n", "n_electron = molecule.n_electrons\n", "fermionic_hamiltonian = get_fermion_operator(molecule.get_molecular_hamiltonian())\n", "jw_hamiltonian = jordan_wigner(fermionic_hamiltonian)\n", "hamiltonian_matrix = get_sparse_operator(jw_hamiltonian)\n", "from scipy.sparse.linalg import eigsh\n", "eigval, eigvec = eigsh(hamiltonian_matrix, k=2, which=\"SA\")\n", "from qulacs import Observable\n", "from qulacs.observable import create_observable_from_openfermion_text\n", "qulacs_hamiltonian = create_observable_from_openfermion_text(str(jw_hamiltonian))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Construct ansatz\n", "Create quantum circuit on Qulacs. Here, the quantum circuit is modeled after the experiments with superconducting qubits (A. Kandala et. al. , “Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets“, Nature **549**, 242–246)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from qulacs import QuantumState, QuantumCircuit\n", "from qulacs.gate import CZ, RY, RZ, merge\n", "\n", "depth = n_qubit" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def he_ansatz_circuit(n_qubit, depth, theta_list):\n", " \"\"\"he_ansatz_circuit\n", " Returns hardware efficient ansatz circuit.\n", "\n", " Args:\n", " n_qubit (:class:`int`):\n", " the number of qubit used (equivalent to the number of fermionic modes)\n", " depth (:class:`int`):\n", " depth of the circuit.\n", " theta_list (:class:`numpy.ndarray`):\n", " rotation angles.\n", " Returns:\n", " :class:`qulacs.QuantumCircuit`\n", " \"\"\"\n", " circuit = QuantumCircuit(n_qubit)\n", " circuit.add_gate(RY(0, theta_list[-2]))\n", " circuit.add_gate(RZ(0, theta_list[-1]))\n", " for d in range(depth):\n", " for i in range(n_qubit):\n", " circuit.add_gate(merge(RY(i, theta_list[2*i+2*n_qubit*d]), RZ(i, theta_list[2*i+1+2*n_qubit*d])))\n", " for i in range(n_qubit//2):\n", " circuit.add_gate(CZ(2*i, 2*i+1))\n", " for i in range(n_qubit//2-1):\n", " circuit.add_gate(CZ(2*i+1, 2*i+2))\n", " for i in range(n_qubit):\n", " circuit.add_gate(merge(RY(i, theta_list[2*i+2*n_qubit*depth]), RZ(i, theta_list[2*i+1+2*n_qubit*depth])))\n", "\n", " return circuit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define cost function of SSVQE" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.21631044919594045" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def get_exp(state, theta_list):\n", " circuit = he_ansatz_circuit(n_qubit, depth, theta_list) #Create quantum circuit\n", " circuit.update_quantum_state(state) #Operate on quantum state\n", " return qulacs_hamiltonian.get_expectation_value(state)\n", "\n", "def cost(theta_list):\n", " state0 = QuantumState(n_qubit) #Prepare |00000>\n", " state1 = QuantumState(n_qubit); state1.set_computational_basis(1) #Prepare |00001>\n", " return get_exp(state0, theta_list)+0.5*get_exp(state1, theta_list)\n", "\n", "init_theta_list = np.random.random(2*n_qubit*(depth+1)+2)*1e-1\n", "cost(init_theta_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Run SSVQE\n", "Now everthing is prepared, run SSVQE. For optimization, the BFGS method implemented in scipy is applied, and initial parameters are randomly selected. This process should end in tens of seconds." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "exp_history0 = []\n", "exp_history1 = []\n", "def callback(theta_list):\n", " state0 = QuantumState(n_qubit) #Prepare |0000>\n", " state1 = QuantumState(n_qubit); state1.set_computational_basis(1) #Prepare |0001>\n", " exp_history0.append(get_exp(state0, theta_list))\n", " exp_history1.append(get_exp(state1, theta_list))\n", "init_theta_list = np.random.random(2*n_qubit*(depth+1)+2)*1e-1\n", "method = \"BFGS\"\n", "options = {\"disp\": True, \"maxiter\": 50, \"gtol\": 1e-6}\n", "opt = minimize(cost, init_theta_list,\n", " method=method,\n", " callback=callback)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results can be plotted to see that they converge to the correct solution." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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du3aq0uWLPGwtbWtWLBgQZrhWFdX1wr8f3v3HR5VmfZx/Hund0LoCSBIVUSkuYqr4tpx7YuKyi66dnctq6+K6Iq6dl11V13LKohdLOxiwbWLoiIgTaX3UAOkkj7P+8eZwWQyCRmYJCT+Ptc112TO85yTe86cwLnnacCECRPabN++Pfqss87a2rlz57Ls7OzYl156qd2pp57a55133ll8wgknFALce++9a2+77bas7du3x9x1110754kfMGBAMcD06dOTRowY0Ts1NbVy9OjROVlZWWXz5s1LmjBhQvuZM2emfPPNN4vj4+PrbJ159dVXW/3+97/v0bVr19LLLrtsU0ZGRsU333yT8uCDD2bNnz8/6f333682i+eOHTuijjjiiD4DBw4sGjduXPbKlSvjn3vuufannXZazyVLlvwQE+P9WZaWltrw4cN7ff/99ymnn3761osvvnhzXl5e9AsvvND2mGOO6fvBBx8sPuKII6qN533iiSc65Obmxpx//vlbOnbsWN61a9cygGeeeab1pZdeum+XLl1K//KXv6yPiYlxr776atsPPvig2tibUaNG5V533XXlL7zwQtvrrruu2mr1H3/8cfLy5csTbrzxxuzd7qLonKvXA28cwoF1lB8ItK7v8VrKY/Dgwa7BPDfCuWeP936+p6vzvXOdG3jH/9wDk95y7rY05964qOF+t4hIAwJmuT34t3fu3LmrnHOzQj2GDh1asKvHrbfeurZq/UcffXSlc27W+vXr59Zn/+D6L7300lLn3Ky5c+cuCK5bW5z1fUydOnUxXvffkI/hw4fnVq3/008/zU9JSanYf//9i4qLi2ePHDlyC+ACMQYeBQUFsysrK2v8vlNPPXVrVFSUW7Vq1bzAtnHjxq0F3JVXXrkhuH5FRcXOn6+99tr1gFu0aNH83Xmvn3/++Y+Au/baa9eHKk9LS6s44ogjcnd1HMCdccYZOfX9vc8///wywD3wwAPVrquysrJZ/fr1K8rMzCyteq7qe47PO++8zaGOW5/zVte5HDNmzKb4+HjfjBkzfqi6ffHixfOTk5Mrq773K6+8cgPgHnnkkZVV615wwQWbAFefa3S//fYr2nfffYt3VS8zM7O0tuPl5eXNCd62Zs2auenp6eXBn+nQoUMLMjMzS0Mdp3fv3ju6detWvG3btmrHC3yGgb/N2h5FRUWz27Rp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VFRUUPXzX716dWzwN/t18Xd7yR0zZkwuwL333ttu7NixXR977LG2d95556a69p06dWrali1bYh955JFVV199dXAXqKzg+rW99/32268UvBv3+rauBQt8g5+cnOzb3WPUpmvXriXbt2+POfnkkwv2pIWrR48eZQCLFy+u8be4aNGikLNVnXvuubnXX399xYQJE9oOHDiweM6cOSmXX375xtjYOhtYdimcMQrfAn8wsxpZn3/b74GZexRNGMzsWrwb+jzgauApvEXfPjOz5HoeZiLwOLASGAvcAmzBmxb2hQiHHL6dicLX3nNaJlnpibROimVBdkRbMkVEpIW4//772/3vf/9Lv+qqqzbcfPPNW2677ba1s2bNSrnxxhs7Va0XHR3tgrsb5efnRz3xxBMdgo85cuTIrfn5+dE33XRTp+Cyqi0PKSkpPoAtW7aE80VkvVRUVBC8SnFUVBQDBw7cAd5MQIHtSUlJvu3bt9c7htGjR2/1+XxcddVVNW5aAdauXVvtWPU5x9HR0Zxyyinbli9fnvDwww/XmLpyVy02tZ3L6OhoTjvttG0LFixInjBhQshvDLOzs3fuc8IJJ+Ru3bo15vHHH6/WX7nqNJy7Emq2raFDh+6A6l3UkpOTK3Nzc2vcIQe+kQ++3t566620+fPn17hnS05O9uXn50cHn6Nhw4bt6NWrV/GLL77YLtQ0sOXl5WzatKnOO/TTTz89PyMjo+LRRx/tGKpuYWGhbd++fbemCDrnnHO25uTkxN5+++01/oag5nVUmyOOOKKoXbt25a+//nrbLVu27IwxLy8vauLEiSHnxo+Pj3dnnXVWzpdfftnqlltuyQS4/PLL96jbEYTXovAg8BEww8xu5+dVmA/CW5StM3DRngZUH2bWFvgb8B1wtHOu0r/9O7yxElcDd+/iGJnAucAU59zvqmx/HPgCGGlmlznnduvbiYhIy/JWX96+CpLaQGwiBhyQ1YoF2flNFpaIiDS+77//PumJJ57ICFV23nnn5bZq1cr33XffJdx2222dhwwZUhgYeDx27NgtH3/8cdqjjz6aedxxxxUcf/zxhQAnnnji9ldeeaXdSSedtO9vfvOb/E2bNsW+/PLLbdPT02ssojBu3LjN77//fvo//vGPTnPmzEk++uij8xMSEnw//PBD4vLlyxNmzJixBOCwww4rBLjhhhuyzjnnnG0JCQm+gQMHFg8dOrRGX+uArVu3Rt93333twRsHADBjxoyUG264oRPAmWeemfurX/2qODc3N7pz584Djj766NwBAwbsaN++ffnKlSvjJ02a1C4tLa1y5MiRO79BGzBgQOHXX3+dOm7cuI5du3YtMzNX21SkABdccMH29957b+ukSZPaL1iwIPn444/Pbdu2bcW6deviZs6cmbx69eqEdevWLQAI5xz//e9/z/7qq69S//KXv+zz0UcfpQ0bNqzQebN2JVVUVNiUKVNW1hZTXefy4Ycfzv7uu+9S/vjHP+775ptvbj/44IML4+Li3OrVq+M+/vjjVv3799/x5ptvrgIYP378xrfffjvjuuuu6zZ79uzkfv36FX/xxRepc+bMSQ71WYey//779xs4cGDRkCFDijIzM8s2bNgQ+8ILL7SLjY11559//s5FAAcNGlT0+uuvt7366qsz99tvv5KoqCh3zjnn5B177LGFbdu2Lf/rX//aZdWqVfGdO3cumzt3btLbb7/dplevXsVLly6ttsbA0KFDCz/99NNWf/jDH7oOGzasMDo62p100kkFWVlZFRMnTlx54okn9hkyZEi/wNSwO3bsiFq2bFnCtGnT0m+99dbsulaGTktL8z399NMrzzvvvJ59+/Y94Jxzzsnp2bNnaW5ubvTixYsTpk2b1vrll19e/tvf/jbs1oZx48Zt/uSTT9LuvPPOzp9//nnqkUceWZCWlla5Zs2auC+++CItPj7e9+233y7Z1XFiY2O544471l1++eXdhwwZst95552XExMT41555ZW26enpFdnZ2XGhxnVceeWVOU899VTHd955J2Po0KGF/fv33/OePqGmQqrtAVwKlACVQY8S4LJwjrUnD7yExAGjQ5Qtx1vvYVfH6OM/xuMhyl4HKoDEXR2nQadHdc65v/fzpkL912E7N933/k+ux9h3XXFZRcP+bhGRBkIDTo/a0h67mh4VcAsWLFhQUFAwu2fPnsWtWrWqWLZsWbXpEDdu3Ph9hw4dyjp16lQamG4xPz9/ziWXXLKxU6dOpXFxcb6uXbuWjB07dt2UKVMWE2KayaKiotk33HDDuh49ehTHxcX5UlJSKvr161d0zz33rK5ab9y4cWuzsrJKo6OjfdQx1WngsWjRovl1vbdAHMXFxbOvuOKKDQcccEBRq1atKmJjY32ZmZmlv/vd73Lmz5+/oOox58+fv2DYsGF5ycnJlYHj1OdcP/bYYysGDRpUkJycXBkXF+fLzMwsPfbYY7c//fTTy53zppQN5xw752Zt2bLl+0svvXRjly5dSmJiYnytWrWqGDRoUMEzzzyzPFCntqlQ6zqX+fn5c66//vrsXr167YiPj/clJSVVdu/evfjss8/e8vHHH/9U9ThLliyZf/zxx29LTk6uTE5OrjzqqKNyFy5cuKCu6UyrPsaOHbtu8ODBBa1bty6PjY31dejQoeyEE07YNn369B+r1lu3bt3c4447bntaWlqFv/vQzvf0zTff/PDrX/86LzU1tSIpKaly6NChBe+///6iM844Iyf488nPz58zcuTILRkZGeVRUVGOoClLFy9ePH/UqFGbMzMzSwPndP/99y+64oorNixdunSXU4E652bNnDlz4SmnnLK1Xbt2ZTExMb6MjIzygw46qPD666/P3rhx487Pr7apWgPXbfD1XVZWNuvOO+9c069fv6KEhITKhISEyq5du5acfPLJW998882d06YG/q7rms712WefXd6rV68dsbGxvo4dO5b+5S9/yQ5MA1v1+qn6OOSQQ/IB99hjj60I59+Z2qZHNedCdgOrlZllAWcBPf2blgBvOOeya98rsszsKeASoJdzbllQ2UvAKCDNOVdYxzFigEVAFvBnvNaSaOBUvKlg73HO3bqrWIYMGeJmzWrABaknjIDVX0HvE+Dc1wB4f8EGLn9pDlOuPIyDuqTv4gAiInsfM5vtnBuyu/vPmzdv1YABA/a4WV1EpDm57bbbOtxxxx2dP/roo0VHH310UXD5kUce2fP7779PWb9+/byUlJR63+TPmzev7YABA7oFbw+7D6E/IXg43P0iLDC7UqjkJBswf51am3eccxVmdgreOIdnqhSVA392zv2rtn3N7BK8RIWuXbuGF3m40rt6iULazxNKHZDlDWhekJ2nREFERESkhSkpKbGYmBhXdQB6Xl5e1LPPPts+PT294rDDDqsxY9PChQvjv/zyy1bnn3/+5nCShLqEnSj4BwofCnQAPnLO1TnSfRfHSgdCT2Ib2j+cc9uAwAwCofpeBfpB1meWgWJgKd5Yh0/8+/wBeMzMipxzk0Lt5Jx7GngavBaF+oe/GwIDmqskCp1bJ5IUF82KLbU2mIiIiIhIM/XTTz/F//a3v+112mmnbeve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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.rcParams[\"font.size\"] = 18\n", "plt.plot(exp_history0, label=r\"input $|0000\\rangle$\")\n", "plt.plot(exp_history1, label=r\"input $|0001\\rangle$\")\n", "plt.plot(range(len(exp_history0)), [molecule.fci_energy]*len(exp_history0), linestyle=\"dashed\", color=\"black\", label=\"Exact ground state energy\")\n", "plt.plot(range(len(exp_history1)), [eigval[1]]*len(exp_history1), linestyle=\"-.\", color=\"black\", label=\"Exact 1st excited state energy\")\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Energy expectation value\")\n", "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0, fontsize=18)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reference\n", "[1] K. M Nakanishi, K. Mitarai, and K. Fujii, “Subspace-search variational quantum eigensolver for excited states”, Phys. Rev. Research 1, 033062 (2019), https://arxiv.org/abs/1810.09434\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }