{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 3-Plus-Annealing Cloud Web (NEDO\u306eCMOS-Annealer)" ] }, { "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/003-plus-CMOSAnnealer.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u3053\u3053\u3067\u306f \u65e5\u7acb \u306e\u4f5c\u3063\u305f\u300cCMOS\u30a2\u30cb\u30fc\u30ea\u30f3\u30b0\u30de\u30b7\u30f3\u300d\u3092Web API\u3067\u63d0\u4f9b\u3057\u3066\u3044\u308b NEDO \u306e [Annealing Cloud Web](https://annealing-cloud.com) \u3078 OpenJij\u3092\u901a\u3057\u3066\u63a5\u7d9a\u3057\u3066 CMOS \u30a2\u30cb\u30fc\u30e9\u3092\u4f7f\u3063\u3066\u307f\u307e\u3059\u3002\n", "\n", "\n", "> OpenJij\u306b\u3088\u308b\u30b5\u30dd\u30fc\u30c8\u306f\u63a5\u7d9a\u5148\u306eAnnealing Cloud Web\u81ea\u4f53\u306e\u6c38\u7d9a\u6027\u3092\u4fdd\u8a3c\u3059\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u4e88\u544a\u306a\u304f\u30b5\u30fc\u30d3\u30b9\u7d42\u4e86\u3084\u5185\u5bb9\u306e\u5909\u66f4\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\n", "> \u3053\u306e\u30ce\u30fc\u30c8\u30d6\u30c3\u30af\u306f 2019/4/26 \u306b\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002 \n", "> \u307e\u305fAnnealing Cloud Web\u306e\u63d0\u4f9b\u3057\u3066\u3044\u308bWeb API\u306f\u65e5\u7acbCMOS\u30a2\u30cb\u30fc\u30ea\u30f3\u30b0\u30de\u30b7\u30f3\u5168\u4f53\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u6a19\u6e96\u7684\u306a\u4ed5\u69d8\u3068\u3044\u3046\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u5b9f\u88c5\u4f8b\u3067\u3059\u3002OpenJij\u3067\u306fAnnealing Cloud Web\u306eWeb API\u3067\u63d0\u4f9b\u3057\u3066\u3044\u308bCMOS\u30a2\u30cb\u30fc\u30ea\u30f3\u30b0\u30de\u30b7\u30f3\u306e\u6a5f\u80fd\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Annealing Cloud Web \u306b\u3064\u3044\u3066\u306f[\u3053\u3053](https://annealing-cloud.com)\u3092\u898b\u3066\u304f\u3060\u3055\u3044\u3002 \n", "OpenJij\u3067\u306fAnnealing Cloud Web \u306e\u516c\u958b\u3057\u3066\u3044\u308b Web API \u3092\u30e9\u30c3\u30d7\u3057\u3001OpenJij\u306e\u4ed6\u306e\u30b5\u30f3\u30d7\u30e9\u30fc(SASampler\u3084SQASampler)\u3068\u540c\u3058\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3067\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002 \n", "\n", "### token \u53d6\u5f97\n", "Annealing cloud web \u3092\u4f7f\u3046\u306b\u306f token\u3092\u767a\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n", "https://annealing-cloud.com/web-api/token-request.html \u3053\u3053\u304b\u3089\u554f\u3044\u5408\u308f\u305b\u308c\u3070\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u3000\n", "\n", "### OpenJij \u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\n", "\n", "\u3067\u306f\u65e9\u901f\u306b\u30b3\u30fc\u30c9\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002\n", "\n", "\u307e\u305aopenjij \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name: openjij\r\n", "Version: 0.1.0\r\n", "Summary: Framework for the Ising model and QUBO\r\n", "Home-page: https://openjij.github.io/OpenJij/\r\n", "Author: Jij Inc.\r\n", "Author-email: openjij@j-ij.com\r\n", "License: Apache License 2.0\r\n", "Location: /home/jiko/.local/lib/python3.8/site-packages\r\n", "Requires: scipy, requests, jij-cimod, numpy, dimod\r\n", "Required-by: \r\n" ] } ], "source": [ "#!pip install openjij\n", "!pip show openjij" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import openjij as oj" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u4ee5\u4e0b\u306e\u3088\u3046\u306b``SASampler`` \u306a\u3069\u3092\u4f7f\u3046\u6642\u3068\u540c\u3058\u304f CMOSAnnealer \u3068\u3044\u3046\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3057\u3066 sample_ising \u3067\u89e3\u3092\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u3053\u3053\u3067token \u306b\u306f Annealing cloud web \u3067\u53d6\u5f97\u3057\u305f token \u3092\u4f7f\u3063\u3066\u304f\u3060\u3055\u3044\u3002" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1}]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cmos = oj.CMOSAnnealer(token=\"\", iteration=5)\n", "h = {0: 1}\n", "J = {(0, 1): -1, (1, 2): -1}\n", "response = cmos.sample_ising(h, J)\n", "[{index: s for index, s in zip(response.indices, state)} for state in response.states]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u307e\u305fAnnealing Cloud Web \u3067\u306f ASIC\u5b9f\u88c5\u3068FPGA\u5b9f\u88c5\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002 \n", "\u305d\u308c\u3089\u306fCMOSAnnealer\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u5f15\u6570\u306e``machine_type``\u3067\u6307\u5b9a\u3057\u307e\u3059\u3002\n", "\u30c7\u30d5\u30a9\u30eb\u30c8\u306fASIC\u3067\u3059\u3002\n", "\n", "FPGA\u3068ASIC\u3067\u6271\u3048\u308b\u30d1\u30e9\u30e1\u30fc\u30bf(\u554f\u984c\u30b5\u30a4\u30ba\u3084\u76f8\u4e92\u4f5c\u7528\u306e\u5927\u304d\u3055\u306e\u7bc4\u56f2)\u304c\u9055\u3046\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002(\u8a73\u7d30 : https://annealing-cloud.com/web-api/reference/v2.html)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1}]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cmos = oj.CMOSAnnealer(token=\"\", iteration=5, machine_type=\"FPGA\")\n", "h = {0: 1}\n", "J = {(0, 1): -1, (1, 2): -1}\n", "response = cmos.sample_ising(h, J)\n", "[{index: s for index, s in zip(response.indices, state)} for state in response.states]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## \u76f8\u4e92\u4f5c\u7528\u3068\u30ad\u30f3\u30b0\u30b0\u30e9\u30d5\n", "\n", "\n", "### \u4ed6\u306eSampler\u3068\u540c\u3058 \u8f9e\u66f8\u578b\u3067\u6e21\u3059\n", "\n", "\u4e0a\u8a18\u306e\u3088\u3046\u306b\u30a4\u30b8\u30f3\u30b0\u306e h \u3068 J \u3092\u8f9e\u66f8\u578b\u3067\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6dfb\u5b57\u306fCMOS\u30a2\u30cb\u30fc\u30ea\u30f3\u30b0\u30de\u30b7\u30f3\u306e\u6301\u3064\u30ad\u30f3\u30b0\u30b0\u30e9\u30d5([\u3053\u3061\u3089\u3092\u53c2\u7167](https://annealing-cloud.com/play/ising-editor.html))\u306e2\u6b21\u5143\u683c\u5b50(x, y)\u3092\u5de6\u4e0a\u304b\u3089\u6a2a\u306b\u9806\u756a\u306b\u756a\u53f7\u3092\u3064\u3051\u3066\u3044\u3063\u305f1\u6b21\u5143\u6dfb\u5b57(index)\u306b\u5bfe\u5fdc\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002\n", "\n", "- 2\u6b21\u5143\u683c\u5b50(\u30ad\u30f3\u30b0\u30b0\u30e9\u30d5\u4e0a\u306e\u5ea7\u6a19) \n", " - x\u8ef8 : 0 -> Lx\n", " - y\u8ef8 : 0 -> Ly\n", "- 1\u6b21\u5143\u306e\u6dfb\u5b57\n", " - index = x + Ly * y\n", " \n", "\u4f8b\u3048\u3070 FPGA \u5b9f\u88c5\u3067\u3042\u308c\u3070 2\u6b21\u5143\u683c\u5b50\u306ex\u8ef8\u65b9\u5411\u306e\u7bc4\u56f2\u306f 0-79 \u306a\u306e\u3067\u3001{(0, 80): -1} \u3068\u3044\u3046\u76f8\u4e92\u4f5c\u7528\u3092\u6e21\u305b\u3070\u30010\u756a\u76ee\u306e\u30b9\u30d4\u30f3\u3068\u30ad\u30f3\u30b0\u30b0\u30e9\u30d5\u4e0a\u3067\u771f\u4e0b\u306e\u30b9\u30d4\u30f3\u306b -1 \u306e\u7d50\u5408\u304c\u3067\u304d\u307e\u3059\u3002" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{0: 1, 80: 1}]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cmos_fpga = oj.CMOSAnnealer(token=\"\", machine_type=\"FPGA\")\n", "response = cmos_fpga.sample_ising(h={}, J={(0, 80):-1})\n", "[{index: s for index, s in zip(response.indices, state)} for state in response.states]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "ASIC \u4e0a\u3067\u306fx\u8ef8\u65b9\u5411\u306e\u5927\u304d\u3055\u304c\u9055\u3046\u306e\u3067 (0, 80) \u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u540c\u3058\u884c\u306e\u30b9\u30d4\u30f3\u3092\u3057\u3066\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u306a\u308a\u3001\u30ad\u30f3\u30b0\u30b0\u30e9\u30d5\u4e0a\u3067\u3064\u306a\u304c\u3063\u3066\u3044\u306a\u3044\u306e\u3067\u30a8\u30e9\u30fc\u306b\u306a\u308a\u307e\u3059\u3002\n", "\n", "\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u7e4b\u304c\u3063\u3066\u3044\u306a\u3044\u5909\u6570\u540c\u58eb\u3092\u76f8\u4e92\u4f5c\u7528\u3055\u305b\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u306e\u3067 ValueError \u3067\u3059\u3002" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "Graph is incomplete xi: 0, yi: 0, xj: 80, yj: 0, p:-1", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mcmos_fpga\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCMOSAnnealer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtoken\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"4217cf4d6928cfe72921e266ee3b655c\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmachine_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"ASIC\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcmos_fpga\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample_ising\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mJ\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m80\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# ValueError !!\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/miniconda3/lib/python3.6/site-packages/openjij/sampler/cmos_annealer.py\u001b[0m in \u001b[0;36msample_ising\u001b[0;34m(self, h, J, king_graph)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sampling\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_king_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mspin_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mspin_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtoken\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoken\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mh\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mJ\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 43\u001b[0;31m \u001b[0m_king_graph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mKingGraph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmachine_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmachine_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mJ\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mJ\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mspin_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mspin_type\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 44\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sampling\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_king_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mspin_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mspin_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtoken\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoken\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/miniconda3/lib/python3.6/site-packages/openjij/model/king_graph.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, machine_type, h, J, Q, king_graph, spin_type)\u001b[0m\n\u001b[1;32m 86\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ising_king_graph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mising_int\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 88\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validation_ising_king_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 89\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_convert_to_BQM_format\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mking_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mspin_type\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/miniconda3/lib/python3.6/site-packages/openjij/model/king_graph.py\u001b[0m in \u001b[0;36m_validation_ising_king_graph\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mxi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mxj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxj\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxj\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0myi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0myj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myj\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myj\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 128\u001b[0m raise ValueError('Graph is incomplete xi: {}, yi: {}, xj: {}, yj: {}, p:{}'\n\u001b[0;32m--> 129\u001b[0;31m .format(xi, yi, xj, yj, p))\n\u001b[0m\u001b[1;32m 130\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprange\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprange\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 131\u001b[0m raise ValueError('Graph is incomplete xi: {}, yi: {}, xj: {}, yj: {}, p: {}'\n", "\u001b[0;31mValueError\u001b[0m: Graph is incomplete xi: 0, yi: 0, xj: 80, yj: 0, p:-1" ] } ], "source": [ "cmos_fpga = oj.CMOSAnnealer(token=\"\", machine_type=\"ASIC\")\n", "response = cmos_fpga.sample_ising(h={}, J={(0, 80):-1}) # ValueError !! " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### \u30ad\u30f3\u30b0\u30b0\u30e9\u30d5\u4e0a\u306e2\u6b21\u5143\u5ea7\u6a19\u3067\u76f8\u4e92\u4f5c\u7528\u3092\u6e21\u3059\n", "\n", "\u307e\u305f\u5165\u529b\u306fAnnealing Cloud Web \u306e\u5165\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u3082\u884c\u3048\u307e\u3059\u3002\u305d\u306e\u969b\u306f king_graph \u3068\u3044\u3046\u5f15\u6570\u306b\u6e21\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n", "\n", "Annealing Cloud Web\u306e\u5165\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\uff12\u6b21\u5143\u683c\u5b50\u306e\u5ea7\u6a19\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n", "\n", "- Linear term : [x1, y1, x1, y1, value]\n", "- Quadratic term : [x1, y1, x2, y2, value]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1},\n", " {0: -1, 1: -1, 2: -1}]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cmos = oj.CMOSAnnealer(token=\"\", iteration=5, machine_type=\"FPGA\")\n", "\n", "king_graph = [[0, 0, 0, 0, 1], [0, 0, 1, 0, -1],[1, 0, 2, 0, -1]]\n", "# \u2191\u306f\n", "# h = {0: 1}\n", "# J = {(0, 1): -1, (1, 2): -1}\n", "# \u3068\u304a\u306a\u3058\n", "\n", "response = cmos.sample_ising(king_graph = king_graph)\n", "[{index: s for index, s in zip(response.indices, state)} for state in response.states]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### QUBO\u3092\u89e3\u304f\n", "\n", "\u5b9f\u7528\u7684\u306b\u306f 0, 1 \u5909\u6570\u3067\u89e3\u304d\u305f\u3044\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002\u305d\u306e\u6642\u306f\u4ed6\u306eSampler\u3068\u540c\u3058\u304f sample_qubo \u3092\u4f7f\u3048\u3070\u826f\u3044\u3067\u3059\u3002" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{0: 1, 80: 1}]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cmos_fpga = oj.CMOSAnnealer(token=\"\", machine_type=\"FPGA\")\n", "response = cmos_fpga.sample_qubo(Q={(0, 80):-4})\n", "[{index: s for index, s in zip(response.indices, state)} for state in response.states]" ] } ], "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }