Products & servicesTechnologyCompanyInvestor relationsResource libraryNews
Contact us
Resource library
    Resource library home
    Developer resources
    Applications
    Lessons
    Benchmarking
      Dirac-3S Benchmarking
      Max Clique
      Planted
      QPLIB
        Hexaly QPLIB Benchmarking
        Dirac-3S QPLIB Benchmarking
        PGD QPLIB Benchmarking
    Research and publications
    Support

Couldn’t find what you are looking for? Reach out to technical support.

Contact support
Privacy PolicyCookie PolicyTerms of UseForward Looking StatementsAccessibility Statement
Terms and Conditions of SaleEnd User License Agreement

© 2018-2026 Quantum Computing Inc.

Download

Hexaly QPLIB Benchmarking

Import libraries

In [5]:

  • import time
  • import numpy as np
  • import hexaly.optimizer
  • import os

Set up Hexaly solver

In [6]:

  • def hexaly_solver(Q,c,sum_constraint, time_limit= 1800):
  • n = len(np.squeeze(c))
  • def external_xTQx(x):
  • return x @ Q @ x
  • def external_2Qx(x):
  • return 2 * Q @ x
  • with hexaly.optimizer.HexalyOptimizer() as optimizer:
  • model = optimizer.model
  • x = [model.float(0.0,100.0) for _ in range(n)]
  • linear_term = model.sum(c[i]*x[i] for i in range(n))
  • xTQx_func = model.create_double_external_function(external_xTQx, external_2Qx)
  • objective = linear_term + xTQx_func(x)
  • model.constraint(model.sum(x) == sum_constraint)
  • model.minimize(objective)
  • model.close()
  • optimizer.param.time_limit = time_limit
  • print("Starting Hexaly solver...")
  • optimizer.solve()
  • solution = [x[i].value for i in range(n)]
  • objective_val = objective.value
  • print(f"Status: {optimizer.solution.status}")
  • return solution, objective_val

load data file

In [7]:

  • def read_qplib(path):
  • with open(path) as fh:
  • toks = [t for t in (line.split("#")[0].strip() for line in fh) if t]
  • pos = 0
  • def nxt():
  • nonlocal pos
  • val = toks[pos]
  • pos += 1
  • return val
  • def defaulted(length):
  • """Read a `default value` / `number of non-defaults` / entries block."""
  • arr = np.full(length, float(nxt()))
  • for _ in range(int(nxt())):
  • i, v = nxt().split()
  • arr[int(i) - 1] = float(v)
  • return arr
  • name = nxt()
  • probtype = nxt()
  • sense = nxt().lower()
  • n = int(nxt())
  • m = int(nxt())
  • # quadratic terms of the objective (each unordered pair listed once)
  • Q = np.zeros((n, n), dtype=np.float32)
  • for _ in range(int(nxt())):
  • i, j, v = nxt().split()
  • i, j, v = int(i) - 1, int(j) - 1, float(v)
  • if i == j:
  • Q[i, i] = v
  • else:
  • Q[i, j] = Q[j, i] = 0.5 * v # split the pair coefficient over both triangles
  • b = defaulted(n) # linear terms of the objective
  • obj_const = float(nxt())
  • # linear terms of the constraints
  • A = np.zeros((m, n))
  • for _ in range(int(nxt())):
  • k, i, v = nxt().split()
  • A[int(k) - 1, int(i) - 1] = float(v)
  • inf = float(nxt())
  • lhs, rhs = defaulted(m), defaulted(m)
  • lb, ub = defaulted(n), defaulted(n)
  • return dict(name=name, type=probtype, sense=sense, n=n, m=m,
  • Q=Q, b=b, obj_const=obj_const,
  • A=A, lhs=lhs, rhs=rhs, lb=lb, ub=ub, inf=inf)

Solve with hexaly

In [8]:

  • # Instance details
  • inst_dir = "Instances/"
  • inst_name = "QPLIB_2761.qplib"
  • inst = read_qplib(os.path.join(inst_dir, inst_name))
  • n, Q, b = inst["n"], inst["Q"], inst["b"]
  • M = 0.5 * Q
  • c = b.copy()
  • sum_constraint = float(inst["rhs"][0]) # sum_i x_i = 1

In [9]:

  • # solver parameters
  • time_limit = 300

