{ "cells": [ { "cell_type": "markdown", "id": "5882c269-3eb3-4309-a4db-737cf3a569f4", "metadata": {}, "source": [ "# 04 - Grover Optimizer\n", "### Modified for use with Quantum Rings toolkit for Qiskit 2.x" ] }, { "cell_type": "code", "execution_count": 1, "id": "818b9459-3dc4-41a2-a827-6ffeeb666fcb", "metadata": {}, "outputs": [], "source": [ "# This code is from the tutorial at:\n", "# https://qiskit-community.github.io/qiskit-optimization/tutorials/04_grover_optimizer.html\n", "\n", "# Modified for use with Quantum Rings SDK" ] }, { "cell_type": "code", "execution_count": 2, "id": "09da425f-bd56-4625-82f1-6cfbb8170935", "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", "# 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": "635b306d-3e2f-43f6-aeb7-27361e205756", "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, precision = \"single\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "7731c2cb-33dc-498b-a957-da86586b4332", "metadata": {}, "outputs": [], "source": [ "from qiskit_algorithms import NumPyMinimumEigensolver\n", "\n", "# 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 import GroverOptimizer, MinimumEigenOptimizer\n", "from qiskit_optimization.translators import from_docplex_mp\n", "from docplex.mp.model import Model" ] }, { "cell_type": "code", "execution_count": 5, "id": "7c1309f6-c1d2-41fa-a9d6-32ae2000c994", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem name: docplex_model1\n", "\n", "Minimize\n", " -2*x0*x2 - x1*x2 - x0 + 2*x1 - 3*x2\n", "\n", "Subject to\n", " No constraints\n", "\n", " Binary variables (3)\n", " x0 x1 x2\n", "\n" ] } ], "source": [ "model = Model()\n", "x0 = model.binary_var(name=\"x0\")\n", "x1 = model.binary_var(name=\"x1\")\n", "x2 = model.binary_var(name=\"x2\")\n", "model.minimize(-x0 + 2 * x1 - 3 * x2 - 2 * x0 * x2 - 1 * x1 * x2)\n", "qp = from_docplex_mp(model)\n", "print(qp.prettyprint())" ] }, { "cell_type": "code", "execution_count": 6, "id": "820bbce0-b97d-4e6b-8bac-dbabebb05743", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_19628\\1369565211.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", " grover_optimizer = GroverOptimizer(6, num_iterations=10, sampler=Sampler(backend = qr_backend))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "objective function value: -6.0\n", "variable values: x0=1.0, x1=0.0, x2=1.0\n", "status: SUCCESS\n" ] } ], "source": [ "grover_optimizer = GroverOptimizer(6, num_iterations=10, sampler=Sampler(backend = qr_backend))\n", "results = grover_optimizer.solve(qp)\n", "print(results.prettyprint())" ] }, { "cell_type": "code", "execution_count": 7, "id": "03094d37-8b32-4c5e-9a51-ef90d5b7b0df", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "objective function value: -6.0\n", "variable values: x0=1.0, x1=0.0, x2=1.0\n", "status: SUCCESS\n" ] } ], "source": [ "exact_solver = MinimumEigenOptimizer(NumPyMinimumEigensolver())\n", "exact_result = exact_solver.solve(qp)\n", "print(exact_result.prettyprint())" ] }, { "cell_type": "code", "execution_count": 8, "id": "60e59d34-73ac-4e14-ac13-a4dee8fc5bfd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

Version Information

SoftwareVersion
qiskit2.2.1
qiskit_ibm_runtime0.40.1
qiskit_optimization0.7.0
qiskit_algorithms0.4.0
qiskit_aer0.17.1
System information
Python version3.12.9
OSWindows
Tue Oct 21 15:19:26 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" ] }, { "cell_type": "code", "execution_count": null, "id": "68e8f39e-ac8f-4eee-bb03-18f616774d66", "metadata": {}, "outputs": [], "source": [] } ], "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 }