Two-dimensional Parallel Tempering for Constrained Optimization

Corentin Delacour, M Mahmudul Hasan Sajeeb, Joao P. Hespanha, Kerem Y. Camsari
5/24/2025
cs.LGcond-mat.stat-mechmath.OC

No official code found. Best implementation: OPUSLab/2DPT (3 stars, MIT, last commit 2025-08-04).

Abstract

Sampling Boltzmann probability distributions plays a key role in machine learning and optimization, motivating the design of hardware accelerators such as Ising machines. While the Ising model can in principle encode arbitrary optimization problems, practical implementations are often hindered by soft constraints that either slow down mixing when too strong, or fail to enforce feasibility when too weak. We introduce a two-dimensional extension of the powerful parallel tempering algorithm (PT) that addresses this challenge by adding a second dimension of replicas interpolating the penalty strengths. This scheme ensures constraint satisfaction in the final replicas, analogous to low-energy states at low temperature. The resulting two-dimensional parallel tempering algorithm (2D-PT) improves mixing in heavily constrained replicas and eliminates the need to explicitly tune the penalty strength. In a representative example of graph sparsification with copy constraints, 2D-PT achieves near-ideal mixing, with Kullback-Leibler divergence decaying as O(1/t). When applied to sparsified Wishart instances, 2D-PT yields orders of magnitude speedup over conventional PT with the same number of replicas. The method applies broadly to constrained Ising problems and can be deployed on existing Ising machines.

View on arXivView PDF

Code Implementations(1)

OPUSLab/2DPTCommunity73%
MIT

Two-dimensional Parallel Tempering for Constrained Optimization

30MATLABAug 1, 20251 years agoMIT

Cite this paper

@article{delacour2025twodimensional,
  title  = {Two-dimensional Parallel Tempering for Constrained Optimization},
  author = {Corentin Delacour and M Mahmudul Hasan Sajeeb and Joao P. Hespanha and Kerem Y. Camsari},
  year   = {2025},
  eprint = {2506.14781},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2506.14781v2}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2506.14781.svg)](https://codeofpaper.com/paper/2506.14781)

Discussion