In [10]:

  • # solve with Hexaly
  • hexaly_start = time.time()
  • hex_sol_list, hex_obj = hexaly_solver(Q=M,c=c,sum_constraint=sum_constraint,time_limit=time_limit)
  • hexaly_end = time.time()
  • hex_sol = np.array(hex_sol_list)
  • hex_indices = np.where(hex_sol>1e-6)[0]
  • print(f"Eenergy value obtained by Hexaly:{hex_obj}")

Out [ ]:

Preprocess model 100%Starting Hexaly solver...
Push initial solution 100%
Model:  expressions = 1009, decisions = 500, constraints = 1, objectives = 1
Param:  time limit = 300 sec, no iteration limit

[objective direction ]:     minimize

[  0 sec,       0 itr]: No feasible solution found (infeas = 1)
[  1 sec,     226 itr]:     0.481681
[  2 sec,    1417 itr]:     0.415455
[  3 sec,    1417 itr]:     0.415455
[  4 sec,    2207 itr]:    0.0669736
[  5 sec,    2713 itr]:    0.0669736
[  6 sec,    3123 itr]:   0.00109363
[  7 sec,    3513 itr]:   0.00109363
[  8 sec,    4202 itr]:   0.00109363
[  9 sec,    4202 itr]:   0.00109363
[ 10 sec,    4521 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 11 sec,    5075 itr]:   0.00109363
[ 12 sec,    5357 itr]:   0.00109363
[ 13 sec,    5357 itr]:   0.00109363
[ 14 sec,    5608 itr]:   0.00109363
[ 15 sec,    5866 itr]:   0.00109363
[ 16 sec,    6135 itr]:   0.00109363
[ 17 sec,    6641 itr]:   0.00109363
[ 18 sec,    6911 itr]:   0.00109363
[ 19 sec,    6911 itr]:   0.00109363
[ 20 sec,    7476 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 21 sec,    7720 itr]:   0.00109363
[ 22 sec,    7993 itr]:   0.00109363
[ 23 sec,    7993 itr]:   0.00109363
[ 24 sec,    8506 itr]:   0.00109363
[ 25 sec,    8774 itr]:   0.00109363
[ 26 sec,    9058 itr]:   0.00109363
[ 27 sec,    9058 itr]:   0.00109363
[ 28 sec,    9331 itr]:   0.00109363
[ 29 sec,    9881 itr]:   0.00109363
[ 30 sec,    9881 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 31 sec,   10457 itr]:   0.00109363
[ 32 sec,   10801 itr]:   0.00109363
[ 33 sec,   11175 itr]:   0.00109363
[ 34 sec,   11590 itr]:   0.00109363
[ 35 sec,   11983 itr]:   0.00109363
[ 36 sec,   12306 itr]:   0.00109363
[ 37 sec,   12690 itr]:   0.00109363
[ 38 sec,   12690 itr]:   0.00109363
[ 39 sec,   13509 itr]:   0.00109363
[ 40 sec,   13509 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 41 sec,   14379 itr]:   0.00109363
[ 42 sec,   14904 itr]:   0.00109363
[ 43 sec,   14904 itr]:   0.00109363
[ 44 sec,   16026 itr]:   0.00109363
[ 45 sec,   16026 itr]:   0.00109363
[ 46 sec,   16584 itr]:   0.00109363
[ 47 sec,   17206 itr]:   0.00109363
[ 48 sec,   18305 itr]:   0.00109363
[ 49 sec,   18305 itr]:   0.00109363
[ 50 sec,   19054 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 51 sec,   19663 itr]:   0.00109363
[ 52 sec,   21035 itr]:   0.00109363
[ 53 sec,   21035 itr]:   0.00109363
[ 54 sec,   22329 itr]:   0.00109363
[ 55 sec,   22920 itr]:   0.00109363
[ 56 sec,   22920 itr]:   0.00109363
[ 57 sec,   24618 itr]:   0.00109363
[ 58 sec,   24618 itr]:   0.00109363
[ 59 sec,   25489 itr]:   0.00109363
[ 60 sec,   26174 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 61 sec,   26985 itr]:   0.00109363
[ 62 sec,   28708 itr]:   0.00109363
[ 63 sec,   29571 itr]:   0.00109363
[ 64 sec,   30660 itr]:   0.00109363
[ 65 sec,   30660 itr]:   0.00109363
[ 66 sec,   33161 itr]:   0.00109363
[ 67 sec,   34620 itr]:   0.00109363
[ 68 sec,   35427 itr]:   0.00109363
[ 69 sec,   36331 itr]:   0.00109363
[ 70 sec,   36331 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 71 sec,   37300 itr]:   0.00109363
[ 72 sec,   39734 itr]:   0.00109363
[ 73 sec,   39734 itr]:   0.00109363
[ 74 sec,   42357 itr]:   0.00109363
[ 75 sec,   43777 itr]:   0.00109363
[ 76 sec,   43777 itr]:   0.00109363
[ 77 sec,   46432 itr]:   0.00109363
[ 78 sec,   48014 itr]:   0.00109363
[ 79 sec,   49675 itr]:   0.00109363
[ 80 sec,   50939 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 81 sec,   52229 itr]:   0.00109363
[ 82 sec,   53510 itr]:   0.00109363
[ 83 sec,   54838 itr]:   0.00109363
[ 84 sec,   56219 itr]:   0.00109363
[ 85 sec,   57598 itr]:   0.00109363
[ 86 sec,   59114 itr]:   0.00109363
[ 87 sec,   60794 itr]:   0.00109363
[ 88 sec,   60794 itr]:   0.00109363
[ 89 sec,   62586 itr]:   0.00109363
[ 90 sec,   65484 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[ 91 sec,   66984 itr]:   0.00109363
[ 92 sec,   68386 itr]:   0.00109363
[ 93 sec,   68386 itr]:   0.00109363
[ 94 sec,   71087 itr]:   0.00109363
[ 95 sec,   72642 itr]:   0.00109363
[ 96 sec,   74305 itr]:   0.00109363
[ 97 sec,   75964 itr]:   0.00109363
[ 98 sec,   77668 itr]:   0.00109363
[ 99 sec,   77668 itr]:   0.00109363
[100 sec,   81322 itr]:   0.00109363
[ optimality gap     ]:      100.00%
[101 sec,   82982 itr]:   0.00109363
[102 sec,   82982 itr]:   0.00109363
[103 sec,   86483 itr]:   0.00109363
[104 sec,   86483 itr]:   0.00109363
[105 sec,   89652 itr]:   0.00109363
[106 sec,   89652 itr]:   0.00109363
[107 sec,   91377 itr]:   0.00109363
[108 sec,   93075 itr]:   0.00109363
[109 sec,   95746 itr]:   0.00108351
[110 sec,   95746 itr]:   0.00108351
[ optimality gap     ]:      100.00%
[111 sec,   99102 itr]:   0.00108265
[112 sec,   99102 itr]:   0.00108265
[113 sec,  102479 itr]:   0.00108171
[114 sec,  102479 itr]:   0.00108171
[115 sec,  105824 itr]:   0.00108171
[116 sec,  107631 itr]:   0.00108171
[117 sec,  109239 itr]:   0.00107665
[118 sec,  110889 itr]:   0.00107386
[119 sec,  112638 itr]:   0.00107386
[120 sec,  114778 itr]:   0.00107386
[ optimality gap     ]:      100.00%
[121 sec,  114778 itr]:   0.00107386
[122 sec,  116787 itr]:   0.00107386
[123 sec,  120536 itr]:   0.00107386
[124 sec,  122390 itr]:   0.00107386
[125 sec,  122390 itr]:   0.00107386
[126 sec,  123826 itr]:   0.00107386
[127 sec,  125606 itr]:   0.00107386
[128 sec,  128956 itr]:   0.00107385
[129 sec,  130493 itr]:   0.00107385
[130 sec,  132310 itr]:   0.00107373
[ optimality gap     ]:      100.00%
[131 sec,  133881 itr]:   0.00107373
[132 sec,  133881 itr]:   0.00107373
[133 sec,  137501 itr]:   0.00107373
[134 sec,  137501 itr]:   0.00107373
[135 sec,  139124 itr]:   0.00107235
[136 sec,  142470 itr]:    0.0010687
[137 sec,  144210 itr]:    0.0010658
[138 sec,  145961 itr]:   0.00106533
[139 sec,  147824 itr]:   0.00106481
[140 sec,  149423 itr]:   0.00106481
[ optimality gap     ]:      100.00%
[141 sec,  149423 itr]:   0.00106481
[142 sec,  152758 itr]:   0.00106481
[143 sec,  154299 itr]:   0.00106481
[144 sec,  155888 itr]:   0.00106481
[145 sec,  157490 itr]:   0.00106481
[146 sec,  157490 itr]:   0.00106481
[147 sec,  158915 itr]:   0.00106481
[148 sec,  161981 itr]:   0.00106481
[149 sec,  161981 itr]:   0.00106481
[150 sec,  164929 itr]:   0.00106118
[ optimality gap     ]:      100.00%
[151 sec,  166352 itr]:   0.00106118
[152 sec,  167652 itr]:   0.00106118
[153 sec,  169150 itr]:   0.00106118
[154 sec,  170646 itr]:   0.00106118
[155 sec,  170646 itr]:   0.00106118
[156 sec,  172551 itr]:   0.00105954
[157 sec,  176568 itr]:   0.00105954
[158 sec,  178443 itr]:   0.00105954
[159 sec,  178443 itr]:   0.00105954
[160 sec,  182133 itr]:   0.00105954
[ optimality gap     ]:      100.00%
[161 sec,  182133 itr]:   0.00105954
[162 sec,  184086 itr]:   0.00105954
[163 sec,  187527 itr]:   0.00105954
[164 sec,  189551 itr]:   0.00105954
[165 sec,  191438 itr]:   0.00105901
[166 sec,  193582 itr]:   0.00105901
[167 sec,  195791 itr]:   0.00105901
[168 sec,  195791 itr]:   0.00105901
[169 sec,  197645 itr]:   0.00105901
[170 sec,  199747 itr]:   0.00105901
[ optimality gap     ]:      100.00%
[171 sec,  201583 itr]:   0.00105901
[172 sec,  205467 itr]:   0.00105759
[173 sec,  205467 itr]:   0.00105719
[174 sec,  207637 itr]:   0.00105719
[175 sec,  209529 itr]:   0.00105719
[176 sec,  213351 itr]:   0.00105719
[177 sec,  213351 itr]:   0.00105719
[178 sec,  217063 itr]:   0.00105675
[179 sec,  219040 itr]:   0.00105675
[180 sec,  219040 itr]:   0.00105675
[ optimality gap     ]:      100.00%
[181 sec,  223027 itr]:   0.00105675
[182 sec,  224610 itr]:   0.00105675
[183 sec,  224610 itr]:   0.00105675
[184 sec,  227668 itr]:   0.00105675
[185 sec,  227668 itr]:   0.00105675
[186 sec,  230642 itr]:   0.00105675
[187 sec,  232385 itr]:   0.00105675
[188 sec,  233903 itr]:   0.00105675
[189 sec,  235543 itr]:   0.00105576
[190 sec,  237198 itr]:   0.00105576
[ optimality gap     ]:      100.00%
[191 sec,  238802 itr]:   0.00105576
[192 sec,  240200 itr]:   0.00105576
[193 sec,  241847 itr]:   0.00105576
[194 sec,  243559 itr]:   0.00105576
[195 sec,  245162 itr]:   0.00105576
[196 sec,  245162 itr]:   0.00105576
[197 sec,  246973 itr]:   0.00105576
[198 sec,  250640 itr]:   0.00105576
[199 sec,  250640 itr]:   0.00105576
[200 sec,  254464 itr]:   0.00105576
[ optimality gap     ]:      100.00%
[201 sec,  256204 itr]:   0.00105576
[202 sec,  256204 itr]:   0.00105576
[203 sec,  258275 itr]:   0.00105576
[204 sec,  262095 itr]:   0.00105576
[205 sec,  262095 itr]:   0.00105576
[206 sec,  263891 itr]:   0.00105576
[207 sec,  267570 itr]:   0.00105576
[208 sec,  269614 itr]:   0.00105576
[209 sec,  271398 itr]:   0.00105576
[210 sec,  271398 itr]:   0.00105576
[ optimality gap     ]:      100.00%
[211 sec,  273406 itr]:   0.00105576
[212 sec,  277055 itr]:   0.00105576
[213 sec,  279180 itr]:   0.00105576
[214 sec,  279180 itr]:   0.00105576
[215 sec,  282811 itr]:   0.00105576
[216 sec,  282811 itr]:   0.00105576
[217 sec,  287029 itr]:   0.00105545
[218 sec,  289131 itr]:   0.00105545
[219 sec,  289131 itr]:   0.00105545
[220 sec,  293110 itr]:   0.00105468
[ optimality gap     ]:      100.00%
[221 sec,  293110 itr]:   0.00105468
[222 sec,  296688 itr]:    0.0010539
[223 sec,  298725 itr]:   0.00105371
[224 sec,  300292 itr]:   0.00105371
[225 sec,  300292 itr]:   0.00105371
[226 sec,  302077 itr]:   0.00105371
[227 sec,  306039 itr]:   0.00105226
[228 sec,  306039 itr]:   0.00105226
[229 sec,  307451 itr]:   0.00105226
[230 sec,  308052 itr]:   0.00105226
[ optimality gap     ]:      100.00%
[231 sec,  308623 itr]:   0.00105226
[232 sec,  308623 itr]:   0.00105226
[233 sec,  310032 itr]:   0.00105226
[234 sec,  310032 itr]:   0.00105226
[235 sec,  310945 itr]:   0.00105226
[236 sec,  312453 itr]:   0.00105226
[237 sec,  312453 itr]:   0.00105226
[238 sec,  313325 itr]:   0.00105226
[239 sec,  314915 itr]:   0.00105207
[240 sec,  314915 itr]:   0.00105207
[ optimality gap     ]:      100.00%
[241 sec,  316404 itr]:   0.00105207
[242 sec,  316404 itr]:   0.00105207
[243 sec,  317962 itr]:   0.00105207
[244 sec,  318588 itr]:   0.00105194
[245 sec,  318588 itr]:   0.00105194
[246 sec,  319434 itr]:   0.00105194
[247 sec,  321013 itr]:   0.00105194
[248 sec,  321664 itr]:   0.00105194
[249 sec,  321664 itr]:   0.00105194
[250 sec,  323117 itr]:   0.00105194
[ optimality gap     ]:      100.00%
[251 sec,  323117 itr]:   0.00105194
[252 sec,  323873 itr]:   0.00105194
[253 sec,  324492 itr]:   0.00105194
[254 sec,  326056 itr]:   0.00105194
[255 sec,  326056 itr]:   0.00105194
[256 sec,  327720 itr]:   0.00105194
[257 sec,  327720 itr]:   0.00105194
[258 sec,  329303 itr]:   0.00105194
[259 sec,  329303 itr]:   0.00105194
[260 sec,  330739 itr]:   0.00105194
[ optimality gap     ]:      100.00%
[261 sec,  330739 itr]:   0.00105194
[262 sec,  331689 itr]:   0.00105194
[263 sec,  332457 itr]:   0.00105194
[264 sec,  333244 itr]:   0.00105194
[265 sec,  333933 itr]:   0.00105183
[266 sec,  335300 itr]:   0.00105168
[267 sec,  335300 itr]:   0.00105168
[268 sec,  335975 itr]:   0.00105168
[269 sec,  336859 itr]:   0.00105168
[270 sec,  337513 itr]:   0.00105168
[ optimality gap     ]:      100.00%
[271 sec,  339052 itr]:   0.00105168
[272 sec,  339788 itr]:   0.00105168
[273 sec,  339788 itr]:   0.00105168
[274 sec,  341046 itr]:   0.00105168
[275 sec,  341046 itr]:   0.00105168
[276 sec,  342387 itr]:   0.00105168
[277 sec,  342387 itr]:   0.00105168
[278 sec,  343024 itr]:   0.00105155
[279 sec,  343786 itr]:   0.00105155
[280 sec,  345023 itr]:   0.00105135
[ optimality gap     ]:      100.00%
[281 sec,  345698 itr]:   0.00105135
[282 sec,  345698 itr]:   0.00105135
[283 sec,  346353 itr]:   0.00105135
[284 sec,  347952 itr]:   0.00105076
[285 sec,  348619 itr]:   0.00105066
[286 sec,  348619 itr]:   0.00105066
[287 sec,  349403 itr]:   0.00105066
[288 sec,  350132 itr]:   0.00105066
[289 sec,  350790 itr]:   0.00105066
[290 sec,  352171 itr]:   0.00105066
[ optimality gap     ]:      100.00%
[291 sec,  352856 itr]:   0.00105066
[292 sec,  352856 itr]:   0.00105066
[293 sec,  354243 itr]:   0.00104905
[294 sec,  355071 itr]:   0.00104905
[295 sec,  355809 itr]:   0.00104905
[296 sec,  355809 itr]:   0.00104905
[297 sec,  357257 itr]:   0.00104905
[298 sec,  357927 itr]:   0.00104905
[299 sec,  358644 itr]:   0.00104905
[300 sec,  359308 itr]:   0.00104905
[ optimality gap     ]:      100.00%
[300 sec,  359308 itr]:   0.00104905
[ optimality gap     ]:      100.00%

359308 iterations performed in 300 seconds

Feasible solution: 
  obj    =   0.00104905
  gap    =      100.00%
  bounds =         -inf
Status: HxSolutionStatus.FEASIBLE
Eenergy value obtained by Hexaly:0.001049053329335798
Next page

Content

  • Hexaly QPLIB Benchmarking
  • Import libraries
  • Set up Hexaly solver
  • load data file
  • Solve with hexaly