You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Population Annealing baseline + rebrand to PQQA
- Add qqa.population_annealing (Hukushima-Iba/Machta), with systematic and
multinomial resampling, log-stable Boltzmann reweighting, ESS tracking,
and the same SAResult-shaped contract as qqa.simulated_annealing.
- Refactor qqa.sa to share single-sweep MCMC primitives (QUBO Glauber and
generic single-spin MH) with the new PA backend, eliminating the risk of
ΔE-formula drift between SA and PA.
- Compare page: extend the shootout into a 3-way race PQQA vs SA vs PA;
speedup vs the stronger of the two baselines.
- README: rename top-line title to "Parallel Quasi-Quantum Annealer (PQQA)"
and reposition the project as an OSS toolkit unifying continuous-relaxation
CO methods (PQQA / CRA-PI-GNN / CPRA) plus matched MCMC baselines.
- Tests: 8 new pytest cases (tests/test_pa.py), updated GUI AppTest for
the renamed shootout mode, public-API regression covers PA exports.
- Verified: ruff clean, 206 passed / 2 skipped, verify_pa.py 7/7,
verify_sa_compare.py 7/7.
|**Solve**| Run PQQA / CRA-PI-GNN / CPRA with live progress, polish (1-flip local search) and warm-start toggles, and a per-problem solution viewer (TSP tour, NQueens board, highlighted IS, colouring, …). |
53
59
|**Visualize**| 10 tabs of post-hoc plots — **solution-space PCA** of the final parallel population (3D, replicas coloured by loss, global best highlighted), **loss spectrogram** over time, diversity, replica fate, schedule, ridgeline. |
54
-
|**Compare**| Hyper-parameter grid sweep with parallel-coordinates view, **and** a head-to-head **PQQA vs. SA shootout** that reports the wall-clock speed-up at matched compute budget. |
60
+
|**Compare**| Hyper-parameter grid sweep with parallel-coordinates view, **and** a head-to-head **PQQA vs. SA vs. Population-Annealing shootout** that reports the wall-clock speed-up at matched compute budget. |
55
61
56
62
### Or run it locally — same UI, your hardware
57
63
@@ -92,12 +98,20 @@ CUDA is picked up automatically when available.
92
98
diverse-solution framework (TMLR 2025) all share `AnnealResult`,
93
99
`score_summary`, the same problem builders and the same CLI flags — A/B
94
100
comparing methods is one `--backend` switch away.
95
-
4.**A polished Streamlit dashboard** (light / dark, live progress, parallel
101
+
4.**GPU-parallel MCMC baselines** for honest head-to-head comparisons —
102
+
classical **Simulated Annealing** (`qqa.simulated_annealing`) with a
103
+
QUBO Glauber fast path, and **Population Annealing**
104
+
(`qqa.population_annealing`, Hukushima-Iba / Machta) with systematic or
105
+
multinomial resampling between temperature steps. Both expose the same
106
+
`best_sol` / `best_obj` / `history` surface as `qqa.anneal`, so the
107
+
Streamlit *Compare* page can race PQQA against either at a matched
108
+
compute budget.
109
+
5.**A polished Streamlit dashboard** (light / dark, live progress, parallel
96
110
population view, per-problem solution viz, hyper-parameter sweeps) and a
97
111
`qqa`**CLI** (`solve / bench / gui / version`) for reproducible
98
112
experiments. A hosted instance lives at
99
113
<https://parallelquasiquantum4co.streamlit.app/>.
100
-
5.**MkDocs + Material reference docs** with auto-generated API pages, a
114
+
6.**MkDocs + Material reference docs** with auto-generated API pages, a
101
115
runnable `examples/` notebook gallery (Open-in-Colab badges) and a
102
116
`scripts/verify_all_problems.py` correctness sweep that benchmarks every
103
117
problem against ground truth or a strong baseline (29 / 29 instances pass
0 commit comments