{ "cells": [ { "cell_type": "markdown", "id": "b9a59a7c", "metadata": {}, "source": [ "# Implementation of QC simulation of deutron for N=2,3 states(Hilbert space) using VQE" ] }, { "cell_type": "code", "execution_count": 12, "id": "84faec05", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pylab\n", "from qiskit import * \n", "from qiskit.utils import QuantumInstance, algorithm_globals\n", "from qiskit.algorithms import VQE, NumPyMinimumEigensolver\n", "from qiskit.algorithms.optimizers import SLSQP, SPSA, COBYLA, L_BFGS_B\n", "from qiskit.circuit.library import TwoLocal\n", "from qiskit.opflow import I, X, Z, Y\n" ] }, { "cell_type": "markdown", "id": "d061bdd5", "metadata": {}, "source": [ "## VQE for 2 qubit case( N = 2 )" ] }, { "cell_type": "code", "execution_count": 2, "id": "f6019357", "metadata": {}, "outputs": [], "source": [ "#operator\n", "H2_op = (5.906709 * I ^ I) + \\\n", " (0.218291 * Z ^ I) - \\\n", " (6.125 * I ^ Z) - \\\n", " (2.143304 * X ^ X) - \\\n", " (2.143304 * Y ^ Y)" ] }, { "cell_type": "code", "execution_count": 3, "id": "2892c0f3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reference value: -1.74916\n" ] } ], "source": [ "#Classical eigen value calculation of the operator\n", "npme = NumPyMinimumEigensolver()\n", "result = npme.compute_minimum_eigenvalue(operator=H2_op)\n", "ref_value = result.eigenvalue.real\n", "print(f'Reference value: {ref_value:.5f}')" ] }, { "cell_type": "code", "execution_count": 4, "id": "051c648f", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 206.852x144.48 with 1 Axes>" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Ansatz created with reference to paper \"Cloud Quantum Computing of an Atomic Nucleus\"\n", "from qiskit.circuit import Parameter\n", "#circuit\n", "theta = Parameter('theta')\n", "ansatz_1 = QuantumCircuit(2)\n", "ansatz_1.x(0)\n", "ansatz_1.ry(theta, 1)\n", "ansatz_1.cx(1,0)\n", "ansatz_1.draw()" ] }, { "cell_type": "code", "execution_count": 5, "id": "63cd6bc3", "metadata": {}, "outputs": [], "source": [ "# 'TwoLocal' ansatz\n", "ansatz_2 = TwoLocal(rotation_blocks='ry', entanglement_blocks='cz', reps = 1)" ] }, { "cell_type": "code", "execution_count": 14, "id": "65d1c718", "metadata": {}, "outputs": [], "source": [ "#Using different combinations of optimizers and simulators to compare for a given ansatz \n", "optimizers = [COBYLA(maxiter=80), L_BFGS_B(maxiter=60), SLSQP(maxiter=60), SPSA(maxiter = 60)]\n", "simulators = ['statevector_simulator', 'qasm_simulator']" ] }, { "cell_type": "code", "execution_count": 15, "id": "4bc94e46", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : statevector_simulator\n", "Eigen value : -1.7491611973656358\n", "Eigen Value : -1.7491611973656358\n", "Optimal Value : -1.7491611973656358\n", "Optimizer Time : 0.25501084327697754\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : qasm_simulator\n", "Eigen value : -1.460750619140625\n", "Eigen Value : -1.460750619140625\n", "Optimal Value : -1.460750619140625\n", "Optimizer Time : 2.6801795959472656\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : statevector_simulator\n", "Eigen value : -1.749161222015587\n", "Eigen Value : -1.749161222015587\n", "Optimal Value : -1.749161222015587\n", "Optimizer Time : 0.02026057243347168\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : qasm_simulator\n", "Eigen value : 11.702943310546875\n", "Eigen Value : 11.702943310546875\n", "Optimal Value : 11.702943310546875\n", "Optimizer Time : 5.285740852355957\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : statevector_simulator\n", "Eigen value : -1.7491612220155444\n", "Eigen Value : -1.7491612220155444\n", "Optimal Value : -1.7491612220155444\n", "Optimizer Time : 0.015114784240722656\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : qasm_simulator\n", "Eigen value : 12.987775839843751\n", "Eigen Value : 12.987775839843751\n", "Optimal Value : 12.987775839843751\n", "Optimizer Time : 6.357251405715942\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : statevector_simulator\n", "Eigen value : -1.7491540572006363\n", "Eigen Value : -1.7491540572006363\n", "Optimal Value : -1.7491540572006363\n", "Optimizer Time : 0.21401739120483398\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : qasm_simulator\n", "Eigen value : -1.6227434511718744\n", "Eigen Value : -1.6227434511718744\n", "Optimal Value : -1.6227434511718744\n", "Optimizer Time : 19.88024592399597\n", "\n", "\n", "\n" ] } ], "source": [ "# Looping for the above lists and printing out the results for 'ansatz_1' using VQE. \n", "for i, optimizer in enumerate(optimizers):\n", " for j, simulator in enumerate(simulators):\n", " vqe = VQE(ansatz_1, optimizer, quantum_instance=QuantumInstance(backend=Aer.get_backend(simulator)))\n", " result= vqe.compute_minimum_eigenvalue(operator=H2_op)\n", " print('For optimzer :', optimizer, 'and simulator : ', simulator, end = '\\n')\n", " print('Eigen value : ', result.eigenvalue, end ='\\n')\n", " print('Eigen Value : ', result.eigenvalue, end ='\\n')\n", " print('Optimal Value : ', result.optimal_value, end ='\\n')\n", " print('Optimizer Time : ', result.optimizer_time, end ='\\n')\n", " print(end = '\\n\\n\\n')" ] }, { "cell_type": "code", "execution_count": 16, "id": "ca44c7f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : statevector_simulator\n", "Eigen value : -1.7491606659197527\n", "Eigen Value : -1.7491606659197527\n", "Optimal Value : -1.7491606659197527\n", "Optimizer Time : 0.13420701026916504\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : qasm_simulator\n", "Eigen value : -1.41455070703125\n", "Eigen Value : -1.41455070703125\n", "Optimal Value : -1.41455070703125\n", "Optimizer Time : 5.306230545043945\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : statevector_simulator\n", "Eigen value : -1.7491612220155788\n", "Eigen Value : -1.7491612220155788\n", "Optimal Value : -1.7491612220155788\n", "Optimizer Time : 0.12924551963806152\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : qasm_simulator\n", "Eigen value : 12.012895197265625\n", "Eigen Value : 12.012895197265625\n", "Optimal Value : 12.012895197265625\n", "Optimizer Time : 17.90214252471924\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : statevector_simulator\n", "Eigen value : -1.7491609711598333\n", "Eigen Value : -1.7491609711598333\n", "Optimal Value : -1.7491609711598333\n", "Optimizer Time : 0.1167745590209961\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : qasm_simulator\n", "Eigen value : -0.3301727128906238\n", "Eigen Value : -0.3301727128906238\n", "Optimal Value : -0.3301727128906238\n", "Optimizer Time : 42.13411569595337\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : statevector_simulator\n", "Eigen value : -0.6725017559599937\n", "Eigen Value : -0.6725017559599937\n", "Optimal Value : -0.6725017559599937\n", "Optimizer Time : 0.3002512454986572\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : qasm_simulator\n", "Eigen value : -0.8840101542968736\n", "Eigen Value : -0.8840101542968736\n", "Optimal Value : -0.8840101542968736\n", "Optimizer Time : 20.793700218200684\n", "\n", "\n", "\n" ] } ], "source": [ "# Looping for the above lists and printing out the results for 'ansatz_2' using VQE. \n", "for i, optimizer in enumerate(optimizers):\n", " for j, simulator in enumerate(simulators):\n", " vqe = VQE(ansatz_2, optimizer, quantum_instance=QuantumInstance(backend=Aer.get_backend(simulator)))\n", " result= vqe.compute_minimum_eigenvalue(operator=H2_op)\n", " print('For optimzer :', optimizer, 'and simulator : ', simulator, end = '\\n')\n", " print('Eigen value : ', result.eigenvalue, end ='\\n')\n", " print('Eigen Value : ', result.eigenvalue, end ='\\n')\n", " print('Optimal Value : ', result.optimal_value, end ='\\n')\n", " print('Optimizer Time : ', result.optimizer_time, end ='\\n')\n", " print(end = '\\n\\n\\n')" ] }, { "cell_type": "markdown", "id": "3960ec62", "metadata": {}, "source": [ "## VQE for 3 qubit case(N = 3)\n" ] }, { "cell_type": "code", "execution_count": 17, "id": "8b7385d5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of qubits: 3\n" ] } ], "source": [ "#copied the whole H2_op, not efficient, find an efficient way \n", "H3_op = (5.906709 * I ^ I ^ I) + \\\n", " (0.218291 * Z ^ I ^ I) - \\\n", " (6.125 * I ^ Z ^ I) - \\\n", " (2.143304 * X ^ X ^ I) - \\\n", " (2.143304 * Y ^ Y ^ I) + \\\n", " (9.625 * I ^ I ^ I) - \\\n", " (9.625 * I ^ I ^ Z) - \\\n", " (3.913119 * I ^ X ^ X) - \\\n", " (3.913119 * I ^ Y ^ Y)\n", "print(f'Number of qubits: {H3_op.num_qubits}')" ] }, { "cell_type": "code", "execution_count": 18, "id": "a917a777", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reference value: -2.04567\n" ] } ], "source": [ "#Classical eigen value calculation of the operator\n", "npme = NumPyMinimumEigensolver()\n", "result = npme.compute_minimum_eigenvalue(operator=H3_op)\n", "ref_value = result.eigenvalue.real\n", "print(f'Reference value: {ref_value:.5f}')" ] }, { "cell_type": "code", "execution_count": 19, "id": "e1486f97", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 447.797x204.68 with 1 Axes>" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Ansatz created with reference to paper \"Cloud Quantum Computing of an Atomic Nucleus\"\n", "from qiskit.circuit import Parameter\n", "#circuit\n", "theta, eta = Parameter('theta'), Parameter('eta')\n", "ansatz_3 = QuantumCircuit(3)\n", "ansatz_3.x(0)\n", "ansatz_3.ry(eta, 1)\n", "ansatz_3.ry(theta,2)\n", "ansatz_3.cx(2,0)\n", "ansatz_3.cx(0,1)\n", "ansatz_3.ry(-eta,1)\n", "ansatz_3.cx(0,1)\n", "ansatz_3.cx(1,0)\n", "ansatz_3.draw()" ] }, { "cell_type": "code", "execution_count": 20, "id": "6bebc8bc", "metadata": {}, "outputs": [], "source": [ "#'TwoLocal' Ansatz_4 for N=3\n", "\n", "ansatz_4 = TwoLocal(rotation_blocks='ry', entanglement_blocks='cz', reps = 3)" ] }, { "cell_type": "code", "execution_count": 21, "id": "3188523a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : statevector_simulator\n", "Eigen value : -2.0456722820677826\n", "Eigen Value : -2.0456722820677826\n", "Optimal Value : -2.0456722820677826\n", "Optimizer Time : 0.1127777099609375\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : qasm_simulator\n", "Eigen value : -1.9537856347656257\n", "Eigen Value : -1.9537856347656257\n", "Optimal Value : -1.9537856347656257\n", "Optimizer Time : 5.0697972774505615\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : statevector_simulator\n", "Eigen value : -2.0456722876770885\n", "Eigen Value : -2.0456722876770885\n", "Optimal Value : -2.0456722876770885\n", "Optimizer Time : 0.10416030883789062\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : qasm_simulator\n", "Eigen value : 9.471780759765629\n", "Eigen Value : 9.471780759765629\n", "Optimal Value : 9.471780759765629\n", "Optimizer Time : 8.761289358139038\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : statevector_simulator\n", "Eigen value : -2.045672282381155\n", "Eigen Value : -2.045672282381155\n", "Optimal Value : -2.045672282381155\n", "Optimizer Time : 0.057814598083496094\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : qasm_simulator\n", "Eigen value : -1.5554408886718742\n", "Eigen Value : -1.5554408886718742\n", "Optimal Value : -1.5554408886718742\n", "Optimizer Time : 18.112356662750244\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : statevector_simulator\n", "Eigen value : -2.0444676089343097\n", "Eigen Value : -2.0444676089343097\n", "Optimal Value : -2.0444676089343097\n", "Optimizer Time : 0.3695230484008789\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : qasm_simulator\n", "Eigen value : -1.9816034707031263\n", "Eigen Value : -1.9816034707031263\n", "Optimal Value : -1.9816034707031263\n", "Optimizer Time : 21.65224862098694\n", "\n", "\n", "\n" ] } ], "source": [ "# Looping for the above lists and printing out the results for 'ansatz_3' using VQE. \n", "for i, optimizer in enumerate(optimizers):\n", " for j, simulator in enumerate(simulators):\n", " vqe = VQE(ansatz_3, optimizer, quantum_instance=QuantumInstance(backend=Aer.get_backend(simulator)))\n", " result= vqe.compute_minimum_eigenvalue(operator=H3_op)\n", " print('For optimzer :', optimizer, 'and simulator : ', simulator, end = '\\n')\n", " print('Eigen value : ', result.eigenvalue, end ='\\n')\n", " print('Eigen Value : ', result.eigenvalue, end ='\\n')\n", " print('Optimal Value : ', result.optimal_value, end ='\\n')\n", " print('Optimizer Time : ', result.optimizer_time, end ='\\n')\n", " print(end = '\\n\\n\\n')" ] }, { "cell_type": "code", "execution_count": 22, "id": "833bddb1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : statevector_simulator\n", "Eigen value : -1.8907165944510367\n", "Eigen Value : -1.8907165944510367\n", "Optimal Value : -1.8907165944510367\n", "Optimizer Time : 0.26113104820251465\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.cobyla.COBYLA object at 0x7f7ada8bd940> and simulator : qasm_simulator\n", "Eigen value : -0.5706375937499999\n", "Eigen Value : -0.5706375937499999\n", "Optimal Value : -0.5706375937499999\n", "Optimizer Time : 10.99596381187439\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : statevector_simulator\n", "Eigen value : -2.045672287676015\n", "Eigen Value : -2.045672287676015\n", "Optimal Value : -2.045672287676015\n", "Optimizer Time : 1.0897741317749023\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.l_bfgs_b.L_BFGS_B object at 0x7f7ada8bdc70> and simulator : qasm_simulator\n", "Eigen value : 18.213110884765626\n", "Eigen Value : 18.213110884765626\n", "Optimal Value : 18.213110884765626\n", "Optimizer Time : 44.72831416130066\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : statevector_simulator\n", "Eigen value : -2.045671831712609\n", "Eigen Value : -2.045671831712609\n", "Optimal Value : -2.045671831712609\n", "Optimizer Time : 0.5195217132568359\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.slsqp.SLSQP object at 0x7f7ada8bdfd0> and simulator : qasm_simulator\n", "Eigen value : 8.386823894531252\n", "Eigen Value : 8.386823894531252\n", "Optimal Value : 8.386823894531252\n", "Optimizer Time : 143.01927638053894\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : statevector_simulator\n", "Eigen value : -0.7335558381813871\n", "Eigen Value : -0.7335558381813871\n", "Optimal Value : -0.7335558381813871\n", "Optimizer Time : 0.5448689460754395\n", "\n", "\n", "\n", "For optimzer : <qiskit.algorithms.optimizers.spsa.SPSA object at 0x7f7ada8bd580> and simulator : qasm_simulator\n", "Eigen value : -1.23218553125\n", "Eigen Value : -1.23218553125\n", "Optimal Value : -1.23218553125\n", "Optimizer Time : 22.825562715530396\n", "\n", "\n", "\n" ] } ], "source": [ "# Looping for the above lists and printing out the results for 'ansatz_4' using VQE. \n", "for i, optimizer in enumerate(optimizers):\n", " for j, simulator in enumerate(simulators):\n", " vqe = VQE(ansatz_4, optimizer, quantum_instance=QuantumInstance(backend=Aer.get_backend(simulator)))\n", " result= vqe.compute_minimum_eigenvalue(operator=H3_op)\n", " print('For optimzer :', optimizer, 'and simulator : ', simulator, end = '\\n')\n", " print('Eigen value : ', result.eigenvalue, end ='\\n')\n", " print('Eigen Value : ', result.eigenvalue, end ='\\n')\n", " print('Optimal Value : ', result.optimal_value, end ='\\n')\n", " print('Optimizer Time : ', result.optimizer_time, end ='\\n')\n", " print(end = '\\n\\n\\n')" ] }, { "cell_type": "markdown", "id": "8ff62e36", "metadata": {}, "source": [ "## Observe the convergence of VQE qasm vs statevector" ] }, { "cell_type": "code", "execution_count": 29, "id": "a5535205", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "No handles with labels found to put in legend.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 864x576 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "counts = []\n", "values = []\n", "def store_intermediate_result(eval_count, parameters, mean, std):\n", " counts.append(eval_count)\n", " values.append(mean)\n", "\n", "vqe = VQE(ansatz_1, optimizer = slsqp , callback=store_intermediate_result,\n", " quantum_instance=qi_1)\n", "result = vqe.compute_minimum_eigenvalue(operator=H2_op)\n", "converge_cnts = np.empty(1000, dtype=object)\n", "converge_vals = np.empty(1000, dtype=object)\n", "converge_cnts = np.asarray(counts)\n", "converge_vals = np.asarray(values)\n", "pylab.rcParams['figure.figsize'] = (12, 8)\n", "pylab.plot(converge_cnts, converge_vals)\n", "pylab.xlabel('Eval count')\n", "pylab.ylabel('Energy')\n", "pylab.title('Energy convergence for various optimizers')\n", "pylab.legend(loc='upper right');" ] }, { "cell_type": "code", "execution_count": 30, "id": "5f4b3e11", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "No handles with labels found to put in legend.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 864x576 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "vqe = VQE(ansatz_1, optimizer = slsqp , callback=store_intermediate_result,\n", " quantum_instance=qi_4)\n", "result = vqe.compute_minimum_eigenvalue(operator=H2_op)\n", "converge_cnts = np.empty(1000, dtype=object)\n", "converge_vals = np.empty(1000, dtype=object)\n", "converge_cnts = np.asarray(counts)\n", "converge_vals = np.asarray(values)\n", "pylab.rcParams['figure.figsize'] = (12, 8)\n", "pylab.plot(converge_cnts, converge_vals)\n", "pylab.xlabel('Eval count')\n", "pylab.ylabel('Energy')\n", "pylab.title('Energy convergence for various optimizers')\n", "pylab.legend(loc='upper right');" ] }, { "cell_type": "code", "execution_count": null, "id": "a602e299", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }