Skip to content

Commit 752f4d7

Browse files
Ask Claude's opinion on improvements
1 parent f9a5c73 commit 752f4d7

5 files changed

Lines changed: 25 additions & 7 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
77

88
[project]
99
name = "pyqrackising"
10-
version = "9.11.3"
10+
version = "9.11.4"
1111
requires-python = ">=3.8"
1212
description = "Fast MAXCUT, TSP, and sampling heuristics from near-ideal transverse field Ising model (TFIM)"
1313
readme = {file = "README.txt", content-type = "text/markdown"}

pyqrackising/spin_glass_solver.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def pick_gray_seeds(best_theta, thread_count, gray_seed_multiple, G_m, n, is_spi
118118
best_energies[i] = energies[idx]
119119

120120
if is_spin_glass:
121-
best_energies[0] *= 2.0
121+
best_energies *= 2.0
122122

123123
return best_seeds, best_energies[0]
124124

@@ -352,6 +352,7 @@ def spin_glass_solver(
352352
best_guess = None
353353

354354
bitstring = ""
355+
cut_value = None
355356
if isinstance(best_guess, str):
356357
bitstring = best_guess
357358
elif isinstance(best_guess, int):
@@ -372,7 +373,12 @@ def spin_glass_solver(
372373
)
373374

374375
best_theta = np.array([b == "1" for b in list(bitstring)], dtype=np.bool_)
375-
max_energy = compute_energy(best_theta, G_m, n_qubits) if is_spin_glass else cut_value
376+
if is_spin_glass:
377+
max_energy = compute_energy(best_theta, G_m, n_qubits)
378+
elif cut_value is None:
379+
max_energy = compute_cut(best_theta, G_m, n_qubits)
380+
else:
381+
max_energy = cut_value
376382

377383
if n_qubits < heuristic_threshold:
378384
bitstring, l, r = get_cut(best_theta, nodes, n_qubits)

pyqrackising/spin_glass_solver_sparse.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ def spin_glass_solver_sparse(
419419
best_guess = None
420420

421421
bitstring = ""
422+
cut_value = None
422423
if isinstance(best_guess, str):
423424
bitstring = best_guess
424425
elif isinstance(best_guess, int):
@@ -439,7 +440,12 @@ def spin_glass_solver_sparse(
439440
)
440441

441442
best_theta = np.array([b == "1" for b in list(bitstring)], dtype=np.bool_)
442-
max_energy = compute_energy_sparse(best_theta, G_m.data, G_m.indptr, G_m.indices, n_qubits) if is_spin_glass else cut_value
443+
if is_spin_glass:
444+
max_energy = compute_energy_sparse(best_theta, G_m.data, G_m.indptr, G_m.indices, n_qubits)
445+
elif cut_value is None:
446+
max_energy = compute_cut_sparse(best_theta, G_m.data, G_m.indptr, G_m.indices, n_qubits)
447+
else:
448+
max_energy = cut_value
443449

444450
if n_qubits < heuristic_threshold_sparse:
445451
bitstring, l, r = get_cut(best_theta, nodes, n_qubits)

pyqrackising/spin_glass_solver_streaming.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def pick_gray_seeds(best_theta, thread_count, gray_seed_multiple, G_func, nodes,
109109
best_energies[i] = energies[idx]
110110

111111
if is_spin_glass:
112-
best_energies[0] *= 2.0
112+
best_energies *= 2.0
113113

114114
return best_seeds, best_energies[0]
115115

@@ -180,6 +180,7 @@ def spin_glass_solver_streaming(
180180
best_guess = None
181181

182182
bitstring = ""
183+
cut_value = None
183184
if isinstance(best_guess, str):
184185
bitstring = best_guess
185186
elif isinstance(best_guess, int):
@@ -199,7 +200,12 @@ def spin_glass_solver_streaming(
199200
)
200201

201202
best_theta = np.array([b == "1" for b in list(bitstring)], dtype=np.bool_)
202-
max_energy = compute_energy(best_theta, G_m, n_qubits) if is_spin_glass else cut_value
203+
if is_spin_glass:
204+
max_energy = compute_energy_streaming(best_theta, G_func, nodes, n_qubits)
205+
elif cut_value is None:
206+
max_energy = compute_cut_streaming(best_theta, G_func, nodes, n_qubits)
207+
else:
208+
max_energy = cut_value
203209

204210
if n_qubits < heuristic_threshold:
205211
bitstring, l, r = get_cut(best_theta, nodes, n_qubits)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
setup(
99
name="pyqrackising",
10-
version="9.11.3",
10+
version="9.11.4",
1111
author="Dan Strano",
1212
author_email="stranoj@gmail.com",
1313
description="Fast MAXCUT, TSP, and sampling heuristics from near-ideal transverse field Ising model (TFIM)",

0 commit comments

Comments
 (0)