{ "cells": [ { "cell_type": "markdown", "id": "814bf901-a2bc-48f2-a85b-fb422e29cda2", "metadata": {}, "source": [ "# Initialization" ] }, { "cell_type": "code", "execution_count": 3, "id": "626ba3b9-1935-41cc-bf09-e7f85ef2f998", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "('2.3.2', '2.3.1', '0.12.20')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from juniqutils import save_ising_file, load_ising_file\n", "import os\n", "import json\n", "import numpy as np\n", "import pandas as pd\n", "import dimod\n", "from collections import defaultdict\n", "np.__version__, pd.__version__, dimod.__version__" ] }, { "cell_type": "markdown", "id": "abcd5076-44f3-4e8c-a4a8-3c17c2796992", "metadata": {}, "source": [ "# Generation" ] }, { "cell_type": "markdown", "id": "969ff1f2-ce3e-43af-bf94-160480df0ab4", "metadata": {}, "source": [ "## Problem specification" ] }, { "cell_type": "code", "execution_count": 4, "id": "bc903018-2693-4bcb-98bb-9d3024e485fd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Berlin',\n", " 'Madrid',\n", " 'Rome',\n", " 'Paris',\n", " 'Vienna',\n", " 'Warsaw',\n", " 'Hamburg',\n", " 'Bucharest',\n", " 'Budapest',\n", " 'Barcelona',\n", " 'Munich',\n", " 'Milan',\n", " 'Sofia',\n", " 'Prague',\n", " 'Cologne',\n", " 'Stockholm',\n", " 'Amsterdam',\n", " 'Naples',\n", " 'Marseille',\n", " 'Turin',\n", " 'Krakow',\n", " 'Valencia',\n", " 'Zagreb',\n", " 'Frankfurt',\n", " 'Seville']" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "TSP_DATA = json.load(open('tsp_data.json'))\n", "CITIES = TSP_DATA['CITIES']\n", "CITIES" ] }, { "cell_type": "code", "execution_count": 5, "id": "52172ca2-c3fc-41b7-8812-bddf723a1b64", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BerlinMadridRomeParisViennaWarsawHamburgBucharestBudapestBarcelona...StockholmAmsterdamNaplesMarseilleTurinKrakowValenciaZagrebFrankfurtSeville
City
Berlin0.0023.2515.6811.017.285.953.1017.938.9318.63...12.486.8917.4715.4012.326.5021.8211.045.8927.51
Madrid23.250.0019.9712.5624.3328.3421.5333.8924.966.31...32.6817.6521.6310.8314.8327.503.7522.0917.915.16
Rome15.6819.970.0014.3711.5018.0517.5721.0012.0314.29...27.6717.122.429.737.2716.1017.409.1413.1923.54
Paris11.0112.5614.370.0012.6715.879.4923.8314.8610.33...20.515.5915.987.578.1615.4213.4514.145.8416.97
Vienna7.2824.3311.5012.670.006.919.9211.502.5318.04...19.1711.9112.9814.2910.155.0321.244.097.6527.34
Warsaw5.9528.3418.0515.876.910.008.4617.148.5023.20...17.0511.9619.5719.9616.793.5126.3810.6810.8432.48
Hamburg3.1021.5317.579.499.928.460.0020.6111.6417.99...11.524.9519.4114.7613.209.1921.1813.215.4125.94
Bucharest17.9333.8921.0023.8311.5017.1420.610.009.4028.63...30.2123.4722.9223.9519.9513.9331.7012.0019.1637.67
Budapest8.9324.9612.0314.862.538.5011.649.400.0019.30...20.7713.9713.6014.9110.875.9822.483.489.8828.62
Barcelona18.636.3114.2910.3318.0423.2017.9928.6319.300.00...29.8015.1816.025.269.2122.153.7016.5113.389.80
Munich6.0919.439.758.544.5310.658.0715.966.7613.82...18.128.5111.5310.547.009.0916.935.884.2423.12
Milan11.3916.096.128.878.8615.4512.2718.549.4710.57...23.5511.577.716.102.0113.7013.616.687.4619.71
Sofia16.6730.0317.0922.0810.3516.3219.485.298.1724.53...28.7721.9718.7120.0416.0113.9627.658.4417.8833.75
Prague3.9122.3513.6710.583.527.226.5914.215.1317.29...15.738.9315.3413.9210.555.4020.347.305.5426.44
Cologne6.0917.4114.625.249.3611.164.5720.8711.5913.91...16.062.9516.2911.559.9211.2017.9711.362.1821.83
Stockholm12.4832.6827.6720.5119.1717.0511.5230.2120.7729.80...0.0016.0229.5126.0524.4417.8832.4722.9716.5237.08
Amsterdam6.8917.6517.125.5911.9111.964.9523.4713.9715.18...16.020.0018.8112.2512.4612.4418.5013.934.7622.03
Naples17.4721.632.4215.9812.9819.5719.4122.9213.6016.02...29.5118.810.0011.388.9317.8519.0510.8414.6925.16
Marseille15.4010.839.737.5714.2919.9614.7623.9514.915.26...26.0512.2511.380.004.9818.968.3811.9810.0014.48
Turin12.3214.837.278.1610.1516.7913.2019.9510.879.21...24.4412.468.934.980.0014.7912.237.858.2618.33
Krakow6.5027.5016.1015.425.033.519.1913.935.9822.15...17.8812.4417.8518.9614.790.0025.398.779.9731.49
Valencia21.823.7517.4013.4521.2426.3821.1831.7022.483.70...32.4718.5019.058.3812.2325.390.0019.8316.486.51
Zagreb11.0422.099.1414.144.0910.6813.2112.003.4816.51...22.9713.9310.8411.987.858.7719.830.009.6025.70
Frankfurt5.8917.9113.195.847.6510.845.4119.169.8813.38...16.524.7614.6910.008.269.9716.489.600.0022.49
Seville27.515.1623.5416.9727.3432.4825.9437.6728.629.80...37.0822.0325.1614.4818.3331.496.5125.7022.490.00
\n", "

25 rows × 25 columns

\n", "
" ], "text/plain": [ " Berlin Madrid Rome Paris Vienna Warsaw Hamburg Bucharest \\\n", "City \n", "Berlin 0.00 23.25 15.68 11.01 7.28 5.95 3.10 17.93 \n", "Madrid 23.25 0.00 19.97 12.56 24.33 28.34 21.53 33.89 \n", "Rome 15.68 19.97 0.00 14.37 11.50 18.05 17.57 21.00 \n", "Paris 11.01 12.56 14.37 0.00 12.67 15.87 9.49 23.83 \n", "Vienna 7.28 24.33 11.50 12.67 0.00 6.91 9.92 11.50 \n", "Warsaw 5.95 28.34 18.05 15.87 6.91 0.00 8.46 17.14 \n", "Hamburg 3.10 21.53 17.57 9.49 9.92 8.46 0.00 20.61 \n", "Bucharest 17.93 33.89 21.00 23.83 11.50 17.14 20.61 0.00 \n", "Budapest 8.93 24.96 12.03 14.86 2.53 8.50 11.64 9.40 \n", "Barcelona 18.63 6.31 14.29 10.33 18.04 23.20 17.99 28.63 \n", "Munich 6.09 19.43 9.75 8.54 4.53 10.65 8.07 15.96 \n", "Milan 11.39 16.09 6.12 8.87 8.86 15.45 12.27 18.54 \n", "Sofia 16.67 30.03 17.09 22.08 10.35 16.32 19.48 5.29 \n", "Prague 3.91 22.35 13.67 10.58 3.52 7.22 6.59 14.21 \n", "Cologne 6.09 17.41 14.62 5.24 9.36 11.16 4.57 20.87 \n", "Stockholm 12.48 32.68 27.67 20.51 19.17 17.05 11.52 30.21 \n", "Amsterdam 6.89 17.65 17.12 5.59 11.91 11.96 4.95 23.47 \n", "Naples 17.47 21.63 2.42 15.98 12.98 19.57 19.41 22.92 \n", "Marseille 15.40 10.83 9.73 7.57 14.29 19.96 14.76 23.95 \n", "Turin 12.32 14.83 7.27 8.16 10.15 16.79 13.20 19.95 \n", "Krakow 6.50 27.50 16.10 15.42 5.03 3.51 9.19 13.93 \n", "Valencia 21.82 3.75 17.40 13.45 21.24 26.38 21.18 31.70 \n", "Zagreb 11.04 22.09 9.14 14.14 4.09 10.68 13.21 12.00 \n", "Frankfurt 5.89 17.91 13.19 5.84 7.65 10.84 5.41 19.16 \n", "Seville 27.51 5.16 23.54 16.97 27.34 32.48 25.94 37.67 \n", "\n", " Budapest Barcelona ... Stockholm Amsterdam Naples Marseille \\\n", "City ... \n", "Berlin 8.93 18.63 ... 12.48 6.89 17.47 15.40 \n", "Madrid 24.96 6.31 ... 32.68 17.65 21.63 10.83 \n", "Rome 12.03 14.29 ... 27.67 17.12 2.42 9.73 \n", "Paris 14.86 10.33 ... 20.51 5.59 15.98 7.57 \n", "Vienna 2.53 18.04 ... 19.17 11.91 12.98 14.29 \n", "Warsaw 8.50 23.20 ... 17.05 11.96 19.57 19.96 \n", "Hamburg 11.64 17.99 ... 11.52 4.95 19.41 14.76 \n", "Bucharest 9.40 28.63 ... 30.21 23.47 22.92 23.95 \n", "Budapest 0.00 19.30 ... 20.77 13.97 13.60 14.91 \n", "Barcelona 19.30 0.00 ... 29.80 15.18 16.02 5.26 \n", "Munich 6.76 13.82 ... 18.12 8.51 11.53 10.54 \n", "Milan 9.47 10.57 ... 23.55 11.57 7.71 6.10 \n", "Sofia 8.17 24.53 ... 28.77 21.97 18.71 20.04 \n", "Prague 5.13 17.29 ... 15.73 8.93 15.34 13.92 \n", "Cologne 11.59 13.91 ... 16.06 2.95 16.29 11.55 \n", "Stockholm 20.77 29.80 ... 0.00 16.02 29.51 26.05 \n", "Amsterdam 13.97 15.18 ... 16.02 0.00 18.81 12.25 \n", "Naples 13.60 16.02 ... 29.51 18.81 0.00 11.38 \n", "Marseille 14.91 5.26 ... 26.05 12.25 11.38 0.00 \n", "Turin 10.87 9.21 ... 24.44 12.46 8.93 4.98 \n", "Krakow 5.98 22.15 ... 17.88 12.44 17.85 18.96 \n", "Valencia 22.48 3.70 ... 32.47 18.50 19.05 8.38 \n", "Zagreb 3.48 16.51 ... 22.97 13.93 10.84 11.98 \n", "Frankfurt 9.88 13.38 ... 16.52 4.76 14.69 10.00 \n", "Seville 28.62 9.80 ... 37.08 22.03 25.16 14.48 \n", "\n", " Turin Krakow Valencia Zagreb Frankfurt Seville \n", "City \n", "Berlin 12.32 6.50 21.82 11.04 5.89 27.51 \n", "Madrid 14.83 27.50 3.75 22.09 17.91 5.16 \n", "Rome 7.27 16.10 17.40 9.14 13.19 23.54 \n", "Paris 8.16 15.42 13.45 14.14 5.84 16.97 \n", "Vienna 10.15 5.03 21.24 4.09 7.65 27.34 \n", "Warsaw 16.79 3.51 26.38 10.68 10.84 32.48 \n", "Hamburg 13.20 9.19 21.18 13.21 5.41 25.94 \n", "Bucharest 19.95 13.93 31.70 12.00 19.16 37.67 \n", "Budapest 10.87 5.98 22.48 3.48 9.88 28.62 \n", "Barcelona 9.21 22.15 3.70 16.51 13.38 9.80 \n", "Munich 7.00 9.09 16.93 5.88 4.24 23.12 \n", "Milan 2.01 13.70 13.61 6.68 7.46 19.71 \n", "Sofia 16.01 13.96 27.65 8.44 17.88 33.75 \n", "Prague 10.55 5.40 20.34 7.30 5.54 26.44 \n", "Cologne 9.92 11.20 17.97 11.36 2.18 21.83 \n", "Stockholm 24.44 17.88 32.47 22.97 16.52 37.08 \n", "Amsterdam 12.46 12.44 18.50 13.93 4.76 22.03 \n", "Naples 8.93 17.85 19.05 10.84 14.69 25.16 \n", "Marseille 4.98 18.96 8.38 11.98 10.00 14.48 \n", "Turin 0.00 14.79 12.23 7.85 8.26 18.33 \n", "Krakow 14.79 0.00 25.39 8.77 9.97 31.49 \n", "Valencia 12.23 25.39 0.00 19.83 16.48 6.51 \n", "Zagreb 7.85 8.77 19.83 0.00 9.60 25.70 \n", "Frankfurt 8.26 9.97 16.48 9.60 0.00 22.49 \n", "Seville 18.33 31.49 6.51 25.70 22.49 0.00 \n", "\n", "[25 rows x 25 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "COSTS = pd.read_csv('tsp_costs.csv').set_index('City',drop=True)\n", "COSTS" ] }, { "cell_type": "markdown", "id": "e9489ae0-6d01-4e0d-8895-89e1822f0832", "metadata": {}, "source": [ "## Generate and save problems" ] }, { "cell_type": "code", "execution_count": 6, "id": "d535101d-e71f-4a2c-807e-5e9a507cf8b9", "metadata": {}, "outputs": [], "source": [ "def build_qubo_time_encoding(n, scale):\n", " Q = defaultdict(float)\n", " offset = 0\n", " # cost function\n", " for i in range(n):\n", " for j in range(n):\n", " if j != i:\n", " for t in range(n):\n", " k = i*n + t\n", " l = j*n + (t + 1) % n\n", " Q[k,l] += scale * COSTS.loc[CITIES[i]][CITIES[j]]\n", " # first constraint\n", " for i in range(n):\n", " for t1 in range(n):\n", " for t2 in range(n):\n", " k = i*n + t1\n", " l = i*n + t2\n", " Q[k,l] += 1\n", " for t in range(n):\n", " k = i*n + t\n", " Q[k,k] += -2\n", " offset += 1\n", " # second constraint\n", " for t in range(n):\n", " for i in range(n):\n", " for j in range(n):\n", " k = i*n + t\n", " l = j*n + t\n", " Q[k,l] += 1\n", " for i in range(n):\n", " k = i*n + t\n", " Q[k,k] += -2\n", " offset += 1\n", " return Q,offset" ] }, { "cell_type": "code", "execution_count": 7, "id": "b37afefe-d3b4-4731-be5f-1b71bacc58f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generated ../problems/000.ising\n", "Generated ../problems/001.ising\n", "Generated ../problems/002.ising\n", "Generated ../problems/003.ising\n", "Generated ../problems/004.ising\n", "Generated ../problems/005.ising\n", "Generated ../problems/006.ising\n", "Generated ../problems/007.ising\n", "Generated ../problems/008.ising\n", "Generated ../problems/009.ising\n", "Generated ../problems/010.ising\n", "Generated ../problems/011.ising\n", "Generated ../problems/012.ising\n", "Generated ../problems/013.ising\n", "Generated ../problems/014.ising\n", "Generated ../problems/015.ising\n", "Generated ../problems/016.ising\n", "Generated ../problems/017.ising\n", "Generated ../problems/018.ising\n", "Generated ../problems/019.ising\n", "Generated ../problems/020.ising\n", "Generated ../problems/021.ising\n", "Generated ../problems/022.ising\n" ] } ], "source": [ "problems = defaultdict(list)\n", "for instance,n in enumerate(range(3,len(CITIES)+1)):\n", " \n", " # generate BQM\n", " scale = 0.01 # if the constraints are satisifed, energy / scale will be the total drive time in hours\n", " Q,offset = build_qubo_time_encoding(n, scale=scale)\n", " variablemap = {i*n+t: f'x{i},{t}' for i in range(n) for t in range(n)} # x_i,t = 1 <=> traveller will be at city i at time t\n", " bqm = dimod.BQM.from_qubo(Q, offset)\n", " bqm.change_vartype(dimod.SPIN)\n", " bqm.relabel_variables(variablemap)\n", " nqubits = bqm.num_variables\n", " ncouplers = bqm.num_interactions\n", " nvalid = 2*n\n", " noptimal = 2\n", "\n", " # store optimum reference for benchmark\n", " tour = [CITIES.index(c) for c in TSP_DATA['OPTIMAL_TOURS'][f'{n}']]\n", " optimum = sum(COSTS.loc[CITIES[tour[i]]][CITIES[tour[(i+1)%n]]] for i in range(len(tour)))\n", "\n", " # generate information for save_ising_file\n", " hs, Js, offset = bqm.to_ising()\n", " qubitmap = {value: key for key,value in variablemap.items()}\n", " cities = CITIES[:n]\n", " metadata = {\n", " 'n': n,\n", " 'nqubits': nqubits,\n", " 'ncouplers': ncouplers,\n", " 'nvalid': nvalid,\n", " 'noptimal': noptimal,\n", " 'lambda': scale,\n", " 'optimal_energy': optimum*scale,\n", " 'optimal_cost': optimum,\n", " 'optimal_tour': tour,\n", " 'cities': cities,\n", " 'scale': scale,\n", " } \n", " filename = save_ising_file(instance, hs, Js, offset, qubitmap, metadata)\n", " print(f'Generated {filename}')\n", "\n", " # gather information for each problem\n", " problems['filename'].append(filename)\n", " problems['instance'].append(instance)\n", " problems['n'].append(n)\n", " problems['nqubits'].append(nqubits)\n", " problems['ncouplers'].append(ncouplers)\n", " problems['nvalid'].append(nvalid)\n", " problems['noptimal'].append(noptimal)\n", " problems['lambda'].append(scale)\n", " problems['optimal_energy'].append(optimum*scale)\n", " problems['optimal_cost'].append(optimum)\n", " problems['optimal_tour'].append(tour)\n", " problems['cities'].append(cities)\n", " problems['scale'].append(scale)" ] }, { "cell_type": "code", "execution_count": 8, "id": "abdcfb19-b0c7-4b23-a825-9a7d7ba7cf66", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
filenamennqubitsncouplersnvalidnoptimallambdaoptimal_energyoptimal_costoptimal_tourcitiesscale
instance
0../problems/000.ising3936620.010.589058.90[0, 1, 2][Berlin, Madrid, Rome]0.01
1../problems/001.ising41696820.010.592259.22[0, 2, 1, 3][Berlin, Madrid, Rome, Paris]0.01
2../problems/002.ising5252001020.010.623262.32[0, 3, 1, 2, 4][Berlin, Madrid, Rome, Paris, Vienna]0.01
3../problems/003.ising6363601220.010.679067.90[0, 3, 1, 2, 4, 5][Berlin, Madrid, Rome, Paris, Vienna, Warsaw]0.01
4../problems/004.ising7495881420.010.694869.48[0, 5, 4, 2, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
5../problems/005.ising8648961620.010.904890.48[0, 5, 4, 7, 2, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
6../problems/006.ising98112961820.010.909190.91[0, 5, 4, 7, 8, 2, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
7../problems/007.ising1010018002020.010.915491.54[0, 5, 4, 7, 8, 2, 9, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
8../problems/008.ising1112124202220.010.950595.05[0, 5, 7, 8, 4, 10, 2, 9, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
9../problems/009.ising1214431682420.010.974597.45[0, 5, 7, 8, 4, 10, 2, 11, 9, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
10../problems/010.ising1316940562620.011.0151101.51[0, 5, 7, 12, 8, 4, 10, 2, 11, 9, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
11../problems/011.ising1419650962820.011.0428104.28[0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 6][Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
12../problems/012.ising1522563003020.011.0460104.60[0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 14...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
13../problems/013.ising1625676803220.011.2550125.50[0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 14...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
14../problems/014.ising1728992483420.011.2880128.80[0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 16...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
15../problems/015.ising18324110163620.011.3281132.81[0, 5, 13, 10, 4, 8, 7, 12, 2, 17, 11, 9, 1, 3...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
16../problems/016.ising19361129963820.011.3360133.60[0, 5, 13, 10, 4, 8, 7, 12, 2, 17, 11, 18, 9, ...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
17../problems/017.ising20400152004020.011.3449134.49[0, 5, 13, 10, 4, 8, 7, 12, 2, 17, 11, 19, 18,...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
18../problems/018.ising21441176404220.011.3513135.13[0, 5, 20, 7, 12, 8, 4, 13, 10, 2, 17, 11, 19,...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
19../problems/019.ising22484203284420.011.3627136.27[0, 5, 20, 7, 12, 8, 4, 13, 10, 2, 17, 11, 19,...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
20../problems/020.ising23529232764620.011.3781137.81[0, 5, 20, 13, 10, 4, 8, 7, 12, 22, 2, 17, 11,...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
21../problems/021.ising24576264964820.011.4039140.39[0, 6, 15, 5, 20, 4, 8, 7, 12, 22, 2, 17, 11, ...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
22../problems/022.ising25625300005020.011.4831148.31[0, 6, 15, 5, 20, 4, 8, 7, 12, 22, 2, 17, 11, ...[Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ...0.01
\n", "
" ], "text/plain": [ " filename n nqubits ncouplers nvalid noptimal \\\n", "instance \n", "0 ../problems/000.ising 3 9 36 6 2 \n", "1 ../problems/001.ising 4 16 96 8 2 \n", "2 ../problems/002.ising 5 25 200 10 2 \n", "3 ../problems/003.ising 6 36 360 12 2 \n", "4 ../problems/004.ising 7 49 588 14 2 \n", "5 ../problems/005.ising 8 64 896 16 2 \n", "6 ../problems/006.ising 9 81 1296 18 2 \n", "7 ../problems/007.ising 10 100 1800 20 2 \n", "8 ../problems/008.ising 11 121 2420 22 2 \n", "9 ../problems/009.ising 12 144 3168 24 2 \n", "10 ../problems/010.ising 13 169 4056 26 2 \n", "11 ../problems/011.ising 14 196 5096 28 2 \n", "12 ../problems/012.ising 15 225 6300 30 2 \n", "13 ../problems/013.ising 16 256 7680 32 2 \n", "14 ../problems/014.ising 17 289 9248 34 2 \n", "15 ../problems/015.ising 18 324 11016 36 2 \n", "16 ../problems/016.ising 19 361 12996 38 2 \n", "17 ../problems/017.ising 20 400 15200 40 2 \n", "18 ../problems/018.ising 21 441 17640 42 2 \n", "19 ../problems/019.ising 22 484 20328 44 2 \n", "20 ../problems/020.ising 23 529 23276 46 2 \n", "21 ../problems/021.ising 24 576 26496 48 2 \n", "22 ../problems/022.ising 25 625 30000 50 2 \n", "\n", " lambda optimal_energy optimal_cost \\\n", "instance \n", "0 0.01 0.5890 58.90 \n", "1 0.01 0.5922 59.22 \n", "2 0.01 0.6232 62.32 \n", "3 0.01 0.6790 67.90 \n", "4 0.01 0.6948 69.48 \n", "5 0.01 0.9048 90.48 \n", "6 0.01 0.9091 90.91 \n", "7 0.01 0.9154 91.54 \n", "8 0.01 0.9505 95.05 \n", "9 0.01 0.9745 97.45 \n", "10 0.01 1.0151 101.51 \n", "11 0.01 1.0428 104.28 \n", "12 0.01 1.0460 104.60 \n", "13 0.01 1.2550 125.50 \n", "14 0.01 1.2880 128.80 \n", "15 0.01 1.3281 132.81 \n", "16 0.01 1.3360 133.60 \n", "17 0.01 1.3449 134.49 \n", "18 0.01 1.3513 135.13 \n", "19 0.01 1.3627 136.27 \n", "20 0.01 1.3781 137.81 \n", "21 0.01 1.4039 140.39 \n", "22 0.01 1.4831 148.31 \n", "\n", " optimal_tour \\\n", "instance \n", "0 [0, 1, 2] \n", "1 [0, 2, 1, 3] \n", "2 [0, 3, 1, 2, 4] \n", "3 [0, 3, 1, 2, 4, 5] \n", "4 [0, 5, 4, 2, 1, 3, 6] \n", "5 [0, 5, 4, 7, 2, 1, 3, 6] \n", "6 [0, 5, 4, 7, 8, 2, 1, 3, 6] \n", "7 [0, 5, 4, 7, 8, 2, 9, 1, 3, 6] \n", "8 [0, 5, 7, 8, 4, 10, 2, 9, 1, 3, 6] \n", "9 [0, 5, 7, 8, 4, 10, 2, 11, 9, 1, 3, 6] \n", "10 [0, 5, 7, 12, 8, 4, 10, 2, 11, 9, 1, 3, 6] \n", "11 [0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 6] \n", "12 [0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 14... \n", "13 [0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 14... \n", "14 [0, 5, 13, 10, 4, 8, 7, 12, 2, 11, 9, 1, 3, 16... \n", "15 [0, 5, 13, 10, 4, 8, 7, 12, 2, 17, 11, 9, 1, 3... \n", "16 [0, 5, 13, 10, 4, 8, 7, 12, 2, 17, 11, 18, 9, ... \n", "17 [0, 5, 13, 10, 4, 8, 7, 12, 2, 17, 11, 19, 18,... \n", "18 [0, 5, 20, 7, 12, 8, 4, 13, 10, 2, 17, 11, 19,... \n", "19 [0, 5, 20, 7, 12, 8, 4, 13, 10, 2, 17, 11, 19,... \n", "20 [0, 5, 20, 13, 10, 4, 8, 7, 12, 22, 2, 17, 11,... \n", "21 [0, 6, 15, 5, 20, 4, 8, 7, 12, 22, 2, 17, 11, ... \n", "22 [0, 6, 15, 5, 20, 4, 8, 7, 12, 22, 2, 17, 11, ... \n", "\n", " cities scale \n", "instance \n", "0 [Berlin, Madrid, Rome] 0.01 \n", "1 [Berlin, Madrid, Rome, Paris] 0.01 \n", "2 [Berlin, Madrid, Rome, Paris, Vienna] 0.01 \n", "3 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw] 0.01 \n", "4 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "5 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "6 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "7 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "8 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "9 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "10 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "11 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "12 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "13 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "14 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "15 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "16 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "17 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "18 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "19 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "20 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "21 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 \n", "22 [Berlin, Madrid, Rome, Paris, Vienna, Warsaw, ... 0.01 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame(problems).set_index('instance',drop=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "295ea7c1-67fd-45af-81c7-eece3043c36a", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "dwave-1.32.0", "language": "python", "name": "dwave-1.32.0" }, "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.3" } }, "nbformat": 4, "nbformat_minor": 5 }