{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 11-HUBO: Higher Order Unconstraint Binary Optimization" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "view-in-github" }, "source": [ "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/OpenJij/OpenJijTutorial/blob/master/source/ja/011-HuboSolver.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u901a\u5e38\u306e\u30a4\u30b8\u30f3\u30b0\u30e2\u30c7\u30eb\u306b\u5bfe\u3057\u3066\u9ad8\u6b21\u306e\u9805\u3092\u5c0e\u5165\u3057\u305f\u30e2\u30c7\u30eb\u3092\u8003\u3048\u3066\u307f\u307e\u3059\u3002 \u5177\u4f53\u7684\u306b\u306f\uff12\u5024\u306e\u30d0\u30a4\u30ca\u30ea\u5909\u6570$\\sigma_{i} \\in \\{-1, +1\\}$ \u307e\u305f\u306f $\\sigma_{i} \\in \\{0, 1\\}$\u306b\u5bfe\u3057\u3066\u6b21\u306e\u3088\u3046\u306a\u30a8\u30cd\u30eb\u30ae\u30fc\u95a2\u6570\u3092\u5c0e\u5165\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\n", "\n", "$$\n", "H= c+\\sum_{i} h_{i} \\sigma_{i}+\\sum_{i" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.hist(energy_hubo, label='HUBO', range=(-3, 1), bins=10, alpha=0.5)\n", "plt.hist(energy_quad, label='Through QUBO', range=(-3, 1), bins=10, alpha=0.5)\n", "plt.legend()\n", "plt.xlabel('Energy')\n", "plt.ylabel('Frequency')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "HUBO\u3092\u76f4\u63a5\u89e3\u3044\u305f\u65b9\u304cQUBO\u5909\u63db\u3092\u7528\u3044\u305f\u89e3\u6cd5\u306b\u6bd4\u3079\u3066\u308f\u305a\u304b\u306b\u591a\u304f\u6700\u9069\u89e3\u304c\u5f97\u3089\u308c\u3066\u3044\u307e\u3059\u3002\n", "\u305f\u3060\u3057\u3053\u306e\u554f\u984c\u3067\u306f\u4f8b\u3048\u3070strength\u30921\u306b\u8a2d\u5b9a\u3059\u308b\u3068QUBO\u5909\u63db\u3059\u308b\u89e3\u6cd5\u3067\u3088\u308a\u591a\u304f\u306e\u6700\u9069\u89e3\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\n", "\u3064\u307e\u308a\u306f\u3058\u3081\u306b\u8a2d\u5b9a\u3057\u305fstrength=5\u3068\u3044\u3046\u5024\u304c\u5927\u304d\u3059\u304e\u305f\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\n", "\u5b9f\u969b\u306b\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Frequency')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# strength\u30921\u306b\u8a2d\u5b9a\u3057\u3066QUBO\u306b\u5909\u63db\u3057\u307e\u3059\u3002\n", "bqm_dimod = dimod.make_quadratic(poly=polynomial, strength=1.0, vartype=\"SPIN\")\n", "\n", "#\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u6574\u6570\u306b\u5909\u63db\u3057\u3066\u304b\u3089OpenJij\u3067\u89e3\u304d\u307e\u3059\u3002\n", "bqm_dimod.relabel_variables(mapping)\n", "bqm_oj = oj.BinaryQuadraticModel(dict(bqm_dimod.linear), dict(bqm_dimod.quadratic), bqm_dimod.offset, vartype=\"SPIN\")\n", "response = sampler.sample(bqm_oj, num_reads=num_reads)\n", "energy_quad = calculate_true_energy(polynomial, response, 3)\n", "\n", "# \u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n", "plt.hist(energy_hubo, label='HUBO', range=(-3, 1), bins=10, alpha=0.5)\n", "plt.hist(energy_quad, label='Through QUBO', range=(-3, 1), bins=10, alpha=0.5)\n", "plt.legend()\n", "plt.xlabel('Energy')\n", "plt.ylabel('Frequency')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u4eca\u306e\u5834\u5408QUBO\u5909\u63db\u306b\u3088\u308b\u89e3\u6cd5\u3067\u5e38\u306b\u6700\u9069\u89e3\u304c\u5f97\u3089\u308c\u3066\u3044\u307e\u3059\u3002\n", "\u305f\u3060\u3057\u3001\u6700\u9069\u306astrength\u306e\u5024\u306f\u4e8b\u524d\u306b\u5206\u304b\u3089\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n", "\u4eca\u306e\u5834\u5408strength=1\u3068\u3057\u3066\u6700\u9069\u89e3\u304c\u5f97\u3089\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u4e00\u822c\u306eHUBO\u306b\u5bfe\u3057\u3066\u9069\u5207\u306astrength\u3092\u6c7a\u5b9a\u3059\u308b\u3053\u3068\u306f\u96e3\u3057\u3044\u554f\u984c\u3067\u3059\u3002\n", "\u307e\u305f\u3001QUBO\u5909\u63db\u3092\u884c\u3046\u3068\u3001\u5909\u6570\u306e\u6570\u3084\u76f8\u4e92\u4f5c\u7528\u306e\u6570\u304c\u5897\u3048\u3066\u3057\u307e\u3046\u3053\u3068\u3082\u554f\u984c\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u4f59\u5206\u306a\u30e1\u30e2\u30ea\u304c\u5fc5\u8981\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\n", "\n", "\u3053\u3053\u307e\u3067\u4f8b\u3068\u3057\u3066\u6271\u3063\u3066\u304d\u305f\u30e2\u30c7\u30eb\u306f\u5358\u7d14\u3059\u304e\u305f\u306e\u3067\u3001\u3082\u3046\u5c11\u3057\u554f\u984c\u3067\u4e21\u8005\u306e\u89e3\u653e\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\n", "\u5909\u6570\u306e\u6570\u3092$N=10$\u3001\u76f8\u4e92\u4f5c\u7528\u30923\u6b21\u306e\u5168\u7d50\u5408\u306b\u3057\u3066\u5024\u3092-1\u304b\u3089+1\u306e\u30e9\u30f3\u30c0\u30e0\u306b\u3057\u3066\u307f\u307e\u3059\u3002\n", "\u307e\u305a\u306f\u76f8\u4e92\u4f5c\u7528\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "import random\n", "\n", "N=10\n", "polynomial = {}\n", "for i in range(1, N+1):\n", " for j in range(i+1, N+1):\n", " for k in range(j+1, N+1):\n", " polynomial[(i,j,k)] = random.uniform(-1, +1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u4eca\u307e\u3067\u3068\u540c\u69d8\u306b100\u56deSA\u3092\u884c\u3044\u5f97\u3089\u308c\u305f\u30a8\u30cd\u30eb\u30ae\u30fc\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3059\u3002QUBO\u5909\u63db\u306e\u969b\u306estrength\u306f2\u3068\u3057\u307e\u3057\u305f\u3002" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Frequency')" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#HUBO\u30bd\u30eb\u30d0\u30fc\u3067\u76f4\u63a5\u89e3\u304d\u307e\u3059\u3002\n", "response = sampler.sample_hubo(polynomial, \"SPIN\", num_reads=num_reads)\n", "energy_hubo = response.energies\n", "\n", "#QUBO\u5909\u63db\u3092\u901a\u3057\u3066\u89e3\u304d\u307e\u3059\u3002\n", "bqm_dimod = dimod.make_quadratic(poly=polynomial, strength=2, vartype=\"SPIN\")\n", "mapping = generate_mapping(bqm_dimod.variables, N)\n", "bqm_dimod.relabel_variables(mapping)\n", "bqm_oj = oj.BinaryQuadraticModel(dict(bqm_dimod.linear), dict(bqm_dimod.quadratic), bqm_dimod.offset, vartype=\"SPIN\")\n", "response = sampler.sample(bqm_oj, num_reads=num_reads)\n", "energy_quad = calculate_true_energy(polynomial, response, N)\n", "\n", "# \u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n", "max_e = max(max(energy_hubo), max(energy_quad))\n", "min_e = min(min(energy_hubo), min(energy_quad))\n", "plt.hist(energy_hubo, label='HUBO', range=(min_e, max_e), alpha=0.5)\n", "plt.hist(energy_quad, label='Through QUBO', range=(min_e, max_e), alpha=0.5)\n", "plt.legend()\n", "plt.xlabel('Energy')\n", "plt.ylabel('Frequency')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u3053\u306e\u30e2\u30c7\u30eb\u3067\u306f\u304b\u306a\u308a\u5dee\u304c\u51fa\u3066\u3044\u308b\u306e\u304c\u5206\u304b\u308a\u307e\u3059\u3002HUBO\u3092\u76f4\u63a5\u89e3\u3044\u305f\u307b\u3046\u304c\u3088\u308a\u30a8\u30cd\u30eb\u30ae\u30fc\u306e\u4f4e\u3044\u89e3\u304c\u5f97\u3089\u308c\u3066\u3044\u307e\u3059\u3002\n", "\u3082\u3061\u308d\u3093strength\u306e\u5024\u3092\u3088\u308a\u9069\u5207\u306a\u3082\u306e\u306b\u3059\u308c\u3070QUBO\u5909\u63db\u306e\u89e3\u6cd5\u306b\u3088\u308b\u89e3\u3082\u6539\u5584\u3059\u308b\u53ef\u80fd\u6027\u306f\u3042\u308a\u307e\u3059\u304c\u3001\u305d\u308c\u3092\u884c\u3046\u306e\u306f\u7c21\u5358\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## \u307e\u3068\u3081\n", "\n", "QUBO\u5909\u63db\u3092\u901a\u3057\u305f\u89e3\u6cd5\u3067\u306f\u3001QUBO\u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306e\u524d\u51e6\u7406\u3084strength\u3068\u3044\u3046\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n", "\u4e00\u65b9\u3067HUBO\u30bd\u30eb\u30d0\u30fc\u3092\u5229\u7528\u3059\u308c\u3070\u305d\u306e\u3088\u3046\u306a\u51e6\u7406\u306f\u4e0d\u8981\u306b\u306a\u308a\u3001\u5f97\u3089\u308c\u308b\u89e3\u3082(\u5c11\u306a\u304f\u3068\u3082\u4eca\u56de\u53d6\u308a\u6271\u3063\u305f\u30e2\u30c7\u30eb\u306b\u95a2\u3057\u3066\u306f)QUBO\u5909\u63db\u3092\u884c\u3046\u89e3\u6cd5\u3068\u540c\u7a0b\u5ea6\u4ee5\u4e0a\u306e\u89e3\u304c\u5f97\u3089\u308c\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3057\u305f\u3002" ] } ], "metadata": { "interpreter": { "hash": "26149c88d220c3ed2d17341f1c6f96caae4173defcdd371f100d436532ba42d1" }, "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.9.7" } }, "nbformat": 4, "nbformat_minor": 4 }