diff --git a/src/cryo_challenge/_map_to_map/gromov_wasserstein/qp.ipynb b/src/cryo_challenge/_map_to_map/gromov_wasserstein/qp.ipynb index ab7387e..f3ea6d4 100644 --- a/src/cryo_challenge/_map_to_map/gromov_wasserstein/qp.ipynb +++ b/src/cryo_challenge/_map_to_map/gromov_wasserstein/qp.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 76, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -284,7 +284,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -1120,101 +1120,2084 @@ " 41994 6091 0.02143 31 345 0.02150 0.02129 0.98% 311 206s\n", " 43680 6265 cutoff 32 0.02150 0.02130 0.96% 309 211s\n", " 45512 6230 0.02139 33 593 0.02150 0.02131 0.90% 306 216s\n", - " 47431 6269 cutoff 38 0.02150 0.02132 0.87% 304 223s\n" - ] - } - ], - "source": [ - "def generate_G(Cx, Cy):\n", - " \"\"\"\n", - " Generate the quadratic cost matrix G for the Gromov-Wasserstein problem.\n", - "\n", - " Parameters:\n", - " Cx (numpy.ndarray): Distance matrix for the source space, shape (n, n).\n", - " Cy (numpy.ndarray): Distance matrix for the target space, shape (m, m).\n", - "\n", - " Returns:\n", - " numpy.ndarray: Quadratic cost matrix G, shape (nm, nm).\n", - " \"\"\"\n", - " n, m = Cx.shape[0], Cy.shape[0]\n", - "\n", - " # Initialize the G matrix with zeros\n", - " G = np.zeros((n * m, n * m))\n", - "\n", - " # Fill in G using the formula\n", - " for i in range(n):\n", - " for j in range(m):\n", - " for k in range(n):\n", - " for el in range(m):\n", - " idx1 = i * m + j # Flattened index for (i, j)\n", - " idx2 = k * m + el # Flattened index for (k, l)\n", - " G[idx1, idx2] = (Cx[i, k] - Cx[j, k]) ** 2 + (\n", - " Cy[el, i] - Cy[el, j]\n", - " ) ** 2\n", - "\n", - " return G\n", - "\n", - "\n", - "gw_distance = np.zeros((len(volumes_i), len(volumes_j)))\n", - "for idx_i in range(len(volumes_i)):\n", - " for idx_j in range(len(volumes_j)):\n", - " if idx_i > idx_j:\n", - " print(f\"Computing GW distance between {idx_i} and {idx_j}...\")\n", - "\n", - " n = m = top_k\n", - " Cx = pairwise_distances_i[idx_i]\n", - " Cy = pairwise_distances_j[idx_j]\n", - "\n", - " # Ensure the distance matrices are symmetric and non-negative\n", - " Cx = 0.5 * (Cx + Cx.T)\n", - " Cy = 0.5 * (Cy + Cy.T)\n", - " Cx[Cx < 0] = 0\n", - " Cy[Cy < 0] = 0\n", - "\n", - " G = generate_G(Cx, Cy)\n", - " mu = marginals_i[idx_i]\n", - " nu = marginals_j[idx_j]\n", - " T_optimal, model = solve_gromov_wasserstein(mu, nu, G)\n", - " gw_distance[idx_i, idx_j] = gw_distance[idx_j, idx_i] = model.ObjVal" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(gw_distance)\n", - "plt.colorbar()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] + " 47431 6269 cutoff 38 0.02150 0.02132 0.87% 304 223s\n", + " 49368 6258 cutoff 30 0.02150 0.02132 0.83% 301 229s\n", + " 51115 6205 0.02147 35 524 0.02150 0.02132 0.83% 299 235s\n", + " 52928 6170 0.02150 32 656 0.02150 0.02134 0.76% 297 241s\n", + " 55335 6128 0.02149 41 357 0.02150 0.02135 0.69% 294 248s\n", + " 57893 6169 0.02146 30 463 0.02150 0.02136 0.65% 290 254s\n", + " 60540 6101 cutoff 30 0.02150 0.02137 0.61% 286 262s\n", + " 63928 6132 0.02149 38 346 0.02150 0.02138 0.58% 281 268s\n", + " 66479 6139 0.02147 31 424 0.02150 0.02139 0.52% 277 274s\n", + " 69284 6163 0.02144 29 522 0.02150 0.02140 0.49% 273 281s\n", + " 72196 6137 0.02147 28 219 0.02150 0.02140 0.46% 269 287s\n", + " 75210 6027 0.02146 31 285 0.02150 0.02141 0.43% 265 294s\n", + " 78384 5916 0.02144 39 339 0.02150 0.02142 0.40% 261 301s\n", + " 81697 5798 0.02145 35 497 0.02150 0.02142 0.38% 256 309s\n", + " 85029 5725 0.02148 40 292 0.02150 0.02143 0.36% 252 316s\n", + " 88610 5490 cutoff 30 0.02150 0.02143 0.33% 248 323s\n", + " 92097 5246 0.02149 39 309 0.02150 0.02144 0.30% 244 331s\n", + " 94933 4959 cutoff 38 0.02150 0.02144 0.29% 241 338s\n", + " 98624 4628 cutoff 38 0.02150 0.02145 0.25% 237 345s\n", + " 102237 4252 0.02150 38 344 0.02150 0.02145 0.23% 233 353s\n", + " 105241 3710 cutoff 41 0.02150 0.02146 0.21% 230 360s\n", + " 109039 2966 cutoff 36 0.02150 0.02146 0.19% 226 366s\n", + " 112643 1844 cutoff 36 0.02150 0.02147 0.17% 223 373s\n", + " 116235 213 cutoff 33 0.02150 0.02147 0.13% 219 379s\n", + "\n", + "Cutting planes:\n", + " RLT: 331\n", + " PSD: 2\n", + "\n", + "Explored 119285 nodes (25800488 simplex iterations) in 379.93 seconds (802.13 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0215024 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.150284369891e-02, best bound 2.150236054295e-02, gap 0.0022%\n", + "Computing GW distance between 5 and 3...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xace1b1e8\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [6e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0010573\n", + "\n", + "Root relaxation: objective 0.000000e+00, 756 iterations, 0.08 seconds (0.17 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1534 0.00106 0.00000 100% - 0s\n", + " 0 0 0.00000 0 1204 0.00106 0.00000 100% - 0s\n", + " 0 0 0.00004 0 2253 0.00106 0.00004 95.9% - 0s\n", + " 0 0 0.00020 0 2192 0.00106 0.00020 80.8% - 0s\n", + " 0 0 0.00022 0 2390 0.00106 0.00022 78.9% - 0s\n", + " 0 0 0.00025 0 2464 0.00106 0.00025 76.8% - 1s\n", + " 0 2 0.00025 0 2463 0.00106 0.00025 76.8% - 2s\n", + "* 616 1 35 0.0010569 0.00106 0.05% 29.2 3s\n", + "\n", + "Cutting planes:\n", + " RLT: 25\n", + "\n", + "Explored 619 nodes (20627 simplex iterations) in 3.42 seconds (4.42 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0010569 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.057449218928e-03, best bound 1.056895134621e-03, gap 0.0524%\n", + "Computing GW distance between 5 and 4...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x83212cce\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [3e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0251218\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1158 iterations, 0.09 seconds (0.17 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 729 0.02512 0.00000 100% - 0s\n", + " 0 0 0.00208 0 1754 0.02512 0.00208 91.7% - 0s\n", + " 0 0 0.01998 0 1096 0.02512 0.01998 20.5% - 0s\n", + " 0 0 0.02050 0 1051 0.02512 0.02050 18.4% - 0s\n", + " 0 0 0.02197 0 2045 0.02512 0.02197 12.6% - 1s\n", + " 0 0 0.02207 0 1352 0.02512 0.02207 12.2% - 1s\n", + " 0 0 0.02258 0 1196 0.02512 0.02258 10.1% - 1s\n", + " 0 0 0.02258 0 1196 0.02512 0.02258 10.1% - 1s\n", + " 0 0 0.02269 0 2084 0.02512 0.02269 9.67% - 1s\n", + " 0 0 0.02270 0 2053 0.02512 0.02270 9.64% - 1s\n", + " 0 0 0.02309 0 2157 0.02512 0.02309 8.09% - 1s\n", + " 0 0 0.02322 0 2270 0.02512 0.02322 7.55% - 1s\n", + " 0 0 0.02325 0 2198 0.02512 0.02325 7.46% - 2s\n", + " 0 2 0.02325 0 2198 0.02512 0.02325 7.46% - 3s\n", + " 27 30 0.02415 5 417 0.02512 0.02374 5.51% 511 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 276\n", + " PSD: 3\n", + "\n", + "Explored 2815 nodes (360199 simplex iterations) in 9.14 seconds (16.35 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0251218 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.512269810943e-02, best bound 2.512178109291e-02, gap 0.0037%\n", + "Computing GW distance between 6 and 0...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x08acd421\n", + "Model has 10360 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14449 rows, 7447 columns, 36419 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7213 bilinear constraint(s)\n", + "Variable types: 7447 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0175441\n", + "\n", + "Root relaxation: objective 0.000000e+00, 832 iterations, 0.07 seconds (0.13 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 687 0.01754 0.00000 100% - 0s\n", + " 0 0 0.00130 0 1441 0.01754 0.00130 92.6% - 0s\n", + " 0 0 0.01093 0 919 0.01754 0.01093 37.7% - 0s\n", + " 0 0 0.01289 0 1104 0.01754 0.01289 26.5% - 0s\n", + " 0 0 0.01484 0 1224 0.01754 0.01484 15.4% - 0s\n", + " 0 0 0.01502 0 1081 0.01754 0.01502 14.4% - 0s\n", + " 0 0 0.01516 0 1081 0.01754 0.01516 13.6% - 0s\n", + " 0 0 0.01516 0 1073 0.01754 0.01516 13.6% - 1s\n", + " 0 0 0.01524 0 1002 0.01754 0.01524 13.1% - 1s\n", + " 0 0 0.01525 0 1018 0.01754 0.01525 13.1% - 1s\n", + " 0 0 0.01525 0 1016 0.01754 0.01525 13.1% - 1s\n", + " 0 2 0.01525 0 1016 0.01754 0.01525 13.1% - 1s\n", + "H 366 149 0.0175441 0.01671 4.74% 211 3s\n", + " 1938 346 0.01750 19 143 0.01754 0.01725 1.68% 138 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 275\n", + " BQP: 1\n", + " PSD: 16\n", + "\n", + "Explored 5130 nodes (465445 simplex iterations) in 7.81 seconds (10.70 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0175441 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.754437712133e-02, best bound 1.754411968228e-02, gap 0.0015%\n", + "Computing GW distance between 6 and 1...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xb0ce467d\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [1e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0263011\n", + "\n", + "Root relaxation: objective 0.000000e+00, 667 iterations, 0.05 seconds (0.08 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 724 0.02630 0.00000 100% - 0s\n", + " 0 0 0.00259 0 1419 0.02630 0.00259 90.2% - 0s\n", + " 0 0 0.02211 0 1053 0.02630 0.02211 15.9% - 0s\n", + " 0 0 0.02241 0 1151 0.02630 0.02241 14.8% - 0s\n", + " 0 0 0.02334 0 1080 0.02630 0.02334 11.2% - 0s\n", + " 0 0 0.02352 0 1308 0.02630 0.02352 10.6% - 1s\n", + " 0 0 0.02362 0 1263 0.02630 0.02362 10.2% - 1s\n", + " 0 0 0.02364 0 1235 0.02630 0.02364 10.1% - 1s\n", + " 0 0 0.02366 0 1189 0.02630 0.02366 10.0% - 1s\n", + " 0 0 0.02367 0 1204 0.02630 0.02367 10.0% - 1s\n", + " 0 0 0.02367 0 1222 0.02630 0.02367 10.0% - 1s\n", + " 0 0 0.02367 0 1222 0.02630 0.02367 10.0% - 1s\n", + " 0 2 0.02367 0 1222 0.02630 0.02367 10.0% - 2s\n", + " 154 121 cutoff 8 0.02630 0.02479 5.73% 346 6s\n", + " 2591 148 cutoff 17 0.02630 0.02601 1.10% 204 10s\n", + "\n", + "Cutting planes:\n", + " RLT: 320\n", + " BQP: 1\n", + " PSD: 2\n", + "\n", + "Explored 3152 nodes (578207 simplex iterations) in 10.68 seconds (17.04 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0263011 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.630205822593e-02, best bound 2.630113653810e-02, gap 0.0035%\n", + "Computing GW distance between 6 and 2...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x109e94ec\n", + "Model has 10352 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [5e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14435 rows, 7440 columns, 36384 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7206 bilinear constraint(s)\n", + "Variable types: 7440 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0213262\n", + "\n", + "Root relaxation: objective 0.000000e+00, 739 iterations, 0.05 seconds (0.08 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 692 0.02133 0.00000 100% - 0s\n", + " 0 0 0.00107 0 810 0.02133 0.00107 95.0% - 0s\n", + " 0 0 0.01603 0 971 0.02133 0.01603 24.8% - 0s\n", + " 0 0 0.01603 0 970 0.02133 0.01603 24.8% - 0s\n", + " 0 0 0.01909 0 1294 0.02133 0.01909 10.5% - 0s\n", + " 0 0 0.01915 0 1292 0.02133 0.01915 10.2% - 0s\n", + " 0 0 0.01921 0 1294 0.02133 0.01921 9.94% - 0s\n", + " 0 2 0.01921 0 1294 0.02133 0.01921 9.94% - 1s\n", + " 494 330 0.02117 14 820 0.02133 0.02013 5.62% 273 5s\n", + " 979 492 0.02111 15 0 0.02133 0.02025 5.07% 243 33s\n", + " 984 495 0.02065 12 0 0.02133 0.02025 5.07% 242 35s\n", + " 999 514 0.02028 18 2240 0.02133 0.02025 5.07% 248 40s\n", + "H 1023 522 0.0213261 0.02025 5.07% 268 43s\n", + "H 1024 498 0.0213261 0.02025 5.07% 267 43s\n", + "H 1031 473 0.0213261 0.02025 5.07% 267 43s\n", + "H 1032 451 0.0213261 0.02025 5.07% 267 43s\n", + "H 1035 429 0.0213261 0.02025 5.07% 267 43s\n", + "H 1041 408 0.0213261 0.02025 5.07% 267 43s\n", + " 1276 516 0.02090 25 1471 0.02133 0.02034 4.63% 280 45s\n", + " 2034 525 cutoff 33 0.02133 0.02068 3.02% 272 50s\n", + " 3170 681 0.02119 27 576 0.02133 0.02086 2.17% 256 55s\n", + " 3725 756 0.02116 28 580 0.02133 0.02090 2.02% 251 67s\n", + " 4581 831 cutoff 30 0.02133 0.02096 1.74% 250 70s\n", + " 6243 892 0.02118 25 512 0.02133 0.02104 1.35% 235 75s\n", + "H 7199 924 0.0213260 0.02107 1.18% 228 78s\n", + "H 7243 924 0.0213260 0.02107 1.18% 228 78s\n", + " 7781 905 0.02129 38 451 0.02133 0.02110 1.08% 225 80s\n", + " 9812 768 cutoff 31 0.02133 0.02116 0.78% 213 85s\n", + " 11845 481 cutoff 37 0.02133 0.02121 0.53% 203 90s\n", + " 13798 63 0.02131 32 195 0.02133 0.02127 0.27% 193 95s\n", + "\n", + "Cutting planes:\n", + " RLT: 339\n", + " BQP: 2\n", + " PSD: 1\n", + "\n", + "Explored 14883 nodes (2750565 simplex iterations) in 97.77 seconds (153.61 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.021326 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.132657241975e-02, best bound 2.132595243977e-02, gap 0.0029%\n", + "Computing GW distance between 6 and 3...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xb38f37fe\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0012649\n", + "\n", + "Root relaxation: objective 0.000000e+00, 626 iterations, 0.07 seconds (0.14 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1340 0.00126 0.00000 100% - 0s\n", + " 0 0 0.00000 0 1618 0.00126 0.00000 100% - 0s\n", + " 0 0 0.00036 0 2827 0.00126 0.00036 71.3% - 0s\n", + " 0 0 0.00043 0 2809 0.00126 0.00043 66.4% - 0s\n", + " 0 0 0.00070 0 2240 0.00126 0.00070 44.7% - 0s\n", + " 0 0 0.00071 0 1694 0.00126 0.00071 44.1% - 0s\n", + " 0 0 0.00071 0 1692 0.00126 0.00071 44.1% - 1s\n", + " 0 2 0.00071 0 1692 0.00126 0.00071 44.1% - 2s\n", + "* 945 0 25 0.0012646 0.00126 0.00% 25.1 3s\n", + "\n", + "Cutting planes:\n", + " RLT: 45\n", + "\n", + "Explored 948 nodes (26328 simplex iterations) in 3.27 seconds (4.43 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.00126462 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.265067658856e-03, best bound 1.264615011018e-03, gap 0.0358%\n", + "Computing GW distance between 6 and 4...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x8e6df0e3\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0257149\n", + "\n", + "Root relaxation: objective 0.000000e+00, 751 iterations, 0.05 seconds (0.09 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 721 0.02571 0.00000 100% - 0s\n", + " 0 0 0.00151 0 937 0.02571 0.00151 94.1% - 0s\n", + " 0 0 0.01901 0 1102 0.02571 0.01901 26.1% - 0s\n", + " 0 0 0.02035 0 1038 0.02571 0.02035 20.9% - 0s\n", + " 0 0 0.02039 0 1072 0.02571 0.02039 20.7% - 0s\n", + " 0 0 0.02380 0 1342 0.02571 0.02380 7.45% - 1s\n", + " 0 0 0.02380 0 1361 0.02571 0.02380 7.44% - 1s\n", + " 0 0 0.02389 0 1391 0.02571 0.02389 7.09% - 1s\n", + " 0 0 0.02389 0 1358 0.02571 0.02389 7.08% - 1s\n", + " 0 0 0.02403 0 1273 0.02571 0.02403 6.55% - 1s\n", + " 0 0 0.02403 0 1217 0.02571 0.02403 6.54% - 1s\n", + " 0 2 0.02403 0 1217 0.02571 0.02403 6.54% - 2s\n", + " 382 169 0.02562 8 244 0.02571 0.02472 3.87% 237 5s\n", + "H 754 197 0.0257148 0.02500 2.80% 197 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 361\n", + " PSD: 4\n", + "\n", + "Explored 2415 nodes (337409 simplex iterations) in 7.79 seconds (12.27 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0257148 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.571547790631e-02, best bound 2.571480452635e-02, gap 0.0026%\n", + "Computing GW distance between 6 and 5...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x0545c8ca\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 2e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0007053\n", + "\n", + "Root relaxation: objective 0.000000e+00, 956 iterations, 0.12 seconds (0.23 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1538 0.00071 0.00000 100% - 0s\n", + " 0 0 0.00000 0 1721 0.00071 0.00000 100% - 0s\n", + " 0 0 0.00022 0 3544 0.00071 0.00022 68.8% - 0s\n", + " 0 0 0.00027 0 2706 0.00071 0.00027 61.1% - 0s\n", + " 0 0 0.00030 0 2756 0.00071 0.00030 58.0% - 0s\n", + " 0 0 0.00030 0 2757 0.00071 0.00030 57.9% - 0s\n", + " 0 2 0.00030 0 2757 0.00071 0.00030 57.9% - 1s\n", + "H 136 10 0.0007053 0.00070 1.06% 30.3 2s\n", + "* 162 0 21 0.0007048 0.00070 0.00% 26.6 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 26\n", + "\n", + "Explored 166 nodes (6628 simplex iterations) in 2.38 seconds (3.98 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 3: 0.000704816 0.000705272 0.000705297 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 7.055730513781e-04, best bound 7.048156649028e-04, gap 0.1073%\n", + "Computing GW distance between 7 and 0...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x2f06d7be\n", + "Model has 10360 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [3e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14449 rows, 7447 columns, 36419 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7213 bilinear constraint(s)\n", + "Variable types: 7447 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0183677\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1131 iterations, 0.09 seconds (0.17 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1164 0.01837 0.00000 100% - 0s\n", + " 0 0 0.00257 0 677 0.01837 0.00257 86.0% - 0s\n", + " 0 0 0.01002 0 804 0.01837 0.01002 45.4% - 0s\n", + " 0 0 0.01039 0 897 0.01837 0.01039 43.5% - 0s\n", + " 0 0 0.01537 0 1541 0.01837 0.01537 16.3% - 0s\n", + " 0 0 0.01572 0 1551 0.01837 0.01572 14.4% - 0s\n", + " 0 0 0.01678 0 1832 0.01837 0.01678 8.65% - 0s\n", + " 0 0 0.01678 0 1776 0.01837 0.01678 8.63% - 0s\n", + " 0 0 0.01683 0 1689 0.01837 0.01683 8.37% - 1s\n", + " 0 0 0.01683 0 1690 0.01837 0.01683 8.37% - 1s\n", + " 0 0 0.01684 0 1766 0.01837 0.01684 8.31% - 1s\n", + " 0 0 0.01684 0 1766 0.01837 0.01684 8.31% - 1s\n", + " 0 2 0.01684 0 1766 0.01837 0.01684 8.31% - 2s\n", + " 508 133 cutoff 16 0.01837 0.01804 1.78% 167 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 255\n", + " BQP: 1\n", + " PSD: 3\n", + "\n", + "Explored 1739 nodes (152854 simplex iterations) in 6.11 seconds (9.46 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0183677 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.836793675317e-02, best bound 1.836768085145e-02, gap 0.0014%\n", + "Computing GW distance between 7 and 1...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x62ebbfa9\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [1e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0274071\n", + "\n", + "Root relaxation: objective 0.000000e+00, 739 iterations, 0.06 seconds (0.10 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 736 0.02741 0.00000 100% - 0s\n", + " 0 0 0.00117 0 905 0.02741 0.00117 95.7% - 0s\n", + " 0 0 0.02114 0 434 0.02741 0.02114 22.9% - 0s\n", + " 0 0 0.02175 0 572 0.02741 0.02175 20.6% - 0s\n", + " 0 0 0.02522 0 1169 0.02741 0.02522 7.97% - 0s\n", + " 0 0 0.02552 0 1221 0.02741 0.02552 6.89% - 0s\n", + " 0 0 0.02567 0 1272 0.02741 0.02567 6.33% - 1s\n", + " 0 0 0.02568 0 1259 0.02741 0.02568 6.31% - 1s\n", + " 0 0 0.02568 0 1266 0.02741 0.02568 6.31% - 1s\n", + " 0 2 0.02568 0 1266 0.02741 0.02568 6.31% - 2s\n", + " 386 118 cutoff 10 0.02741 0.02661 2.91% 215 5s\n", + "H 942 85 0.0274071 0.02694 1.69% 173 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 362\n", + " BQP: 1\n", + " PSD: 1\n", + "\n", + "Explored 1539 nodes (208514 simplex iterations) in 6.62 seconds (10.43 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0274071 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.740780664369e-02, best bound 2.740709824000e-02, gap 0.0026%\n", + "Computing GW distance between 7 and 2...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x8e61e8c9\n", + "Model has 10352 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [5e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14435 rows, 7440 columns, 36384 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7206 bilinear constraint(s)\n", + "Variable types: 7440 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0226186\n", + "\n", + "Root relaxation: objective 0.000000e+00, 730 iterations, 0.05 seconds (0.09 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 730 0.02262 0.00000 100% - 0s\n", + " 0 0 0.00172 0 820 0.02262 0.00172 92.4% - 0s\n", + " 0 0 0.01464 0 883 0.02262 0.01464 35.3% - 0s\n", + " 0 0 0.01532 0 978 0.02262 0.01532 32.2% - 0s\n", + " 0 0 0.02057 0 966 0.02262 0.02057 9.05% - 0s\n", + " 0 0 0.02067 0 923 0.02262 0.02067 8.61% - 0s\n", + " 0 0 0.02094 0 1079 0.02262 0.02094 7.41% - 0s\n", + " 0 0 0.02095 0 1090 0.02262 0.02095 7.38% - 1s\n", + " 0 0 0.02095 0 1090 0.02262 0.02095 7.38% - 1s\n", + " 0 0 0.02095 0 1090 0.02262 0.02095 7.38% - 1s\n", + " 0 2 0.02095 0 1090 0.02262 0.02095 7.38% - 1s\n", + " 871 574 0.02224 17 1229 0.02262 0.02153 4.80% 274 5s\n", + " 993 582 0.02236 10 0 0.02262 0.02154 4.75% 270 32s\n", + "H 994 553 0.0226185 0.02154 4.75% 269 33s\n", + " 1001 557 0.02244 11 0 0.02262 0.02154 4.75% 267 35s\n", + " 1017 585 0.02154 15 1678 0.02262 0.02154 4.75% 285 40s\n", + "H 1033 584 0.0226185 0.02154 4.75% 299 43s\n", + "H 1044 554 0.0226185 0.02154 4.75% 324 43s\n", + "H 1051 526 0.0226184 0.02154 4.75% 327 43s\n", + "H 1052 501 0.0226183 0.02154 4.75% 328 43s\n", + " 1251 619 0.02154 20 1605 0.02262 0.02154 4.75% 335 45s\n", + " 1907 758 0.02230 29 652 0.02262 0.02165 4.29% 335 50s\n", + " 2238 774 cutoff 35 0.02262 0.02175 3.83% 329 55s\n", + " 2850 878 cutoff 27 0.02262 0.02186 3.35% 327 60s\n", + " 3703 1060 0.02243 26 1212 0.02262 0.02194 3.01% 317 67s\n", + " 3889 1129 0.02243 28 1101 0.02262 0.02194 3.01% 329 70s\n", + " 4886 1361 0.02224 25 668 0.02262 0.02202 2.64% 315 75s\n", + "H 5214 1485 0.0226183 0.02203 2.62% 316 76s\n", + " 6058 1851 cutoff 26 0.02262 0.02206 2.46% 311 80s\n", + " 7220 2033 0.02250 26 425 0.02262 0.02210 2.30% 305 85s\n", + " 8584 2374 0.02258 28 607 0.02262 0.02215 2.09% 298 90s\n", + "H 8958 2374 0.0226183 0.02216 2.01% 296 90s\n", + " 9541 2475 cutoff 28 0.02262 0.02218 1.95% 294 96s\n", + " 10472 2540 0.02257 29 444 0.02262 0.02221 1.83% 290 101s\n", + " 11019 2650 0.02259 30 1132 0.02262 0.02221 1.81% 288 106s\n", + " 11882 2728 0.02257 21 899 0.02262 0.02223 1.70% 285 110s\n", + " 13753 2938 cutoff 31 0.02262 0.02227 1.56% 279 116s\n", + " 15121 3076 0.02256 28 534 0.02262 0.02228 1.48% 275 121s\n", + " 16525 3201 0.02261 34 488 0.02262 0.02230 1.41% 273 126s\n", + " 18134 3302 cutoff 33 0.02262 0.02231 1.35% 270 132s\n", + " 18935 3335 cutoff 31 0.02262 0.02232 1.31% 269 135s\n", + " 20686 3436 cutoff 24 0.02262 0.02234 1.23% 266 141s\n", + " 22417 3457 cutoff 30 0.02262 0.02236 1.14% 264 147s\n", + " 23358 3486 0.02259 22 373 0.02262 0.02237 1.11% 262 151s\n", + " 25605 3456 cutoff 33 0.02262 0.02239 1.02% 258 158s\n", + " 26895 3397 0.02254 22 394 0.02262 0.02239 1.01% 255 162s\n", + " 28104 3393 cutoff 30 0.02262 0.02241 0.94% 253 165s\n", + " 30709 3277 cutoff 29 0.02262 0.02243 0.84% 249 174s\n", + " 32154 3223 cutoff 33 0.02262 0.02244 0.81% 247 178s\n", + " 33652 3247 0.02258 28 524 0.02262 0.02245 0.75% 245 182s\n", + " 35166 3173 0.02256 30 393 0.02262 0.02246 0.71% 243 187s\n", + " 37086 3096 cutoff 28 0.02262 0.02247 0.66% 240 191s\n", + " 38535 3032 0.02260 29 344 0.02262 0.02248 0.61% 238 196s\n", + " 40059 2924 cutoff 23 0.02262 0.02249 0.57% 236 200s\n", + " 41743 2753 0.02260 28 390 0.02262 0.02250 0.54% 234 205s\n", + " 45411 2419 0.02261 29 378 0.02262 0.02252 0.45% 228 214s\n", + " 47408 2159 cutoff 33 0.02262 0.02252 0.42% 225 219s\n", + " 49472 1916 0.02257 34 345 0.02262 0.02254 0.36% 222 224s\n", + " 51661 1515 infeasible 38 0.02262 0.02255 0.32% 218 229s\n", + " 54028 1172 0.02260 29 306 0.02262 0.02256 0.26% 215 235s\n", + " 56165 617 cutoff 42 0.02262 0.02257 0.21% 211 240s\n", + " 58954 119 cutoff 34 0.02262 0.02259 0.13% 206 246s\n", + "\n", + "Cutting planes:\n", + " RLT: 322\n", + " PSD: 6\n", + "\n", + "Explored 60671 nodes (12215481 simplex iterations) in 247.38 seconds (500.38 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0226183 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.261898508800e-02, best bound 2.261825632965e-02, gap 0.0032%\n", + "Computing GW distance between 7 and 3...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x51d3b85c\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [3e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0010645\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1020 iterations, 0.11 seconds (0.22 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1595 0.00106 0.00000 100% - 0s\n", + " 0 0 0.00012 0 829 0.00106 0.00012 89.0% - 0s\n", + " 0 0 0.00023 0 2342 0.00106 0.00023 78.1% - 0s\n", + " 0 0 0.00095 0 645 0.00106 0.00095 11.0% - 0s\n", + " 0 0 0.00097 0 189 0.00106 0.00097 8.44% - 0s\n", + " 0 0 0.00098 0 196 0.00106 0.00098 7.52% - 0s\n", + " 0 0 0.00098 0 185 0.00106 0.00098 7.49% - 0s\n", + " 0 0 0.00099 0 153 0.00106 0.00099 7.43% - 0s\n", + " 0 0 0.00099 0 146 0.00106 0.00099 7.37% - 0s\n", + " 0 2 0.00099 0 130 0.00106 0.00099 7.23% - 1s\n", + "* 77 0 18 0.0010643 0.00106 0.00% 17.1 1s\n", + "\n", + "Cutting planes:\n", + " RLT: 161\n", + "\n", + "Explored 79 nodes (4415 simplex iterations) in 1.59 seconds (1.68 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.00106426 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.064639567628e-03, best bound 1.064258665284e-03, gap 0.0358%\n", + "Computing GW distance between 7 and 4...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x96d5abef\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [3e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0268244\n", + "\n", + "Root relaxation: objective 0.000000e+00, 905 iterations, 0.06 seconds (0.11 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 689 0.02682 0.00000 100% - 0s\n", + " 0 0 0.00627 0 705 0.02682 0.00627 76.6% - 0s\n", + " 0 0 0.01987 0 862 0.02682 0.01987 25.9% - 0s\n", + " 0 0 0.01987 0 862 0.02682 0.01987 25.9% - 0s\n", + " 0 0 0.02254 0 1182 0.02682 0.02254 16.0% - 0s\n", + " 0 0 0.02449 0 1502 0.02682 0.02449 8.69% - 0s\n", + " 0 0 0.02450 0 1505 0.02682 0.02450 8.68% - 1s\n", + " 0 0 0.02469 0 1539 0.02682 0.02469 7.96% - 1s\n", + " 0 0 0.02494 0 1691 0.02682 0.02494 7.01% - 1s\n", + " 0 0 0.02494 0 1727 0.02682 0.02494 7.01% - 1s\n", + " 0 0 0.02495 0 1734 0.02682 0.02495 6.98% - 1s\n", + " 0 0 0.02500 0 1667 0.02682 0.02500 6.79% - 1s\n", + " 0 0 0.02500 0 1668 0.02682 0.02500 6.79% - 1s\n", + " 0 0 0.02500 0 1668 0.02682 0.02500 6.79% - 1s\n", + " 0 2 0.02500 0 1668 0.02682 0.02500 6.79% - 2s\n", + " 721 184 cutoff 15 0.02682 0.02603 2.97% 237 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 337\n", + " BQP: 2\n", + " PSD: 1\n", + "\n", + "Explored 3226 nodes (563548 simplex iterations) in 8.16 seconds (12.96 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0268244 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.682486089941e-02, best bound 2.682438056322e-02, gap 0.0018%\n", + "Computing GW distance between 7 and 5...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x0dd076ed\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [3e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0012579\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1138 iterations, 0.13 seconds (0.26 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1553 0.00126 0.00000 100% - 0s\n", + " 0 0 0.00019 0 2812 0.00126 0.00019 84.5% - 0s\n", + " 0 0 0.00023 0 3127 0.00126 0.00023 81.5% - 0s\n", + " 0 0 0.00067 0 1117 0.00126 0.00067 47.1% - 0s\n", + " 0 0 0.00070 0 1218 0.00126 0.00070 44.2% - 0s\n", + " 0 0 0.00071 0 1280 0.00126 0.00071 43.7% - 0s\n", + " 0 2 0.00071 0 1281 0.00126 0.00071 43.6% - 1s\n", + "* 744 0 23 0.0012576 0.00126 0.00% 26.0 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 65\n", + "\n", + "Explored 745 nodes (22198 simplex iterations) in 2.35 seconds (3.33 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 2: 0.00125761 0.00125792 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.258149155546e-03, best bound 1.257610674248e-03, gap 0.0428%\n", + "Computing GW distance between 7 and 6...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x25c2686f\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0008493\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1007 iterations, 0.09 seconds (0.18 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1737 0.00085 0.00000 100% - 0s\n", + " 0 0 0.00002 0 1874 0.00085 0.00002 98.1% - 0s\n", + " 0 0 0.00002 0 1891 0.00085 0.00002 98.1% - 0s\n", + " 0 0 0.00050 0 1512 0.00085 0.00050 41.4% - 0s\n", + " 0 0 0.00057 0 1343 0.00085 0.00057 32.6% - 0s\n", + " 0 0 0.00059 0 1199 0.00085 0.00059 30.4% - 1s\n", + " 0 0 0.00060 0 1194 0.00085 0.00060 29.9% - 1s\n", + " 0 0 0.00060 0 1209 0.00085 0.00060 29.8% - 1s\n", + " 0 2 0.00060 0 1209 0.00085 0.00060 29.8% - 2s\n", + "H 130 2 0.0008492 0.00084 0.70% 23.8 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 68\n", + "\n", + "Explored 146 nodes (6536 simplex iterations) in 2.55 seconds (3.60 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0008492 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 8.495871104976e-04, best bound 8.491999825031e-04, gap 0.0456%\n", + "Computing GW distance between 8 and 0...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xb1cc0874\n", + "Model has 10360 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14449 rows, 7447 columns, 36419 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7213 bilinear constraint(s)\n", + "Variable types: 7447 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0178109\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1031 iterations, 0.08 seconds (0.16 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1327 0.01781 0.00000 100% - 0s\n", + " 0 0 0.00409 0 785 0.01781 0.00409 77.0% - 0s\n", + " 0 0 0.01144 0 785 0.01781 0.01144 35.8% - 0s\n", + " 0 0 0.01154 0 790 0.01781 0.01154 35.2% - 0s\n", + " 0 0 0.01578 0 1521 0.01781 0.01578 11.4% - 1s\n", + " 0 0 0.01579 0 1521 0.01781 0.01579 11.4% - 1s\n", + " 0 0 0.01591 0 1470 0.01781 0.01591 10.7% - 1s\n", + " 0 0 0.01621 0 1486 0.01781 0.01621 8.99% - 1s\n", + " 0 0 0.01623 0 1427 0.01781 0.01623 8.87% - 1s\n", + " 0 0 0.01624 0 1453 0.01781 0.01624 8.82% - 1s\n", + " 0 0 0.01624 0 1445 0.01781 0.01624 8.82% - 1s\n", + " 0 0 0.01624 0 1445 0.01781 0.01624 8.82% - 1s\n", + " 0 2 0.01624 0 1445 0.01781 0.01624 8.82% - 2s\n", + " 1690 155 0.01764 14 198 0.01781 0.01758 1.32% 98.9 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 274\n", + " BQP: 1\n", + " PSD: 3\n", + "\n", + "Explored 2744 nodes (222281 simplex iterations) in 5.85 seconds (9.04 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0178109 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.781106211577e-02, best bound 1.781094641300e-02, gap 0.0006%\n", + "Computing GW distance between 8 and 1...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xbf8fe533\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0266613\n", + "\n", + "Root relaxation: objective 0.000000e+00, 729 iterations, 0.06 seconds (0.11 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 681 0.02666 0.00000 100% - 0s\n", + " 0 0 0.00153 0 1001 0.02666 0.00153 94.2% - 0s\n", + " 0 0 0.02019 0 1076 0.02666 0.02019 24.3% - 0s\n", + " 0 0 0.02140 0 900 0.02666 0.02140 19.7% - 0s\n", + " 0 0 0.02417 0 1331 0.02666 0.02417 9.33% - 0s\n", + " 0 0 0.02462 0 1438 0.02666 0.02462 7.66% - 1s\n", + " 0 0 0.02485 0 1558 0.02666 0.02485 6.79% - 1s\n", + " 0 0 0.02486 0 1478 0.02666 0.02486 6.77% - 1s\n", + " 0 0 0.02486 0 1439 0.02666 0.02486 6.74% - 1s\n", + " 0 0 0.02487 0 1482 0.02666 0.02487 6.71% - 1s\n", + " 0 0 0.02487 0 1482 0.02666 0.02487 6.71% - 1s\n", + " 0 2 0.02487 0 1482 0.02666 0.02487 6.71% - 2s\n", + " 218 189 0.02605 10 627 0.02666 0.02560 3.99% 356 5s\n", + " 1354 313 cutoff 15 0.02666 0.02601 2.45% 222 10s\n", + "\n", + "Cutting planes:\n", + " RLT: 354\n", + " PSD: 2\n", + "\n", + "Explored 2915 nodes (567755 simplex iterations) in 12.40 seconds (21.82 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0266613 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.666149744871e-02, best bound 2.666130614735e-02, gap 0.0007%\n", + "Computing GW distance between 8 and 2...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x2280d641\n", + "Model has 10352 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [5e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14435 rows, 7440 columns, 36384 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7206 bilinear constraint(s)\n", + "Variable types: 7440 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0213843\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1167 iterations, 0.09 seconds (0.17 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 696 0.02138 0.00000 100% - 0s\n", + " 0 0 0.00352 0 794 0.02138 0.00352 83.5% - 0s\n", + " 0 0 0.01417 0 1039 0.02138 0.01417 33.7% - 1s\n", + " 0 0 0.01417 0 1039 0.02138 0.01417 33.7% - 1s\n", + " 0 0 0.01425 0 1058 0.02138 0.01425 33.3% - 1s\n", + " 0 0 0.01929 0 1229 0.02138 0.01929 9.80% - 1s\n", + " 0 0 0.01929 0 1260 0.02138 0.01929 9.80% - 1s\n", + " 0 0 0.01941 0 1347 0.02138 0.01941 9.22% - 1s\n", + " 0 0 0.01944 0 1346 0.02138 0.01944 9.09% - 1s\n", + " 0 0 0.01944 0 1340 0.02138 0.01944 9.09% - 1s\n", + " 0 0 0.01945 0 1362 0.02138 0.01945 9.05% - 1s\n", + " 0 0 0.01945 0 1364 0.02138 0.01945 9.05% - 1s\n", + " 0 0 0.01945 0 1337 0.02138 0.01945 9.05% - 1s\n", + " 0 2 0.01945 0 1337 0.02138 0.01945 9.05% - 2s\n", + " 201 180 0.02066 10 511 0.02138 0.02013 5.87% 285 5s\n", + " 1053 454 0.02128 14 0 0.02138 0.02054 3.96% 219 28s\n", + " 1059 458 0.02111 15 0 0.02138 0.02054 3.96% 218 30s\n", + " 1068 469 0.02054 12 1544 0.02138 0.02054 3.96% 222 35s\n", + "H 1097 485 0.0213840 0.02054 3.96% 236 39s\n", + "H 1122 455 0.0213839 0.02054 3.96% 258 39s\n", + " 1243 539 0.02118 17 392 0.02138 0.02054 3.96% 259 40s\n", + " 1570 517 0.02054 19 1056 0.02138 0.02054 3.96% 274 45s\n", + " 2583 473 cutoff 30 0.02138 0.02082 2.62% 259 50s\n", + " 4003 642 infeasible 23 0.02138 0.02100 1.82% 242 55s\n", + " 4926 680 cutoff 20 0.02138 0.02105 1.58% 233 60s\n", + " 6876 723 0.02137 27 420 0.02138 0.02115 1.09% 216 65s\n", + " 8540 601 0.02137 23 390 0.02138 0.02122 0.75% 206 70s\n", + " 10237 207 cutoff 28 0.02138 0.02129 0.44% 197 75s\n", + "\n", + "Cutting planes:\n", + " RLT: 319\n", + " PSD: 3\n", + "\n", + "Explored 11236 nodes (2134218 simplex iterations) in 77.02 seconds (124.50 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0213839 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.138466527062e-02, best bound 2.138393543104e-02, gap 0.0034%\n", + "Computing GW distance between 8 and 3...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xe6b4fa15\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0015389\n", + "\n", + "Root relaxation: objective 0.000000e+00, 883 iterations, 0.09 seconds (0.19 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1204 0.00154 0.00000 100% - 0s\n", + " 0 0 0.00006 0 827 0.00154 0.00006 95.9% - 0s\n", + " 0 0 0.00089 0 2186 0.00154 0.00089 42.1% - 1s\n", + " 0 0 0.00097 0 2254 0.00154 0.00097 37.2% - 1s\n", + " 0 0 0.00098 0 2216 0.00154 0.00098 36.3% - 1s\n", + " 0 0 0.00098 0 2216 0.00154 0.00098 36.1% - 1s\n", + " 0 0 0.00099 0 2226 0.00154 0.00099 36.0% - 1s\n", + " 0 0 0.00099 0 2228 0.00154 0.00099 35.9% - 1s\n", + " 0 2 0.00099 0 2228 0.00154 0.00099 35.9% - 2s\n", + "* 1013 0 34 0.0015384 0.00154 0.11% 23.4 4s\n", + "\n", + "Cutting planes:\n", + " RLT: 149\n", + "\n", + "Explored 1028 nodes (26502 simplex iterations) in 4.13 seconds (5.50 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.00153841 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.538969908822e-03, best bound 1.538409815703e-03, gap 0.0364%\n", + "Computing GW distance between 8 and 4...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xe8d10304\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0260792\n", + "\n", + "Root relaxation: objective 0.000000e+00, 553 iterations, 0.04 seconds (0.07 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 686 0.02608 0.00000 100% - 0s\n", + " 0 0 0.00302 0 711 0.02608 0.00302 88.4% - 0s\n", + " 0 0 0.02069 0 964 0.02608 0.02069 20.7% - 0s\n", + " 0 0 0.02307 0 1240 0.02608 0.02307 11.6% - 0s\n", + " 0 0 0.02410 0 1487 0.02608 0.02410 7.59% - 1s\n", + " 0 0 0.02410 0 1497 0.02608 0.02410 7.59% - 1s\n", + " 0 0 0.02419 0 1163 0.02608 0.02419 7.24% - 1s\n", + " 0 0 0.02425 0 1243 0.02608 0.02425 7.01% - 1s\n", + " 0 0 0.02425 0 1244 0.02608 0.02425 7.01% - 1s\n", + " 0 0 0.02428 0 1448 0.02608 0.02428 6.88% - 1s\n", + " 0 0 0.02429 0 1438 0.02608 0.02429 6.87% - 1s\n", + " 0 2 0.02429 0 1438 0.02608 0.02429 6.87% - 2s\n", + " 61 84 0.02520 6 1565 0.02608 0.02491 4.50% 298 5s\n", + "* 2286 0 17 0.0260791 0.02586 0.83% 184 9s\n", + "\n", + "Cutting planes:\n", + " RLT: 340\n", + " PSD: 1\n", + "\n", + "Explored 2300 nodes (424918 simplex iterations) in 9.18 seconds (15.55 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0260791 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.607928936939e-02, best bound 2.607914858925e-02, gap 0.0005%\n", + "Computing GW distance between 8 and 5...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x68d0f15a\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0008196\n", + "\n", + "Root relaxation: objective 0.000000e+00, 977 iterations, 0.12 seconds (0.24 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1389 0.00082 0.00000 100% - 0s\n", + " 0 0 0.00006 0 877 0.00082 0.00006 92.6% - 0s\n", + " 0 0 0.00010 0 2113 0.00082 0.00010 88.2% - 0s\n", + " 0 0 0.00065 0 1027 0.00082 0.00065 20.9% - 0s\n", + " 0 0 0.00071 0 875 0.00082 0.00071 13.5% - 0s\n", + " 0 0 0.00073 0 310 0.00082 0.00073 11.4% - 1s\n", + " 0 0 0.00074 0 260 0.00082 0.00074 9.62% - 1s\n", + " 0 0 0.00074 0 109 0.00082 0.00074 9.14% - 1s\n", + " 0 0 0.00075 0 94 0.00082 0.00075 8.60% - 1s\n", + " 0 2 0.00075 0 92 0.00082 0.00075 8.28% - 1s\n", + "* 414 0 19 0.0008194 0.00081 0.66% 18.1 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 147\n", + "\n", + "Explored 419 nodes (10998 simplex iterations) in 2.22 seconds (2.42 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.000819374 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 8.198321520019e-04, best bound 8.193739591168e-04, gap 0.0559%\n", + "Computing GW distance between 8 and 6...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x287e223d\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0003387\n", + "\n", + "Root relaxation: objective 0.000000e+00, 888 iterations, 0.11 seconds (0.22 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1703 0.00034 0.00000 100% - 0s\n", + " 0 0 0.00022 0 915 0.00034 0.00022 34.1% - 0s\n", + " 0 0 0.00026 0 811 0.00034 0.00026 22.6% - 0s\n", + "H 0 0 0.0003386 0.00026 22.6% - 1s\n", + "H 0 0 0.0003384 0.00026 22.5% - 1s\n", + "H 0 0 0.0003384 0.00026 22.5% - 1s\n", + " 0 2 0.00031 0 97 0.00034 0.00031 8.26% - 1s\n", + "\n", + "Explored 28 nodes (2989 simplex iterations) in 1.35 seconds (1.34 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 2: 0.000338383 0.000338605 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 3.393303049546e-04, best bound 3.383829110879e-04, gap 0.2792%\n", + "Computing GW distance between 8 and 7...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xe7dd499f\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0010723\n", + "\n", + "Root relaxation: objective 0.000000e+00, 740 iterations, 0.08 seconds (0.16 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1530 0.00107 0.00000 100% - 0s\n", + " 0 0 0.00006 0 3128 0.00107 0.00006 94.4% - 0s\n", + " 0 0 0.00007 0 3033 0.00107 0.00007 93.3% - 0s\n", + " 0 0 0.00062 0 1257 0.00107 0.00062 42.2% - 0s\n", + " 0 0 0.00064 0 1269 0.00107 0.00064 40.0% - 0s\n", + " 0 0 0.00065 0 1272 0.00107 0.00065 39.7% - 0s\n", + " 0 0 0.00065 0 1259 0.00107 0.00065 39.6% - 0s\n", + " 0 0 0.00066 0 1286 0.00107 0.00066 38.8% - 0s\n", + " 0 2 0.00066 0 1299 0.00107 0.00066 38.7% - 1s\n", + "* 781 8 26 0.0010722 0.00106 1.21% 20.6 2s\n", + "* 785 8 25 0.0010721 0.00107 0.07% 20.5 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 61\n", + "\n", + "Explored 791 nodes (18406 simplex iterations) in 2.41 seconds (3.44 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0010721 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.072460564190e-03, best bound 1.072099933653e-03, gap 0.0336%\n", + "Computing GW distance between 9 and 0...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xbbceaa12\n", + "Model has 10360 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [6e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14449 rows, 7447 columns, 36419 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7213 bilinear constraint(s)\n", + "Variable types: 7447 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0177845\n", + "\n", + "Root relaxation: objective 0.000000e+00, 906 iterations, 0.07 seconds (0.14 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 725 0.01778 0.00000 100% - 0s\n", + " 0 0 0.00171 0 787 0.01778 0.00171 90.4% - 0s\n", + " 0 0 0.00179 0 787 0.01778 0.00179 89.9% - 0s\n", + " 0 0 0.00991 0 805 0.01778 0.00991 44.3% - 0s\n", + " 0 0 0.01186 0 811 0.01778 0.01186 33.3% - 0s\n", + " 0 0 0.01538 0 1238 0.01778 0.01538 13.5% - 0s\n", + " 0 0 0.01557 0 1268 0.01778 0.01557 12.5% - 0s\n", + " 0 0 0.01591 0 1703 0.01778 0.01591 10.5% - 1s\n", + " 0 0 0.01591 0 1718 0.01778 0.01591 10.5% - 1s\n", + " 0 0 0.01593 0 1764 0.01778 0.01593 10.4% - 1s\n", + " 0 0 0.01594 0 1755 0.01778 0.01594 10.4% - 1s\n", + " 0 0 0.01594 0 1745 0.01778 0.01594 10.3% - 1s\n", + " 0 0 0.01595 0 1750 0.01778 0.01595 10.3% - 1s\n", + " 0 2 0.01595 0 1750 0.01778 0.01595 10.3% - 2s\n", + " 1246 193 cutoff 13 0.01778 0.01735 2.44% 188 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 290\n", + " PSD: 2\n", + "\n", + "Explored 3797 nodes (426865 simplex iterations) in 7.04 seconds (10.72 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0177845 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.778481245353e-02, best bound 1.778452596044e-02, gap 0.0016%\n", + "Computing GW distance between 9 and 1...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x8152e0c0\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [1e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0263160\n", + "\n", + "Root relaxation: objective 0.000000e+00, 538 iterations, 0.04 seconds (0.07 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 727 0.02632 0.00000 100% - 0s\n", + " 0 0 0.00010 0 850 0.02632 0.00010 100% - 0s\n", + " 0 0 0.02091 0 731 0.02632 0.02091 20.5% - 1s\n", + " 0 0 0.02237 0 771 0.02632 0.02237 15.0% - 1s\n", + " 0 0 0.02416 0 1516 0.02632 0.02416 8.20% - 1s\n", + " 0 0 0.02428 0 1583 0.02632 0.02428 7.74% - 1s\n", + " 0 0 0.02439 0 1523 0.02632 0.02439 7.31% - 1s\n", + " 0 0 0.02439 0 1523 0.02632 0.02439 7.31% - 1s\n", + " 0 0 0.02440 0 1513 0.02632 0.02440 7.30% - 1s\n", + " 0 0 0.02440 0 1513 0.02632 0.02440 7.30% - 1s\n", + " 0 2 0.02440 0 1513 0.02632 0.02440 7.30% - 2s\n", + " 1098 70 0.02630 13 273 0.02632 0.02600 1.19% 173 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 343\n", + " PSD: 3\n", + "\n", + "Explored 1367 nodes (226329 simplex iterations) in 5.83 seconds (8.95 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.026316 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.631673765376e-02, best bound 2.631604347842e-02, gap 0.0026%\n", + "Computing GW distance between 9 and 2...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x096e6009\n", + "Model has 10352 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [5e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14435 rows, 7440 columns, 36384 nonzeros\n", + "Presolved model has 111 quadratic constraint(s)\n", + "Presolved model has 7206 bilinear constraint(s)\n", + "Variable types: 7440 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0220347\n", + "\n", + "Root relaxation: objective 0.000000e+00, 770 iterations, 0.06 seconds (0.10 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 734 0.02203 0.00000 100% - 0s\n", + " 0 0 0.00291 0 694 0.02203 0.00291 86.8% - 0s\n", + " 0 0 0.01235 0 1125 0.02203 0.01235 43.9% - 0s\n", + " 0 0 0.01326 0 1246 0.02203 0.01326 39.8% - 0s\n", + " 0 0 0.01908 0 1234 0.02203 0.01908 13.4% - 0s\n", + " 0 0 0.01917 0 1096 0.02203 0.01917 13.0% - 0s\n", + " 0 0 0.01949 0 1627 0.02203 0.01949 11.5% - 0s\n", + " 0 0 0.01951 0 1625 0.02203 0.01951 11.5% - 0s\n", + " 0 0 0.01959 0 1526 0.02203 0.01959 11.1% - 1s\n", + " 0 0 0.01966 0 1552 0.02203 0.01966 10.8% - 1s\n", + " 0 0 0.01966 0 1531 0.02203 0.01966 10.8% - 1s\n", + " 0 0 0.01966 0 1583 0.02203 0.01966 10.8% - 1s\n", + " 0 0 0.01966 0 1581 0.02203 0.01966 10.8% - 1s\n", + " 0 2 0.01966 0 1581 0.02203 0.01966 10.8% - 2s\n", + " 681 456 0.02116 8 807 0.02203 0.02057 6.65% 296 5s\n", + " 899 520 0.02184 15 0 0.02203 0.02066 6.25% 300 35s\n", + " 912 529 0.02151 16 0 0.02203 0.02066 6.25% 296 40s\n", + " 945 580 0.02123 21 1738 0.02203 0.02066 6.25% 314 45s\n", + " 1465 754 0.02193 29 1238 0.02203 0.02084 5.44% 332 50s\n", + " 2317 809 0.02193 37 549 0.02203 0.02106 4.42% 313 55s\n", + " 3026 971 0.02170 28 851 0.02203 0.02117 3.94% 305 61s\n", + " 3711 1192 0.02189 28 475 0.02203 0.02124 3.60% 315 65s\n", + " 4849 1535 0.02199 31 791 0.02203 0.02132 3.23% 300 70s\n", + " 6049 1730 0.02188 30 1206 0.02203 0.02140 2.88% 289 75s\n", + " 7503 1890 cutoff 32 0.02203 0.02146 2.61% 279 80s\n", + " 8931 2069 0.02201 41 426 0.02203 0.02153 2.31% 271 85s\n", + " 10595 2269 cutoff 34 0.02203 0.02156 2.15% 264 90s\n", + " 12006 2411 0.02196 30 1232 0.02203 0.02160 1.99% 261 95s\n", + " 13641 2652 cutoff 32 0.02203 0.02163 1.82% 256 101s\n", + " 15500 2954 cutoff 37 0.02203 0.02166 1.68% 252 106s\n", + " 16865 3132 cutoff 39 0.02203 0.02168 1.59% 249 112s\n", + " 18394 3243 cutoff 34 0.02203 0.02171 1.47% 246 116s\n", + " 20031 3327 0.02188 33 677 0.02203 0.02173 1.39% 243 121s\n", + " 21819 3382 cutoff 30 0.02203 0.02175 1.28% 240 127s\n", + " 23766 3342 0.02196 32 859 0.02203 0.02178 1.18% 236 132s\n", + " 24825 3441 infeasible 38 0.02203 0.02178 1.15% 234 136s\n", + " 26966 3437 0.02201 32 402 0.02203 0.02180 1.06% 231 144s\n", + " 28080 3492 0.02201 35 420 0.02203 0.02181 1.04% 231 147s\n", + " 29255 3539 cutoff 39 0.02203 0.02182 0.99% 230 151s\n", + " 30594 3477 0.02203 41 484 0.02203 0.02182 0.95% 228 155s\n", + " 33139 3382 cutoff 32 0.02203 0.02184 0.86% 225 162s\n", + " 34429 3232 cutoff 32 0.02203 0.02185 0.83% 223 167s\n", + " 35823 3102 cutoff 31 0.02203 0.02187 0.77% 222 171s\n", + " 37307 2995 0.02202 39 454 0.02203 0.02187 0.74% 221 175s\n", + "H38950 2845 0.0220347 0.02189 0.68% 218 179s\n", + "H39618 2845 0.0220347 0.02189 0.67% 217 179s\n", + " 40508 2668 cutoff 41 0.02203 0.02190 0.60% 216 184s\n", + " 42225 2531 cutoff 34 0.02203 0.02192 0.53% 215 188s\n", + " 44040 2397 cutoff 36 0.02203 0.02194 0.45% 212 193s\n", + " 45844 2318 0.02201 36 192 0.02203 0.02194 0.41% 209 198s\n", + " 48023 2143 0.02202 33 362 0.02203 0.02196 0.35% 206 204s\n", + " 50370 1915 cutoff 36 0.02203 0.02197 0.30% 202 209s\n", + " 52870 1719 cutoff 43 0.02203 0.02198 0.27% 198 214s\n", + " 55520 1457 cutoff 45 0.02203 0.02199 0.19% 193 220s\n", + " 58292 1173 0.02203 42 230 0.02203 0.02200 0.16% 188 225s\n", + " 61226 373 cutoff 48 0.02203 0.02201 0.13% 183 230s\n", + "*64783 0 45 0.0220346 0.02202 0.07% 177 233s\n", + "\n", + "Cutting planes:\n", + " RLT: 336\n", + " PSD: 2\n", + "\n", + "Explored 64807 nodes (11450625 simplex iterations) in 233.30 seconds (461.29 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0220346 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.203503389672e-02, best bound 2.203458909318e-02, gap 0.0020%\n", + "Computing GW distance between 9 and 3...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xc2f1a46c\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [6e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0010199\n", + "\n", + "Root relaxation: objective 0.000000e+00, 957 iterations, 0.11 seconds (0.20 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1600 0.00102 0.00000 100% - 0s\n", + " 0 0 0.00002 0 966 0.00102 0.00002 98.1% - 0s\n", + " 0 0 0.00072 0 1775 0.00102 0.00072 29.8% - 0s\n", + " 0 0 0.00076 0 1709 0.00102 0.00076 25.6% - 0s\n", + " 0 0 0.00077 0 1726 0.00102 0.00077 24.8% - 0s\n", + " 0 0 0.00077 0 1733 0.00102 0.00077 24.6% - 1s\n", + " 0 2 0.00077 0 1733 0.00102 0.00077 24.6% - 2s\n", + "* 567 8 17 0.0010197 0.00101 0.51% 20.3 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 165\n", + "\n", + "Explored 586 nodes (14459 simplex iterations) in 2.82 seconds (4.02 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.00101973 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 1.020071884981e-03, best bound 1.019734092004e-03, gap 0.0331%\n", + "Computing GW distance between 9 and 4...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xafbec9b5\n", + "Model has 10351 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [4e-04, 3e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [3e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14411 rows, 7427 columns, 36323 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7194 bilinear constraint(s)\n", + "Variable types: 7427 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0257333\n", + "\n", + "Root relaxation: objective 0.000000e+00, 729 iterations, 0.06 seconds (0.10 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 759 0.02573 0.00000 100% - 0s\n", + " 0 0 0.00180 0 1032 0.02573 0.00180 93.0% - 0s\n", + " 0 0 0.01928 0 1060 0.02573 0.01928 25.1% - 0s\n", + " 0 0 0.02117 0 1257 0.02573 0.02117 17.7% - 0s\n", + " 0 0 0.02366 0 1310 0.02573 0.02366 8.07% - 0s\n", + " 0 0 0.02398 0 1100 0.02573 0.02398 6.80% - 1s\n", + " 0 0 0.02413 0 1134 0.02573 0.02413 6.25% - 1s\n", + " 0 0 0.02413 0 1133 0.02573 0.02413 6.24% - 1s\n", + " 0 0 0.02414 0 1189 0.02573 0.02414 6.17% - 1s\n", + " 0 2 0.02414 0 1189 0.02573 0.02414 6.17% - 2s\n", + " 1539 78 0.02570 13 190 0.02573 0.02546 1.07% 180 5s\n", + "\n", + "Cutting planes:\n", + " RLT: 334\n", + " PSD: 2\n", + "\n", + "Explored 1796 nodes (298124 simplex iterations) in 5.33 seconds (8.46 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.0257333 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 2.573372594607e-02, best bound 2.573328705894e-02, gap 0.0017%\n", + "Computing GW distance between 9 and 5...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xcfa08fec\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [6e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0008271\n", + "\n", + "Root relaxation: objective 0.000000e+00, 707 iterations, 0.08 seconds (0.17 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1217 0.00083 0.00000 100% - 0s\n", + " 0 0 0.00000 0 964 0.00083 0.00000 100% - 0s\n", + " 0 2 0.00000 0 964 0.00083 0.00000 100% - 0s\n", + "* 314 0 22 0.0008269 0.00082 0.84% 35.2 1s\n", + "\n", + "Explored 333 nodes (12281 simplex iterations) in 1.51 seconds (2.12 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 2: 0.000826876 0.000827137 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 8.274800496377e-04, best bound 8.268758668845e-04, gap 0.0730%\n", + "Computing GW distance between 9 and 6...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x0b37aa4d\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [2e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0005844\n", + "\n", + "Root relaxation: objective 0.000000e+00, 1049 iterations, 0.13 seconds (0.25 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1588 0.00058 0.00000 100% - 0s\n", + " 0 0 0.00000 0 1827 0.00058 0.00000 100% - 0s\n", + " 0 0 0.00029 0 1507 0.00058 0.00029 50.8% - 0s\n", + " 0 0 0.00032 0 1628 0.00058 0.00032 44.9% - 0s\n", + " 0 0 0.00036 0 1152 0.00058 0.00036 37.7% - 0s\n", + " 0 0 0.00037 0 1185 0.00058 0.00037 36.6% - 0s\n", + " 0 2 0.00038 0 1164 0.00058 0.00038 35.8% - 2s\n", + "* 50 0 14 0.0005844 0.00058 0.18% 26.2 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 27\n", + "\n", + "Explored 53 nodes (4411 simplex iterations) in 2.38 seconds (4.06 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 1: 0.000584359 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 5.846298221661e-04, best bound 5.843591764216e-04, gap 0.0463%\n", + "Computing GW distance between 9 and 7...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0x1525aa5b\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [3e-03, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0004739\n", + "\n", + "Root relaxation: objective 0.000000e+00, 865 iterations, 0.11 seconds (0.22 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1781 0.00047 0.00000 100% - 0s\n", + " 0 0 0.00021 0 2968 0.00047 0.00021 54.7% - 0s\n", + " 0 0 0.00029 0 2103 0.00047 0.00029 38.5% - 0s\n", + " 0 0 0.00044 0 435 0.00047 0.00044 6.47% - 1s\n", + " 0 0 0.00045 0 72 0.00047 0.00045 5.06% - 1s\n", + " 0 2 0.00045 0 70 0.00047 0.00045 4.49% - 1s\n", + "* 41 2 8 0.0004736 0.00047 0.17% 19.0 1s\n", + "\n", + "Cutting planes:\n", + " RLT: 21\n", + "\n", + "Explored 47 nodes (3686 simplex iterations) in 1.52 seconds (1.51 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 2: 0.000473581 0.000473852 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 4.741612677201e-04, best bound 4.735814226486e-04, gap 0.1223%\n", + "Computing GW distance between 9 and 8...\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (linux64 - \"Rocky Linux 8.10 (Green Obsidian)\")\n", + "\n", + "CPU model: Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz, instruction set [SSE2|AVX|AVX2|AVX512]\n", + "Thread count: 64 physical cores, 64 logical processors, using up to 32 threads\n", + "\n", + "Optimize a model with 24 rows, 144 columns and 288 nonzeros\n", + "Model fingerprint: 0xc3014639\n", + "Model has 10296 quadratic objective terms\n", + "Coefficient statistics:\n", + " Matrix range [1e+00, 1e+00]\n", + " Objective range [0e+00, 0e+00]\n", + " QObjective range [3e-04, 4e+00]\n", + " Bounds range [0e+00, 0e+00]\n", + " RHS range [4e-04, 3e-01]\n", + "Presolve removed 3 rows and 23 columns\n", + "\n", + "Continuous model is non-convex -- solving as a MIP\n", + "\n", + "Presolve removed 2 rows and 23 columns\n", + "Presolve time: 0.01s\n", + "Presolved: 14329 rows, 7386 columns, 36118 nonzeros\n", + "Presolved model has 110 quadratic constraint(s)\n", + "Presolved model has 7153 bilinear constraint(s)\n", + "Variable types: 7386 continuous, 0 integer (0 binary)\n", + "Found heuristic solution: objective 0.0007946\n", + "\n", + "Root relaxation: objective 0.000000e+00, 771 iterations, 0.09 seconds (0.19 work units)\n", + "\n", + " Nodes | Current Node | Objective Bounds | Work\n", + " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", + "\n", + " 0 0 0.00000 0 1462 0.00079 0.00000 100% - 0s\n", + " 0 0 0.00010 0 1504 0.00079 0.00010 87.4% - 0s\n", + " 0 0 0.00014 0 2950 0.00079 0.00014 82.8% - 0s\n", + " 0 0 0.00042 0 1093 0.00079 0.00042 47.2% - 0s\n", + " 0 0 0.00044 0 1226 0.00079 0.00044 45.1% - 0s\n", + " 0 0 0.00045 0 1251 0.00079 0.00045 43.7% - 0s\n", + " 0 0 0.00045 0 1254 0.00079 0.00045 43.5% - 0s\n", + " 0 2 0.00045 0 1254 0.00079 0.00045 43.5% - 1s\n", + "* 326 0 24 0.0007942 0.00079 0.09% 19.3 2s\n", + "* 328 0 22 0.0007942 0.00079 0.08% 19.3 2s\n", + "\n", + "Cutting planes:\n", + " RLT: 55\n", + "\n", + "Explored 331 nodes (9097 simplex iterations) in 2.07 seconds (3.02 work units)\n", + "Thread count was 32 (of 64 available processors)\n", + "\n", + "Solution count 2: 0.000794224 0.000794618 \n", + "\n", + "Optimal solution found (tolerance 1.00e-04)\n", + "Best objective 7.947886298819e-04, best bound 7.942244963661e-04, gap 0.0710%\n" + ] + } + ], + "source": [ + "def generate_G(Cx, Cy):\n", + " \"\"\"\n", + " Generate the quadratic cost matrix G for the Gromov-Wasserstein problem.\n", + "\n", + " Parameters:\n", + " Cx (numpy.ndarray): Distance matrix for the source space, shape (n, n).\n", + " Cy (numpy.ndarray): Distance matrix for the target space, shape (m, m).\n", + "\n", + " Returns:\n", + " numpy.ndarray: Quadratic cost matrix G, shape (nm, nm).\n", + " \"\"\"\n", + " n, m = Cx.shape[0], Cy.shape[0]\n", + "\n", + " # Initialize the G matrix with zeros\n", + " G = np.zeros((n * m, n * m))\n", + "\n", + " # Fill in G using the formula\n", + " for i in range(n):\n", + " for j in range(m):\n", + " for k in range(n):\n", + " for el in range(m):\n", + " idx1 = i * m + j # Flattened index for (i, j)\n", + " idx2 = k * m + el # Flattened index for (k, l)\n", + " G[idx1, idx2] = (Cx[i, k] - Cx[j, k]) ** 2 + (\n", + " Cy[el, i] - Cy[el, j]\n", + " ) ** 2\n", + "\n", + " return G\n", + "\n", + "\n", + "gw_distance = np.zeros((len(volumes_i), len(volumes_j)))\n", + "for idx_i in range(len(volumes_i)):\n", + " for idx_j in range(len(volumes_j)):\n", + " if idx_i > idx_j:\n", + " print(f\"Computing GW distance between {idx_i} and {idx_j}...\")\n", + "\n", + " n = m = top_k\n", + " Cx = pairwise_distances_i[idx_i]\n", + " Cy = pairwise_distances_j[idx_j]\n", + "\n", + " # Ensure the distance matrices are symmetric and non-negative\n", + " Cx = 0.5 * (Cx + Cx.T)\n", + " Cy = 0.5 * (Cy + Cy.T)\n", + " Cx[Cx < 0] = 0\n", + " Cy[Cy < 0] = 0\n", + "\n", + " G = generate_G(Cx, Cy)\n", + " mu = marginals_i[idx_i]\n", + " nu = marginals_j[idx_j]\n", + " T_optimal, model = solve_gromov_wasserstein(mu, nu, G)\n", + " gw_distance[idx_i, idx_j] = gw_distance[idx_j, idx_i] = model.ObjVal" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "res = np.array(\n", + " [\n", + " 0.0118319,\n", + " 0.0277069,\n", + " 0.0341689,\n", + " 0.0159176,\n", + " 0.0249998,\n", + " 0.0219756,\n", + " 0.0121917,\n", + " 0.000739781,\n", + " 0.0339335,\n", + " 0.0243869,\n", + " 0.0163812,\n", + " 0.0257288,\n", + " 0.0215024,\n", + " 0.0010569,\n", + " 0.0251218,\n", + " 0.0175441,\n", + " 0.0263011,\n", + " 0.021326,\n", + " 0.00126462,\n", + " 0.0257148,\n", + " 0.000704816,\n", + " 0.0183677,\n", + " 0.0274071,\n", + " 0.0226183,\n", + " 0.00106426,\n", + " 0.0268244,\n", + " 0.00125761,\n", + " 0.0008492,\n", + " 0.0178109,\n", + " 0.0266613,\n", + " 0.0213839,\n", + " 0.00153841,\n", + " 0.0260791,\n", + " 0.000819374,\n", + " 0.000338383,\n", + " 0.0010721,\n", + " 0.0177845,\n", + " 0.026316,\n", + " 0.0220346,\n", + " 0.00101973,\n", + " 0.0257333,\n", + " 0.000826876,\n", + " 0.000584359,\n", + " 0.000473581,\n", + " 0.000794224,\n", + " ]\n", + ")\n", + "gw_distance = np.zeros((10, 10))\n", + "idx = 0\n", + "for idx_i in range(10):\n", + " for idx_j in range(10):\n", + " if idx_i > idx_j:\n", + " gw_distance[idx_i, idx_j] = gw_distance[idx_j, idx_i] = res[idx]\n", + " idx += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(gw_distance)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gw_distance" + ] } ], "metadata": {