{ "cells": [ { "cell_type": "markdown", "id": "ee48a724-1651-4812-ac4a-866f76187e2d", "metadata": {}, "source": [ "# 12 - Quantum Random Access Optimization\n", "### Modified for use with Quantum Rings toolkit for Qiskit 2.x" ] }, { "cell_type": "code", "execution_count": 1, "id": "a4806fff-6f31-48ef-8d47-231ce429b617", "metadata": {}, "outputs": [], "source": [ "# This code is from the tutorial at:\n", "# https://qiskit-community.github.io/qiskit-optimization/tutorials/12_quantum_random_access_optimizer.html\n", "\n", "# Modified for use with Quantum Rings SDK." ] }, { "cell_type": "code", "execution_count": 2, "id": "bc402700-cd83-45e0-b6a4-292a4d75a716", "metadata": {}, "outputs": [], "source": [ "#\n", "# Setup your account\n", "# You can also save your account locally using the class method QrRuntimeService.save_account(...) and\n", "# invoke the QrRuntimeService class constructor without any arguments.\n", "#\n", "\n", "import os\n", "my_token = os.environ[\"QR_TOKEN\"]\n", "my_name = os.environ[\"QR_ACCOUNT\"]\n", "\n", "\n", "#\n", "# Set the backend of your choice, depending upon the task and your hardware configuration.\n", "# See SDK documentation for additional help.\n", "#\n", "\n", "my_backend = \"scarlet_quantum_rings\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "c3a92c9a-c6a7-431f-b442-4b572faf2747", "metadata": {}, "outputs": [], "source": [ "# Import from Quantum Rings Toolkit\n", "from quantumrings.toolkit.qiskit import QrRuntimeService\n", "\n", "# Acquire Quantum Rings backend\n", "qr_services = QrRuntimeService(name = my_name, token = my_token)\n", "qr_backend = qr_services.backend(name = my_backend)" ] }, { "cell_type": "markdown", "id": "5420a057-d10b-4b2b-ab5b-76c8166b4e1d", "metadata": {}, "source": [ "# Set up a combinatorial optimization problem" ] }, { "cell_type": "code", "execution_count": 4, "id": "28cd4e3e-275e-4b00-80f1-648e94b150d1", "metadata": {}, "outputs": [], "source": [ "from qiskit_optimization.algorithms.qrao import (\n", " QuantumRandomAccessEncoding,\n", " QuantumRandomAccessOptimizer,\n", " SemideterministicRounding,\n", ")" ] }, { "cell_type": "code", "execution_count": 5, "id": "dc453b99-058d-4931-8f78-17b648bcb8a1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem name: Max-cut\n", "\n", "Maximize\n", " -2*x_0*x_1 - 2*x_0*x_3 - 2*x_0*x_4 - 2*x_1*x_2 - 2*x_1*x_5 - 2*x_2*x_3\n", " - 2*x_2*x_4 - 2*x_3*x_5 - 2*x_4*x_5 + 3*x_0 + 3*x_1 + 3*x_2 + 3*x_3 + 3*x_4\n", " + 3*x_5\n", "\n", "Subject to\n", " No constraints\n", "\n", " Binary variables (6)\n", " x_0 x_1 x_2 x_3 x_4 x_5\n", "\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import networkx as nx\n", "\n", "from qiskit_optimization.applications import Maxcut\n", "\n", "seed = 1\n", "num_nodes = 6\n", "graph = nx.random_regular_graph(d=3, n=num_nodes, seed=seed)\n", "nx.draw(graph, with_labels=True, pos=nx.spring_layout(graph, seed=seed))\n", "\n", "maxcut = Maxcut(graph)\n", "problem = maxcut.to_quadratic_program()\n", "print(problem.prettyprint())" ] }, { "cell_type": "markdown", "id": "cab054b2-206c-4f68-9644-4915fca28e1b", "metadata": {}, "source": [ "# Encode the problem into a quantum Hamiltonian" ] }, { "cell_type": "code", "execution_count": 6, "id": "a6b4c15e-8328-4ad8-945e-22ec188f2241", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Our encoded Hamiltonian is:\n", "( SparsePauliOp(['XX', 'XY', 'XZ', 'YX', 'ZX', 'YY', 'YZ', 'ZY', 'ZZ'],\n", " coeffs=[1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j,\n", " 1.5+0.j]) ).\n", "\n", "We achieve a compression ratio of (6 binary variables : 2 qubits) ≈ 3.0.\n", "\n" ] } ], "source": [ "from qiskit_optimization.algorithms.qrao import QuantumRandomAccessEncoding\n", "\n", "\n", "# Create an encoding object with a maximum of 3 variables per qubit, aka a (3,1,p)-QRAC\n", "encoding = QuantumRandomAccessEncoding(max_vars_per_qubit=3)\n", "\n", "# Encode the QUBO problem into an encoded Hamiltonian\n", "encoding.encode(problem)\n", "\n", "# This is our encoded Hamiltonian\n", "print(f\"Our encoded Hamiltonian is:\\n( {encoding.qubit_op} ).\\n\")\n", "print(\n", " \"We achieve a compression ratio of \"\n", " f\"({encoding.num_vars} binary variables : {encoding.num_qubits} qubits) \"\n", " f\"≈ {encoding.compression_ratio}.\\n\"\n", ")" ] }, { "cell_type": "markdown", "id": "a5be8918-2a80-499f-b284-18b31e082d8c", "metadata": {}, "source": [ "# Solve the problem using the QuantumRandomAccessOptimizer" ] }, { "cell_type": "code", "execution_count": 7, "id": "dede3601-95db-4002-bc42-b106b1508f9f", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_58552\\3717780211.py:16: DeprecationWarning: The class ``qiskit.circuit.library.n_local.real_amplitudes.RealAmplitudes`` is deprecated as of Qiskit 2.1. It will be removed in Qiskit 3.0. Use the function qiskit.circuit.library.real_amplitudes instead.\n", " ansatz = RealAmplitudes(2)\n" ] } ], "source": [ "from qiskit_algorithms import VQE\n", "from qiskit_algorithms.optimizers import COBYLA\n", "from qiskit.circuit.library import RealAmplitudes\n", "\n", "# Switch to Quantum Rings's Estimator\n", "#from qiskit.primitives import Estimator\n", "from quantumrings.toolkit.qiskit import QrEstimatorV2 as Estimator\n", "\n", "from qiskit_optimization.algorithms.qrao import (\n", " QuantumRandomAccessOptimizer,\n", " SemideterministicRounding,\n", ")\n", "\n", "\n", "# Prepare the VQE algorithm\n", "ansatz = RealAmplitudes(2)\n", "vqe = VQE(\n", " ansatz=ansatz,\n", " optimizer=COBYLA(),\n", " estimator=Estimator(backend = qr_backend),\n", ")\n", "\n", "# Use semi-deterministic rounding, known as \"Pauli rounding\"\n", "# in https://arxiv.org/pdf/2111.03167v2.pdf\n", "# (This is the default if no rounding scheme is specified.)\n", "semidterministic_rounding = SemideterministicRounding()\n", "\n", "# Construct the optimizer\n", "qrao = QuantumRandomAccessOptimizer(min_eigen_solver=vqe, rounding_scheme=semidterministic_rounding)" ] }, { "cell_type": "code", "execution_count": 8, "id": "e8c6f427-dcaf-4598-a998-69cf23cd6a25", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The objective function value: 5.0\n", "x: [0 1 1 0 0 1]\n", "relaxed function value: 8.999997850740328\n", "\n" ] } ], "source": [ "# Solve the optimization problem\n", "results = qrao.solve(problem)\n", "\n", "print(\n", " f\"The objective function value: {results.fval}\\n\"\n", " f\"x: {results.x}\\n\"\n", " f\"relaxed function value: {-1 * results.relaxed_fval}\\n\"\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "id": "e6485d7d-e565-47b2-99d8-726d08483287", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The obtained solution places a partition between nodes [0, 3, 4] and nodes [1, 2, 5].\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbz9JREFUeJzt3QWYlNXbBvBbSrr8aJSS7i5BREFBSukSkBCQUgFFQkJFBBVESlqQFkTaAqSRkBABkfhTAkpIx+J33WeZldiY2Yn3nXfu33Xtha7L7gF3Z+455zzP89C///77L0REREREYilObH+jiIiIiAgpUIqIiIiIVxQoRURERMQrCpQiIiIi4hUFShERERHxigKliIiIiHhFgVJEREREvKJAKSIiIiJeUaAUEREREa8oUIqIiIiIVxQoRURERMQrCpQiIiIi4hUFShERERHxigKliIiIiHhFgVJEREREvKJAKSIiIiJeUaAUEREREa8oUIqIiIiIVxQoRURERMQrCpQiIiIi4hUFShERERHxigKliIiIiHhFgVJEREREvKJAKSIiIiJeUaAUEREREa8oUIqIiIiIVxQoRURERMQrCpQiIiIi4hUFShERERHxigKliIiIiHhFgVJEREREvKJAKSIiIiJeUaAUEREREa8oUIqIiIiIVxQoRURERMQrCpQiIiIi4pV43v12EZEQcvs2cPkyEBYGJEkCxI9v9YpERGxBO5QiItHZtw946y3giSeAZMmA5MmBVKmAhAmBvHmBl18Gli8PD5siIiHqoX///fdfqxchImI7O3cC3boBK1cCceOG70pGJl484NYt4LHHgEGDgObNgYceCvRqRUQspUApInI3BsfBg4EBAwA+PEYVJKNSrRowaRKQPr2/VigiYjsKlCIiLtxp5A7j7NnhYTI2uGOZMSOwejWQNauvVygiYksKlCIiLm3bAhMnxj5M3h0qM2UCtm0DUqf21epERGxLRTkiIrRgATBhgvdh0rXTeewY0LmzL1YmImJ7CpQiIhcuAG3aRFtMcx3AmwAyAkgEoDSA76L7nLx7OWMGsGSJP1YsImIrCpQiIlOmAOfORbs72RLAxwCaAhgBIC6A6gDWRvd548QB3n/fHysWEbEV3aEUkdDGh8CcOYGDB6MMlJvv7EgOBdD9zvuuASgAIC2A9e60ICpY0NcrFxGxDe1Qikho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yd2PvgagJoD9ABYDyOf218kfdd2OiIiI+JACpViidOnwUYnRYxl4QwAbAMy9c3fSPUmTAjlyeLtKERERcYeOvMUSNWuGj0iM3hsAvrmzQ3k2kkbmzSL9XfHiATVqhE/NEREREf9T2yCxxNWrQPr0wD//RPdRlQCsjua/R/2tu3YtUL68NysUERERd+nIWyyRKBHwxhsx7SKuuhMao3qLfHeyTBmgXDl/rVxERETupx1KscyNG0CRIsD+/bGdmvOgBAmAXbuAXLl88/lEREQkZtqhFMsw/M2cGf5rzAU67vn0U4VJERGRQFOgFEsVLgwsXw48/DAQN+Ze5ZFyHZsPGQK88opPlyciIiJuUKAUy1WsCGzcCOTO7XllNkNo8uTArFlAz57+WqGIiIhER4FSbKFQIWD7dmDgQCBFiv/CYmQYOnlEzgKcxo2BvXuBhmxXKSIiIpZQUY7YzrVrwNy5wJIl4TuXR478999SpwZKlgSeegpo2RJIl87KlYqIiAgpUIrtXb8e3rcyfvzwsY1qWC4iImIvCpQiIiIi4hXdoRQRERERryhQioiIiIhXFChFRERExCsKlCIiIiLiFQVKEREREfGKAqWIiIiIeEWBUkRERES8okApIiIiIl5RoBQRERERryhQioiIiIhXFChFRERExCsKlCIiIiLiFQVKEREREfGKAqWIiIiIeEWBUkRERES8okApIiIiIl5RoBQRERERryhQioiIiIhXFChFRERExCsKlCIiIiLiFQVKEREREfGKAqWIiIiIeEWBUkRERES8okApIiIiIl5RoBQRERERryhQioiIiIhXFChFRERExCsKlCIiIiLiFQVKEREREfGKAqWIiIiIeEWBUkRERES8okApIiIiIl5RoBQRERERryhQioiIiIhXFChFRERExCsKlCIiIiLiFQVKEREREYE3/h8gGEsyxD1LkgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "maxcut_partition = maxcut.interpret(results)\n", "print(\n", " f\"The obtained solution places a partition between nodes {maxcut_partition[0]} \"\n", " f\"and nodes {maxcut_partition[1]}.\"\n", ")\n", "maxcut.draw(results, pos=nx.spring_layout(graph, seed=seed))" ] }, { "cell_type": "markdown", "id": "523678e5-ff57-4109-ae72-7eef9e9c6b42", "metadata": {}, "source": [ "# Inspect the results of subroutines" ] }, { "cell_type": "code", "execution_count": 10, "id": "e5441998-01ad-4d6b-9316-27fe3feb3daf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.relaxed_result" ] }, { "cell_type": "code", "execution_count": 11, "id": "a01f35fe-3754-4c9c-a33e-ec94ce6660b7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[SolutionSample(x=array([0, 1, 1, 0, 0, 1]), fval=np.float64(5.0), probability=1.0, status=)]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.samples" ] }, { "cell_type": "markdown", "id": "e90b534d-aeda-4944-9994-4960b5fb5120", "metadata": {}, "source": [ "# Exact Problem Solution with the NumpyMinimumEigensolver" ] }, { "cell_type": "code", "execution_count": 12, "id": "b716c515-ef0f-485c-bda1-aace4ca7fd50", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "objective function value: 9.0\n", "variable values: x_0=0.0, x_1=1.0, x_2=0.0, x_3=1.0, x_4=1.0, x_5=0.0\n", "status: SUCCESS\n" ] } ], "source": [ "from qiskit_algorithms import NumPyMinimumEigensolver\n", "\n", "from qiskit_optimization.algorithms import MinimumEigenOptimizer\n", "\n", "exact_mes = NumPyMinimumEigensolver()\n", "exact = MinimumEigenOptimizer(exact_mes)\n", "exact_result = exact.solve(problem)\n", "print(exact_result.prettyprint())" ] }, { "cell_type": "code", "execution_count": 13, "id": "1e149f1f-52fc-4be0-b718-37d8a9cedaf6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "QRAO Approximate Optimal Function Value: 5.0\n", "Exact Optimal Function Value: 9.0\n", "Approximation Ratio: 0.56\n" ] } ], "source": [ "print(\"QRAO Approximate Optimal Function Value:\", results.fval)\n", "print(\"Exact Optimal Function Value:\", exact_result.fval)\n", "print(f\"Approximation Ratio: {results.fval / exact_result.fval :.2f}\")" ] }, { "cell_type": "markdown", "id": "b71106e5-5c64-4715-82e0-8f8c4b43ce5a", "metadata": {}, "source": [ "# Solve the problem using the QuantumRandomAccessOptimizer with MagicRounding" ] }, { "cell_type": "code", "execution_count": 14, "id": "7ce0de48-2f5b-4d9c-b1f1-871f6be40911", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_58552\\2754462041.py:12: DeprecationWarning: The class ``qiskit.circuit.library.n_local.real_amplitudes.RealAmplitudes`` is deprecated as of Qiskit 2.1. It will be removed in Qiskit 3.0. Use the function qiskit.circuit.library.real_amplitudes instead.\n", " ansatz = RealAmplitudes(2)\n", "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_58552\\2754462041.py:21: UserWarning: Using Sampler V2 (other than StatevectorSampler) without a pass_manager may result in an error. Consider providing a pass_manager for proper circuit transpilation.\n", " magic_rounding = MagicRounding(sampler=sampler)\n" ] } ], "source": [ "# Switch to Quantum Rings's Sampler\n", "#from qiskit.primitives import Sampler\n", "from quantumrings.toolkit.qiskit import QrSamplerV2 as Sampler\n", "\n", "from qiskit_optimization.algorithms.qrao import MagicRounding\n", "\n", "\n", "estimator = Estimator(backend = qr_backend, options={\"shots\": 1000, \"seed\": seed})\n", "sampler = Sampler(backend = qr_backend, options={\"shots\": 10000, \"seed\": seed})\n", "\n", "# Prepare the VQE algorithm\n", "ansatz = RealAmplitudes(2)\n", "vqe = VQE(\n", " ansatz=ansatz,\n", " optimizer=COBYLA(),\n", " estimator=estimator,\n", ")\n", "\n", "\n", "# Use magic rounding\n", "magic_rounding = MagicRounding(sampler=sampler)\n", "\n", "# Construct the optimizer\n", "qrao = QuantumRandomAccessOptimizer(min_eigen_solver=vqe, rounding_scheme=magic_rounding)\n", "\n", "results = qrao.solve(problem)" ] }, { "cell_type": "code", "execution_count": 15, "id": "dd25482e-228c-4c50-b002-9da3322473f2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The objective function value: 9.0\n", "x: [1 0 1 0 0 1]\n", "relaxed function value: 8.999999054984073\n", "\n" ] } ], "source": [ "print(\n", " f\"The objective function value: {results.fval}\\n\"\n", " f\"x: {results.x}\\n\"\n", " f\"relaxed function value: {-1 * results.relaxed_fval}\\n\"\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "id": "b1c9d5f7-67e7-4546-9ed0-ca57688efaba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of distinct samples is 56.\n", "Top 10 samples with the largest fval:\n", "SolutionSample(x=array([1, 0, 1, 0, 0, 1]), fval=np.float64(9.0), probability=np.float64(0.0317), status=)\n", "SolutionSample(x=array([0, 1, 0, 1, 1, 0]), fval=np.float64(9.0), probability=np.float64(0.0324), status=)\n", "SolutionSample(x=array([1, 1, 1, 0, 0, 1]), fval=np.float64(6.0), probability=np.float64(0.020800000000000003), status=)\n", "SolutionSample(x=array([0, 0, 0, 1, 1, 0]), fval=np.float64(6.0), probability=np.float64(0.019799999999999998), status=)\n", "SolutionSample(x=array([0, 1, 0, 0, 1, 0]), fval=np.float64(6.0), probability=np.float64(0.0221), status=)\n", "SolutionSample(x=array([1, 0, 1, 1, 0, 1]), fval=np.float64(6.0), probability=np.float64(0.0191), status=)\n", "SolutionSample(x=array([1, 0, 1, 0, 1, 1]), fval=np.float64(6.0), probability=np.float64(0.0214), status=)\n", "SolutionSample(x=array([0, 1, 0, 1, 0, 0]), fval=np.float64(6.0), probability=np.float64(0.0214), status=)\n", "SolutionSample(x=array([0, 0, 1, 0, 0, 1]), fval=np.float64(6.0), probability=np.float64(0.0198), status=)\n", "SolutionSample(x=array([1, 1, 0, 1, 1, 0]), fval=np.float64(6.0), probability=np.float64(0.0213), status=)\n" ] } ], "source": [ "print(f\"The number of distinct samples is {len(results.samples)}.\")\n", "print(\"Top 10 samples with the largest fval:\")\n", "for sample in results.samples[:10]:\n", " print(sample)" ] }, { "cell_type": "markdown", "id": "66020bbf-a332-4701-90d2-ca33b0526e20", "metadata": {}, "source": [ "# Alternative: Solve the Problem in Two Explicit Steps" ] }, { "cell_type": "markdown", "id": "1da946c9-5559-4dc5-8b33-a66bc659f6e5", "metadata": {}, "source": [ "# Manually solve the relaxed problem." ] }, { "cell_type": "code", "execution_count": 17, "id": "8d35499d-2d68-46ac-bd0a-3e45204d6ed1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "aux_operators_evaluated: [(np.float64(-8.687756781000644e-05), {'target_precision': 0.001, 'shots': 1, 'circuit_metadata': {}}), (np.float64(8.690017421031371e-05), {'target_precision': 0.001, 'shots': 1, 'circuit_metadata': {}}), (np.float64(0.0), {'target_precision': 0.001, 'shots': 1, 'circuit_metadata': {}}), (np.float64(0.0), {'target_precision': 0.001, 'shots': 1, 'circuit_metadata': {}}), (np.float64(-8.818507194519043e-05), {'target_precision': 0.001, 'shots': 1, 'circuit_metadata': {}}), (np.float64(8.815526962280273e-05), {'target_precision': 0.001, 'shots': 1, 'circuit_metadata': {}})]\n", "combine: >\n", "cost_function_evals: 114\n", "eigenvalue: -4.500000695130438\n", "optimal_circuit: ┌──────────────────────────────────────────────────────────┐\n", "q_0: ┤0 ├\n", " │ RealAmplitudes(θ[0],θ[1],θ[2],θ[3],θ[4],θ[5],θ[6],θ[7]) │\n", "q_1: ┤1 ├\n", " └──────────────────────────────────────────────────────────┘\n", "optimal_parameters: {ParameterVectorElement(θ[0]): np.float64(3.095485054253522), ParameterVectorElement(θ[1]): np.float64(0.8181381519057227), ParameterVectorElement(θ[2]): np.float64(-2.811500045337558), ParameterVectorElement(θ[3]): np.float64(2.3003509088238854), ParameterVectorElement(θ[4]): np.float64(-1.2726511419163853), ParameterVectorElement(θ[5]): np.float64(-1.4763970784561498), ParameterVectorElement(θ[6]): np.float64(2.55863889663382), ParameterVectorElement(θ[7]): np.float64(-3.72829212536768)}\n", "optimal_point: [ 3.09548505 0.81813815 -2.81150005 2.30035091 -1.27265114 -1.47639708\n", " 2.5586389 -3.72829213]\n", "optimal_value: -4.500000695130438\n", "optimizer_evals: None\n", "optimizer_result: { 'fun': np.float64(-4.500000695130438),\n", " 'jac': None,\n", " 'nfev': 114,\n", " 'nit': None,\n", " 'njev': None,\n", " 'x': array([ 3.09548505, 0.81813815, -2.81150005, 2.30035091, -1.27265114,\n", " -1.47639708, 2.5586389 , -3.72829213])}\n", "optimizer_time: 16.0326144695282\n" ] } ], "source": [ "# Encode the QUBO problem into a relaxed Hamiltonian\n", "encoding = QuantumRandomAccessEncoding(max_vars_per_qubit=3)\n", "encoding.encode(problem)\n", "\n", "# Solve the relaxed problem\n", "relaxed_results, rounding_context = qrao.solve_relaxed(encoding)\n", "\n", "for k in dir(relaxed_results):\n", " if not k.startswith(\"_\"):\n", " print(f\"{k}: {getattr(relaxed_results, k)}\")" ] }, { "cell_type": "markdown", "id": "1028707d-5bf4-446d-a635-eb76cb7feec7", "metadata": {}, "source": [ "# Manually perform rounding on the relaxed problem results" ] }, { "cell_type": "code", "execution_count": 18, "id": "a091a584-224a-454a-a3c4-451a07a49737", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The objective function value: 5.0\n", "x: [1 0 0 1 1 0]\n", "relaxed function value: -9.000000695130439\n", "The number of distinct samples is 1.\n" ] } ], "source": [ "# Round the relaxed solution using semi-deterministic rounding\n", "semidterministic_rounding = SemideterministicRounding()\n", "sdr_results = semidterministic_rounding.round(rounding_context)\n", "qrao_results_sdr = qrao.process_result(\n", " problem=problem, encoding=encoding, relaxed_result=relaxed_results, rounding_result=sdr_results\n", ")\n", "\n", "print(\n", " f\"The objective function value: {qrao_results_sdr.fval}\\n\"\n", " f\"x: {qrao_results_sdr.x}\\n\"\n", " f\"relaxed function value: {-1 * qrao_results_sdr.relaxed_fval}\\n\"\n", " f\"The number of distinct samples is {len(qrao_results_sdr.samples)}.\"\n", ")" ] }, { "cell_type": "code", "execution_count": 19, "id": "ca7f5de0-5bcb-4614-9eef-91632eece54e", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_58552\\729260506.py:1: UserWarning: Using Sampler V2 (other than StatevectorSampler) without a pass_manager may result in an error. Consider providing a pass_manager for proper circuit transpilation.\n", " magic_rounding = MagicRounding(sampler=sampler)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "The objective function value: 9.0\n", "x: [1 0 1 0 0 1]\n", "relaxed function value: -9.000000695130439\n", "The number of distinct samples is 56.\n" ] } ], "source": [ "magic_rounding = MagicRounding(sampler=sampler)\n", "mr_results = magic_rounding.round(rounding_context)\n", "qrao_results_mr = qrao.process_result(\n", " problem=problem, encoding=encoding, relaxed_result=relaxed_results, rounding_result=mr_results\n", ")\n", "\n", "print(\n", " f\"The objective function value: {qrao_results_mr.fval}\\n\"\n", " f\"x: {qrao_results_mr.x}\\n\"\n", " f\"relaxed function value: {-1 * qrao_results_mr.relaxed_fval}\\n\"\n", " f\"The number of distinct samples is {len(qrao_results_mr.samples)}.\"\n", ")" ] }, { "cell_type": "markdown", "id": "7472c33d-4194-4333-8be4-79c19a0bb269", "metadata": {}, "source": [ "# Appendix\n", "# How to verify correctness of your encoding" ] }, { "cell_type": "code", "execution_count": 20, "id": "af806296-aea3-49ab-8609-bf9c820e9018", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem name: Max-cut\n", "\n", "Maximize\n", " -2*x_0*x_1 - 2*x_0*x_3 - 2*x_0*x_4 - 2*x_1*x_2 - 2*x_1*x_5 - 2*x_2*x_3\n", " - 2*x_2*x_4 - 2*x_3*x_5 - 2*x_4*x_5 + 3*x_0 + 3*x_1 + 3*x_2 + 3*x_3 + 3*x_4\n", " + 3*x_5\n", "\n", "Subject to\n", " No constraints\n", "\n", " Binary variables (6)\n", " x_0 x_1 x_2 x_3 x_4 x_5\n", "\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from qiskit_optimization.algorithms.qrao import EncodingCommutationVerifier\n", "\n", "seed = 1\n", "num_nodes = 6\n", "graph = nx.random_regular_graph(d=3, n=num_nodes, seed=seed)\n", "nx.draw(graph, with_labels=True, pos=nx.spring_layout(graph, seed=seed))\n", "\n", "maxcut = Maxcut(graph)\n", "problem = maxcut.to_quadratic_program()\n", "print(problem.prettyprint())" ] }, { "cell_type": "code", "execution_count": 21, "id": "a4591cb5-d140-4292-9678-efb4b4f8ccb8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Encoded Problem:\n", "=================\n", "SparsePauliOp(['XX', 'XY', 'XZ', 'YX', 'ZX', 'YY', 'YZ', 'ZY', 'ZZ'],\n", " coeffs=[1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j, 1.5+0.j,\n", " 1.5+0.j])\n", "Offset = -4.5\n", "Variables encoded on each qubit: [[0, 2, 5], [1, 3, 4]]\n" ] } ], "source": [ "encoding = QuantumRandomAccessEncoding(max_vars_per_qubit=3)\n", "encoding.encode(problem)\n", "\n", "print(\"Encoded Problem:\\n=================\")\n", "print(encoding.qubit_op) # The Hamiltonian without the offset\n", "print(\"Offset = \", encoding.offset)\n", "print(\"Variables encoded on each qubit: \", encoding.q2vars)" ] }, { "cell_type": "code", "execution_count": 22, "id": "b48e54eb-3145-4a23-b621-bdd043174f92", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_58552\\768070498.py:3: UserWarning: Using Estimator V2 (other than StatevectorEstimator) without a pass_manager may result in an error. Consider providing a pass_manager for proper circuit transpilation.\n", " verifier = EncodingCommutationVerifier(encoding, estimator=Estimator())\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Violation identified: 000000 evaluates to -0.0 but the encoded problem evaluates to 5.364418020903372e-07.\n", "Violation identified: 111111 evaluates to -0.0 but the encoded problem evaluates to -2.6822090237743623e-07.\n" ] } ], "source": [ "import numpy as np\n", "\n", "verifier = EncodingCommutationVerifier(encoding, estimator=Estimator())\n", "if not len(verifier) == 2**encoding.num_vars:\n", " print(\"The number results of the encoded problem is not equal to 2 ** num_vars.\")\n", "\n", "for str_dvars, obj_val, encoded_obj_val in verifier:\n", " if not np.isclose(obj_val, encoded_obj_val):\n", " print(\n", " f\"Violation identified: {str_dvars} evaluates to {obj_val} \"\n", " f\"but the encoded problem evaluates to {encoded_obj_val}.\"\n", " )" ] }, { "cell_type": "code", "execution_count": 23, "id": "79f97af7-fe8d-4d9f-8d7a-2934050b1fcb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

Version Information

SoftwareVersion
qiskit2.2.1
qiskit_optimization0.7.0
qiskit_aer0.17.1
qiskit_ibm_runtime0.40.1
qiskit_algorithms0.4.0
System information
Python version3.12.9
OSWindows
Tue Oct 21 15:48:44 2025 Mountain Daylight Time
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

Quantum Rings Version Information

SoftwareVersion
QuantumRingsLib0.11.0
quantumrings-toolkit-qiskit0.2.0
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

This code is a part of a Qiskit project

© Copyright IBM 2017, 2025.

This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.

Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.

Modifications (c) Copyright Quantum Rings Inc, 2025
Modified from the originals
Added support for Quantum Rings toolkit for Qiskit.

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import tutorial_magics\n", "\n", "%qiskit_version_table\n", "%quantumrings_version_table\n", "%qiskit_copyright" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12.9" } }, "nbformat": 4, "nbformat_minor": 5 }