{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Application Classes for Optimization Problems" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "\n", "We introduce application classes for the following optimization problems so that users can easily try various optimization problems on quantum computers.\n", "\n", "1. Exact cover problem\n", " - Given a collection of subsets of items, find a subcollection such that each item is covered exactly once.\n", "2. Knapsack problem\n", " - Given a set of items, find a subset of items such that the total weight is within the capacity and the total value is maximized.\n", "3. Number partition problem\n", " - Given a multiset of positive integers, find a partition of the multiset into two subsets such that the sums of the subsets are equal.\n", "4. Set packing problem\n", " - Given a collection of subsets of items, find a subcollection such that all subsets of the subcollection are pairwise disjoint and the number of items in the subcollection is maximized.\n", "\n", "Graph problems\n", "\n", "5. Clique problem\n", " - Given an undirected graph, find a subset of nodes with a specified number or the maximum number such that the induced subgraph is complete.\n", "6. Graph partition problem\n", " - Given an undirected graph, find a partition into two components whose sizes are equal such that the total capacity of the edges between the two components is minimized.\n", "7. Max-cut problem\n", " - Given an undirected graph, find a partition of nodes into two subsets such that the total weight of the edges between the two subsets is maximized. \n", "8. Stable set problem\n", " - Given an undirected graph, find a subset of nodes such that no edge connects the nodes in the subset and the number of nodes is maximized.\n", "9. Traveling salesman problem\n", " - Given a graph, find a route with the minimum distance such that the route visits each city exactly once.\n", "10. Vehicle routing problem\n", " - Given a graph, a depot node, and the number of vehicles (routes), find a set of routes such that each node is covered exactly once except the depot and the total distance of the routes is minimized.\n", "11. Vertex cover problem\n", " - Given an undirected graph, find a subset of nodes with the minimum size such that each edge has at least one endpoint in the subsets.\n", "\n", "The application classes for graph problems (`GraphOptimizationApplication`) provide a functionality to draw graphs of an instance and a result.\n", "Note that you need to install `matplotlib` beforehand to utilize the functionality." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We introduce examples of the vertex cover problem and the knapsack problem in this page.\n", "\n", "Examples of the max-cut problem and the traveling salesman problem are available in [Max-Cut and Traveling Salesman Problem](06_examples_max_cut_and_tsp.ipynb)." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We first import packages necessary for application classes." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from qiskit_optimization.algorithms import MinimumEigenOptimizer\n", "from qiskit_algorithms.utils import algorithm_globals\n", "from qiskit_algorithms import QAOA, NumPyMinimumEigensolver\n", "from qiskit_algorithms.optimizers import COBYLA\n", "from qiskit.primitives import Sampler" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Vertex cover problem\n", "\n", "We introduce the application class for the vertex cover problem as an example of graph problems.\n", "Given an undirected graph, the vertex cover problem asks us to find a subset of nodes with the minimum size such that all edges are covered by any node selected.\n", "\n", "We import the application class `VertexCover` for the vertex cover problem and `networkx` to generate a random graph.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from qiskit_optimization.applications.vertex_cover import VertexCover\n", "import networkx as nx\n", "\n", "seed = 123\n", "algorithm_globals.random_seed = seed" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "graph = nx.random_regular_graph(d=3, n=6, seed=seed)\n", "pos = nx.spring_layout(graph, seed=seed)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB7nUlEQVR4nO3dd1yV9f8+8IshKLhxl2huQEBkD0UQFciRVmalmR+z1Mw0LVfmKC1HapYrrTSzNHMnOBBEZA9BBFTEAU4URNlwzrm/f5TnGyUKcuB9xvV8PL5//BjnXH1+Khev+75fbz1JkiQQERERET0jfdEBiIiIiEizsVASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNsFASERERUY2wUBIRERFRjbBQEhEREVGNGIoOQERERBUVlspwNacQZTIFjAz10dHMFKbG/JFN6ot/OomIiNRA+p187IjORMiFbGTmFkH6x+f0AJg3N4FX91Z409kcXVs3EhWT6LH0JEmSnv5lREREVBuycoswd18ywi7dg4G+HuSKyn8sP/p8ny4tsHS4Ndo3N6nDpESVY6EkIiISZGdsJhYcTIFMIT2xSP6bgb4eDPX1sGioFUY5mtdiQqKqYaEkIiIS4LuQdKw8drHGrzNzYDdM8eqqgkREz45PeRMREdWxnbGZKimTALDy2EXsis1UyWsRPStOKImIiOpQVm4RfFaHolSm+M/nSq6dxZ3f5j72+9qMWQnj53o89nPGhvoImu7JeypJGD7lTUREVIfm7kuG7Cn3SzayHwKjtt0qfMywWdtKv16mkDB3XzK2j3dWSUai6mKhJCIiqiPpd/IRduneU7/OuL0VTHt4VPl15QoJYZfu4VJ2Prq04kohqnu8h5KI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9DI7OxuNGzdWTi99fX3x3HPPPfE1snKL4LM6FKUyxWM/rygrxsPovSi9eQFlty5CUVIAM/9paGjjU+lrGhvqI2i6J9o3N6nRfx8R1S0WSiIiHadQKHDmzBnl9DI6OhoKhQI2NjbK6aWrq+t/ppdjfohGxOWcSh++keXdwY2N42HQuCUMm7ZBaWbyUwulgb4e3DqZYft4Z5X+NxJR7WKhJCKiCnJycnDs2DEEBgbiyJEjuHv3Lpo0aYIBAwYop5cF+g0xYM2pJ76OJCuHoqQABg2bofRWOm5vm/7UQvlI0PS+6NKqkar+k4iolnFrLBERVWBmZobXX38dP//8M27fvo2YmBh89NFHyMrKwvjx49GuXTsMnr4MenjyPELPsB4MGjar9vsb6Ovhl6jMZ41PRAKwUBIRUaX09fXh6OiIzz77DFFRUcjOzsYvv/wCvXY9IUGvVt5TrpAQcjG7Vl6biGoHCyUREVVZixYtMOyV11Bar3YvR2fmFKGwVFar70FEqsNCSURE1XItp/ApF7trTgJwNaewlt+FiFSFhZKIiKqlrJI1QZr6PkRUcyyURERULUaGdfOjo67eh4hqjn9biYioWjqamdbS4zj/T+/v9yEizcBCSURE1WJqbAjzWj7JxtzMBKbGhrX6HkSkOvzbSkRE1ebVvRW2R1+r9JScRx7GH4KipBDyglwAQPGlGMjy7wEAGtsPgX79/04hDfT14NWtlepDE1GtYaEkIqJqe9PZHFsjrz716x5G74P84f/vlCy6GAFcjAAANLTyemyhlCskjHYxV1lWIqp9LJRERFRtXVs3Qp8uLZ54ljcAPD/5x2q97qOzvHnsIpFm4T2URET0TJYOt4ahvmofzzHU18PS4dYqfU0iqn0slERE9EzaNzfBoqFWKn3NxUOt0L6WH/ghItVjoSQiomc2ytEcMwd2U8lrfTywO15z5L2TRJpIT5Kk2j5Bi4iItNzO2EwsOJgCmUJ66pPf/2SgrwdDfT0sHmrFMkmkwVgoiYhIJbJyizB3XzLCLt2Dgb7eE4vlo8/36dICS4db8zI3kYZjoSQiIpVKv5OPHdGZCLmYjcycIvzzh4we/lpa7tWtFUa7mPNpbiItwUJJRES1prBUhqs5hSiTKWBkqI+OZqY8AYdIC7FQEhEREVGN8ClvIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqoRFkoiIiIiqhEWSiIiIiKqERZKIiIiIqqR/wOHuJlW0xzj8gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prob = VertexCover(graph)\n", "prob.draw(pos=pos)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "`VertexCover` takes a graph as an instance and `to_quadratic_program` generates a corresponding `QuadraticProgram` of the instance of the vertex cover problem." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem name: Vertex cover\n", "\n", "Minimize\n", " x_0 + x_1 + x_2 + x_3 + x_4 + x_5\n", "\n", "Subject to\n", " Linear constraints (9)\n", " x_1 + x_2 >= 1 'c0'\n", " x_1 + x_4 >= 1 'c1'\n", " x_1 + x_3 >= 1 'c2'\n", " x_2 + x_3 >= 1 'c3'\n", " x_0 + x_2 >= 1 'c4'\n", " x_0 + x_4 >= 1 'c5'\n", " x_0 + x_5 >= 1 'c6'\n", " x_4 + x_5 >= 1 'c7'\n", " x_3 + x_5 >= 1 'c8'\n", "\n", " Binary variables (6)\n", " x_0 x_1 x_2 x_3 x_4 x_5\n", "\n" ] } ], "source": [ "qp = prob.to_quadratic_program()\n", "print(qp.prettyprint())" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "You can solve the problem as follows. `NumPyMinimumEigensolver` finds the minimum eigen vector. You can also apply QAOA. Note that the solution by QAOA is not always optimal." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "objective function value: 4.0\n", "variable values: x_0=0.0, x_1=0.0, x_2=1.0, x_3=1.0, x_4=1.0, x_5=1.0\n", "status: SUCCESS\n", "\n", "solution: [2, 3, 4, 5]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB5eklEQVR4nO3dd1yVdf8G8IshuPfeW4ayN05EBZxZmZojH9PUzFwNM9M0LUdqltvMkeWeCaIIsjcyBFy490b2OOf+/UGeX5QDOAe+Z1zv18vX8zwK51z+fioXn/u+P189SZIkEBERERGVkb7oAERERESk2VgoiYiIiEgpLJREREREpBQWSiIiIiJSCgslERERESmFhZKIiIiIlMJCSURERERKYaEkIiIiIqWwUBIRERGRUlgoiYiIiEgpLJREREREpBQWSiIiIiJSCgslERERESmFhZKIiIiIlMJCSURERERKYaEkIiIiIqWwUBIRERGRUlgoiYiIiEgpLJREREREpBQWSiIiIiJSCgslERERESmFhZKIiIiIlMJCSURERERKYaEkIiIiIqWwUBIRERGRUlgoiYiIiEgpLJREREREpBQWSiIiIiJSCgslERERESmFhZKIiIiIlMJCSURERERKYaEkIiIiIqWwUBIRERGRUlgoiYiIiEgpLJREREREpBQWSiIiIiJSiqHoAERERPQv+flAdjZgYABUrw7o6YlORPRanFASERGJVlgIHDkCjB0LdOwIVKkC1KkD1KxZ9KNHD2DePODqVdFJiV5KT5IkSXQIIiIinSSXA5s2AQsXAnfvAoaGReXyZQwMij7ewwNYvbqoeBKpCRZKIiIiEW7cAEaPBoKCSvd5hoaAvj7www/A9Om8HE5qgYWSiIioop0/X3QZ+8mTV08kS+Kjj4B164oKJpFA/BNIRERUke7cAXr2BB4/Vq5MAsDGjcCXX6okFpEyOKEkIiKqKJIEeHkBp04BMpnqXvf0acDNTXWvR1RKnFASERFVlD/+AE6ceGWZPANA7xU/Il71mvr6RU+H5+aqPC5RSXEPJRERUUWQJOC774oeonnDxcFpAOz/9XPtX/XBcjlw6xawdy8wZowKghKVHi95ExERVYTgYKB799d+yBkAvQDsA/BOaV5bXx+wsgJiY8uajkgpvORNRERUEf76q2jlTwllACjxIztyORAXBzx8WJZk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NjARlSsWSiIiKrV27drh4sWLb/y4v/76Cw8fPlT876ioKERFRQEAunXr9tJCqaenhzZt2qguLBGVOx69SEREZRIaGoo7d+6o9GlsPT09tG3bFra2tip7TSIqf7xBhYiIysTGxkblT2IbGxvDwsJCpa9JROWPhZKIiMqkSpUqcHBwUNnr6enpwcnJCZUqVVLZaxJRxWChJCKiMmvevDns7e2Veg09PT3o6enBxcUFDRs2VFEyIqpIvIeSiIiUdvfuXURFRSE/P7/U91RWrVoVTk5OqF+/fjmlI6LyxkJJREQqkZ+fj6SkJFy9erVExzMaGBigffv2MDc3r7DTd4iofLBQEhGRSuXn5+PatWu4f/8+njx5gry8PMWvVa5cGfXq1UPjxo3RsmVL3i9JpCVYKImIqFwVFhZCLpfDwMCA53MTaSkWSiIiIiJSCp/yJiIiIiKlsFASERERkVJYKImIiIhIKSyURERERKQUFkoiIiIiUgoLJREREREphYWSiIiIiJTCQklERERESmGhJCIiIiKlsFASERERkVJYKImIiIhIKSyURERERKQUFkoiIiIiUgoLJREREREphYWSiIiIiJTCQklERERESmGhJCIiIiKlsFASERERkVJYKImIiIhIKSyURERERKQUFkoiIiIiUgoLJREREREphYWSiIiIiJTCQklERERESmGhJCIiIiKlsFASERERkVJYKImIiIhIKSyURERERKQUFkoiIiIiUgoLJREREREphYWSiIiIiJTCQklERERESmGhJCIiIiKlsFASERERkVJYKImIiIhIKSyURERERKQUFkoiIiIiUsr/AXzJHUEUpRb3AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Numpy Eigensolver\n", "meo = MinimumEigenOptimizer(min_eigen_solver=NumPyMinimumEigensolver())\n", "result = meo.solve(qp)\n", "print(result.prettyprint())\n", "print(\"\\nsolution:\", prob.interpret(result))\n", "prob.draw(result, pos=pos)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "objective function value: 4.0\n", "variable values: x_0=1.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", "\n", "solution: [0, 1, 3, 4]\n", "\n", "time: 2.721126079559326\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB5lUlEQVR4nO3dd1yV9d8G8IshuLc5Mvdgyd6gIqICzqxMzZGZpaamqZWauVJzm6XmyBxZmrkTRBmC7CVDwIV74gKRDed+/iDPE79EgQN8z7jer5evfgmcc/k8FRef+74/Xy1JkiQQEREREVWQtugARERERKTaWCiJiIiISCEslERERESkEBZKIiIiIlIICyURERERKYSFkoiIiIgUwkJJRERERAphoSQiIiIihbBQEhEREZFCWCiJiIiISCEslERERESkEBZKIiIiIlIICyURERERKYSFkoiIiIgUwkJJRERERAphoSQiIiIihbBQEhEREZFCWCiJiIiISCEslERERESkEBZKIiIiIlIICyURERERKYSFkoiIiIgUwkJJRERERAphoSQiIiIihbBQEhEREZFCWCiJiIiISCEslERERESkEBZKIiIiIlIICyURERERKYSFkoiIiIgUwkJJRERERAphoSQiIiIihbBQEhEREZFCWCiJiIiISCEslERERESkEBZKIiIiIlKIrugAREREVFJRURGKioqgpaUFXV1daGlpiY5E9EoslERERILJZDLcu3cPt2/fxuPHj/H8+XP5x3R1ddGoUSM0bdoU7du3R926dQUmJXo5LUmSJNEhiIiINJEkSUhNTUVycjJyc3OhpaWF0r4tv/hYixYtYGFhgXr16lVzWqLSsVASEREJkJWVhcjISDx8+LBcX6elpQUtLS1069YNXbp04eVwUgoslERERNXs2bNnCAgIQH5+fqkTybLo0KEDrKysWCpJOD7lTUREVI1ycnIqpUwCwNWrV5GQkFBJyYgqjoWSiIiomkiShKioqEopky9cvHgRDx48qJTXIqooXvImIiKqJjdu3EBERESpH09KSsLixYtf+rElS5agS5cuL/1YrVq14OnpCR0dnUrJSVReXBtERERUDSRJQnJycpk+18PDAx07dizxey1atCj183NycnDr1i20a9dOkYhEFcZCSUREVA0ePXqEzMzMMn2ugYEB7O3ty/X6ly9fZqEk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DOfOnYOZmZmwHJIk4eOPP8bevXtx9uxZ2NjYCMtCRMVYKIlIY+Xm5uLs2bPy6eXFixehq6uL7t27y6eXxsbGnF7+o6CgACYmJujQoQO8vb2F5di4cSOmTJmCXbt2YcyYMcJyENH/Y6EkIvrH1atX5dNLf39/5OTk4K233ioxvaxbt67omEIdPHgQ7777Lnx9fdG7d+9qf//AwEC4ubnhs88+w/r166v9/Yno5VgoiYheIicnB0FBQfLp5eXLl1GjRg306NFDPr00NDTUuOmlJElwdHREfn4+oqKiqnXv582bN2FtbY1u3brBx8cHurq61fbeRPRqLJRERGVw5coV+fQyICAAubm5aNu2rXx66erqijp16oiOWS2Cg4PRvXt3/P777xgxYkS1vGd2djacnZ3x5MkTREdHo2nTptXyvkRUNiyURETllJOTgzNnzsDb2xteXl5ITU2Fnp4eevToAU9PT3h4eKBr165qPb0cMmQI4uPjceHCBejr61fpe0mShNGjR+PQoUMIDQ2Fubl5lb4fEZUfCyURkYIuX74svzR+5swZ5OXloX379vLpZa9evVC7dm3RMStVSkoKTExMsGbNGkyfPr1K32vt2rWYOXMm9u3bh/fff79K34uIKoaFkoioEmVnZyMgIEA+vbx27Rr09fXRs2dP+fSyc+fOajG9/OSTT3Dw4EGkpqZW2TGXp0+fhru7O2bPno3vv/++St6DiBTHQklEVEUkScKlS5fk08vAwEDk5+ejY8eO8umli4sLatWqJTpqhdy9exedO3fGtGnTsHz58kp//atXr8La2hq2trY4ceIEdHR0Kv09iKhysFASEVWT58+fl5he3rhxAzVr1oSLi4t8etmpUyfRMctl/vz5WL16NS5fvozWrVtX2us+f/4cjo6OyMnJQWRkJBo1alRpr01ElY+FkohIAEmScOHCBfn0MigoCAUFBejcubN8LVHPnj2Vfnr57NkzdOrUCQMGDMCOHTsq5TUlScKwYcNw8uRJhIeHw9jYuFJel4iqDgslEZESyMzMhL+/v3x6eevWLdSqVQu9evWSTy87dOggOuZL/fTTT/j8888RFxeHbt26Kfx6y5Ytw7x583Do0CG8/fbblZCQiKoaCyURkZKRJAnJycny6eXZs2dRWFiIrl27yqeXPXr0QM2aNUVHBQDk5+fDyMgIXbt2xYkTJxR6rRMnTmDgwIGYP38+Fi1aVEkJiaiqsVASESm5Z8+ewc/PTz69vHPnDmrXrg1XV1f59LJdu3ZCMx44cADDhg1DQEAAXFxcin8zLw84fx64fLn4f9esCRgYAEZGQI0a/3mNixcvwtbWFi4uLjh8+HC1nsJDRIphoSQiUiGSJOH8+fPy6WVwcDCKiopgaGgon1527969ypeNvyyXvb09tAoLEfrll9DevBkICQEKC//7yXp6gKsrMGUK4O4O6Ojg2bNnsLOzAwBERESgfv361ZqfiBTDQklEpMIyMjLg6+srn17eu3cPderUQe/eveXTyzZt2lRLlvg1a9B41iy8BQA6OkBRUemf/OLjnTtDtnMnhnz/PQIDAxEVFYUuXbpUS14iqjwslEREakKSJCQkJMjLZWhoKIqKimBsbCyfXjo7O0NPT69y37iwEJg+Hdi4EUUAyrUtUkcHUlERvgNg9fff8Ozfv3KzEVG1YKEkIlJT6enpOH36NLy9veHt7Y379++jbt26cHNzk08vFd4dWVgIDB8OHDoEKPrtZOJEYNMmQA1OESLSNCyUREQaQCaTIT4+Xn7vZVhYGGQyGUxMTOTl0snJCTVe8rDMK82aBaxdq3iZfGHFCuDLLyvntYio2rBQEhFpoCdPnpSYXqalpaF+/fry6aW7uzvefPPNV7/I2bNAz56llsnnAFYBiAAQCeApgF8BfPiq19TVBeLiAC4zJ1IpLJRERBpOJpPh3Llz8ullREQEZDIZTE1N5dNLBweHktNLmQwwNARSU0t9+OY6gPYA2gDoAOAMylAodXQAB4fiskpEKoOFkoiISnj8+DFOnToFb29vnDx5Eg8fPkSDBg3Qp08f+fSyZVIS0KfPK18nD8VTyRYAogHYoAyF8oX4eMDUVLE/CBFVGxZKIiIqlUwmQ0xMjPzJ8cjISEiShNMNGqDXs2fQKeO3kHIVSl1d4NNPgZ9+Uig7EVUfFkoiIiqzR48ewefkSQwePx518/PL/HXlnlAaGAApKRXKSETVj+daERFRmTVt2hQf9OxZrjJZIZcuAdnZVfseRFRpWCiJiKh8rl2r+veQyYBbt6r+fYioUrBQEhFR+RQUqNf7EJHCWCiJiKh86tRRr/chIoWxUBIRUfkYGlb9e9SsCbRpU/XvQ0SVgoWSiIjKp0EDoF27qn0PC4viJedEpBJ0RQcgIiIV9PbbwIYNpZ6S88JPANIB3P3n748DuP3P/54KoMHLvkhbGxg0qHJyElG14B5KIiIqv0uXgK5dX/tp7QDcKOVj1/75+H/o6gJ37wLNmlU0HRFVM17yJiKi8uvSpXhK+ZrL0tcBSKX8aveyL9DRAT7+mGWSSMVwQklERBVz717xiTaZmUBlfCvR1gZatCg+Iad+fcVfj4iqDSeURERUMS1bAr/+WjmvpaVVXCj37mWZJFJBLJRERFRxQ4cCv/zy/4WwInR0in/99Rfg4lKp8YioerBQEhGRYsaNA7y8gKZNy7/qR1sbaN0aOHMGGDy4SuIRUdVjoSQiIsW5uwMXLgATJgD6+q+eWGprF3+8Th1g5kwgORlwcqrevERUqfhQDhERVa6nT4HduwE/PyAiAkhL+/+PtWoF2NsD/foBI0cCdeuKy0lElYaFkoiIqlZ2NpCfX3ycYs2aotMQURVgoSQiIiIihfAeSiIiIiJSCAslERERESmEhZKIiIiIFMJCSUREREQKYaEkIiIiIoWwUBIRERGRQlgoiYiIiEghLJREREREpBAWSiIiIiJSCAslERERESmEhZKIiIiIFMJCSUREREQKYaEkIiIiIoWwUBIRERGRQlgoiYiIiEghLJREREREpBAWSiIiIiJSCAslERERESmEhZKIiIiIFMJCSUREREQKYaEkIiIiIoWwUBIRERGRQlgoiYiIiEghLJREREREpBAWSiIiIiJSCAslERERESmEhZKIiIiIFMJCSUREREQKYaEkIiIiIoWwUBIRERGRQlgoiYiIiEghLJREREREpBAWSiIiIiJSCAslERERESmEhZKIiIiIFMJCSUREREQKYaEkIiIiIoX8H0BjRz89otRIAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# QAOA\n", "meo = MinimumEigenOptimizer(min_eigen_solver=QAOA(reps=1, sampler=Sampler(), optimizer=COBYLA()))\n", "result = meo.solve(qp)\n", "print(result.prettyprint())\n", "print(\"\\nsolution:\", prob.interpret(result))\n", "print(\"\\ntime:\", result.min_eigen_solver_result.optimizer_time)\n", "prob.draw(result, pos=pos)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Knapsack problem\n", "\n", "The knapsack problem asks us to find a combination of items such that the total weight is within the capacity of the knapsack and maximize the total value of the items.\n", "The following examples solve an instance of the knapsack problem with 5 items by Numpy eigensolver and QAOA." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from qiskit_optimization.applications import Knapsack" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem name: Knapsack\n", "\n", "Maximize\n", " 3*x_0 + 4*x_1 + 5*x_2 + 6*x_3 + 7*x_4\n", "\n", "Subject to\n", " Linear constraints (1)\n", " 2*x_0 + 3*x_1 + 4*x_2 + 5*x_3 + 6*x_4 <= 10 'c0'\n", "\n", " Binary variables (5)\n", " x_0 x_1 x_2 x_3 x_4\n", "\n" ] } ], "source": [ "prob = Knapsack(values=[3, 4, 5, 6, 7], weights=[2, 3, 4, 5, 6], max_weight=10)\n", "qp = prob.to_quadratic_program()\n", "print(qp.prettyprint())" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "objective function value: 13.0\n", "variable values: x_0=1.0, x_1=1.0, x_2=0.0, x_3=1.0, x_4=0.0\n", "status: SUCCESS\n", "\n", "solution: [0, 1, 3]\n" ] } ], "source": [ "# Numpy Eigensolver\n", "meo = MinimumEigenOptimizer(min_eigen_solver=NumPyMinimumEigensolver())\n", "result = meo.solve(qp)\n", "print(result.prettyprint())\n", "print(\"\\nsolution:\", prob.interpret(result))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "objective function value: 13.0\n", "variable values: x_0=1.0, x_1=1.0, x_2=0.0, x_3=1.0, x_4=0.0\n", "status: SUCCESS\n", "\n", "solution: [0, 1, 3]\n", "\n", "time: 2.0846190452575684\n" ] } ], "source": [ "# QAOA\n", "meo = MinimumEigenOptimizer(min_eigen_solver=QAOA(reps=1, sampler=Sampler(), optimizer=COBYLA()))\n", "result = meo.solve(qp)\n", "print(result.prettyprint())\n", "print(\"\\nsolution:\", prob.interpret(result))\n", "print(\"\\ntime:\", result.min_eigen_solver_result.optimizer_time)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## How to check the Hamiltonian\n", "\n", "If you want to check the actual Hamiltonian generated from your problem instance, you need to apply a converter as follows." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from qiskit_optimization.converters import QuadraticProgramToQubo" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem name: Knapsack\n", "\n", "Maximize\n", " 3*x_0 + 4*x_1 + 5*x_2 + 6*x_3 + 7*x_4\n", "\n", "Subject to\n", " Linear constraints (1)\n", " 2*x_0 + 3*x_1 + 4*x_2 + 5*x_3 + 6*x_4 <= 10 'c0'\n", "\n", " Binary variables (5)\n", " x_0 x_1 x_2 x_3 x_4\n", "\n" ] } ], "source": [ "# the same knapsack problem instance as in the previous section\n", "prob = Knapsack(values=[3, 4, 5, 6, 7], weights=[2, 3, 4, 5, 6], max_weight=10)\n", "qp = prob.to_quadratic_program()\n", "print(qp.prettyprint())" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem name: Knapsack\n", "\n", "Minimize\n", " 26*c0@int_slack@0^2 + 104*c0@int_slack@0*c0@int_slack@1\n", " + 208*c0@int_slack@0*c0@int_slack@2 + 156*c0@int_slack@0*c0@int_slack@3\n", " + 104*c0@int_slack@1^2 + 416*c0@int_slack@1*c0@int_slack@2\n", " + 312*c0@int_slack@1*c0@int_slack@3 + 416*c0@int_slack@2^2\n", " + 624*c0@int_slack@2*c0@int_slack@3 + 234*c0@int_slack@3^2\n", " + 104*x_0*c0@int_slack@0 + 208*x_0*c0@int_slack@1 + 416*x_0*c0@int_slack@2\n", " + 312*x_0*c0@int_slack@3 + 104*x_0^2 + 312*x_0*x_1 + 416*x_0*x_2 + 520*x_0*x_3\n", " + 624*x_0*x_4 + 156*x_1*c0@int_slack@0 + 312*x_1*c0@int_slack@1\n", " + 624*x_1*c0@int_slack@2 + 468*x_1*c0@int_slack@3 + 234*x_1^2 + 624*x_1*x_2\n", " + 780*x_1*x_3 + 936*x_1*x_4 + 208*x_2*c0@int_slack@0 + 416*x_2*c0@int_slack@1\n", " + 832*x_2*c0@int_slack@2 + 624*x_2*c0@int_slack@3 + 416*x_2^2 + 1040*x_2*x_3\n", " + 1248*x_2*x_4 + 260*x_3*c0@int_slack@0 + 520*x_3*c0@int_slack@1\n", " + 1040*x_3*c0@int_slack@2 + 780*x_3*c0@int_slack@3 + 650*x_3^2 + 1560*x_3*x_4\n", " + 312*x_4*c0@int_slack@0 + 624*x_4*c0@int_slack@1 + 1248*x_4*c0@int_slack@2\n", " + 936*x_4*c0@int_slack@3 + 936*x_4^2 - 520*c0@int_slack@0\n", " - 1040*c0@int_slack@1 - 2080*c0@int_slack@2 - 1560*c0@int_slack@3 - 1043*x_0\n", " - 1564*x_1 - 2085*x_2 - 2606*x_3 - 3127*x_4 + 2600\n", "\n", "Subject to\n", " No constraints\n", "\n", " Binary variables (9)\n", " x_0 x_1 x_2 x_3 x_4 c0@int_slack@0 c0@int_slack@1 c0@int_slack@2\n", " c0@int_slack@3\n", "\n" ] } ], "source": [ "# intermediate QUBO form of the optimization problem\n", "conv = QuadraticProgramToQubo()\n", "qubo = conv.convert(qp)\n", "print(qubo.prettyprint())" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "num qubits: 9, offset: 1417.5\n", "\n", "SparsePauliOp(['IIIIIIIIZ', 'IIIIIIIZI', 'IIIIIIZII', 'IIIIIZIII', 'IIIIZIIII', 'IIIZIIIII', 'IIZIIIIII', 'IZIIIIIII', 'ZIIIIIIII', 'IIIIIIIZZ', 'IIIIIIZIZ', 'IIIIIIZZI', 'IIIIIZIIZ', 'IIIIIZIZI', 'IIIIIZZII', 'IIIIZIIIZ', 'IIIIZIIZI', 'IIIIZIZII', 'IIIIZZIII', 'IIIZIIIIZ', 'IIIZIIIZI', 'IIIZIIZII', 'IIIZIZIII', 'IIIZZIIII', 'IIZIIIIIZ', 'IIZIIIIZI', 'IIZIIIZII', 'IIZIIZIII', 'IIZIZIIII', 'IIZZIIIII', 'IZIIIIIIZ', 'IZIIIIIZI', 'IZIIIIZII', 'IZIIIZIII', 'IZIIZIIII', 'IZIZIIIII', 'IZZIIIIII', 'ZIIIIIIIZ', 'ZIIIIIIZI', 'ZIIIIIZII', 'ZIIIIZIII', 'ZIIIZIIII', 'ZIIZIIIII', 'ZIZIIIIII', 'ZZIIIIIII'],\n", " coeffs=[-258.5+0.j, -388. +0.j, -517.5+0.j, -647. +0.j, -776.5+0.j, -130. +0.j,\n", " -260. +0.j, -520. +0.j, -390. +0.j, 78. +0.j, 104. +0.j, 156. +0.j,\n", " 130. +0.j, 195. +0.j, 260. +0.j, 156. +0.j, 234. +0.j, 312. +0.j,\n", " 390. +0.j, 26. +0.j, 39. +0.j, 52. +0.j, 65. +0.j, 78. +0.j,\n", " 52. +0.j, 78. +0.j, 104. +0.j, 130. +0.j, 156. +0.j, 26. +0.j,\n", " 104. +0.j, 156. +0.j, 208. +0.j, 260. +0.j, 312. +0.j, 52. +0.j,\n", " 104. +0.j, 78. +0.j, 117. +0.j, 156. +0.j, 195. +0.j, 234. +0.j,\n", " 39. +0.j, 78. +0.j, 156. +0.j])\n" ] } ], "source": [ "# qubit Hamiltonian and offset\n", "op, offset = qubo.to_ising()\n", "print(f\"num qubits: {op.num_qubits}, offset: {offset}\\n\")\n", "print(op)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "

Version Information

Qiskit SoftwareVersion
qiskit-terra0.25.0.dev0+1d844ec
qiskit-aer0.12.0
qiskit-ibmq-provider0.20.2
qiskit-nature0.7.0
qiskit-optimization0.6.0
System information
Python version3.10.11
Python compilerClang 14.0.0 (clang-1400.0.29.202)
Python buildmain, Apr 7 2023 07:31:31
OSDarwin
CPUs4
Memory (Gb)16.0
Thu May 18 16:57:10 2023 JST
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

This code is a part of Qiskit

© Copyright IBM 2017, 2023.

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.

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import tutorial_magics\n", "\n", "%qiskit_version_table\n", "%qiskit_copyright" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 4 }