Skip to main content

pbalm

Python implementation of PBALM.

pbalm solves optimization problems of the form:

$$ \begin{aligned} \min_{x} \quad & f_1(x) + f_2(x) \ \text{s.t.} \quad & g(x) \leq 0 \ & h(x) = 0 \end{aligned} $$

where $f_1$ is smooth (possibly nonconvex), $f_2$ is possibly nonsmooth but prox-friendly, and $g$, $h$ define smooth inequality and equality constraints, respectively.

Quick example:

python3 -m pip install pbalm
import jax.numpy as jnp
import pbalm

def f1(x):
    return jnp.sum(x**2)

# L1 regularization (nonsmooth)
lbda = 0.1
f2 = pbalm.L1Norm(lbda)

# inequality constraint g_j(x) <= 0; j=1
def g_1(x):
    return x[0] - 0.8

# equality constraints h_i(x) = 0; i=1,2
def h_1(x):
    return x[0] + x[1] - 1.0

def h_2(x):
    return x[1] * x[2] - 2.0

x0 = jnp.array([1.0, 1.0, 2.0])

# create problem and solve
problem = pbalm.Problem(f1=f1, f2=f2, g=[g_1], h=[h_1, h_2])
result = pbalm.solve(problem, x0=x0, tol=1e-6)

print(f"Solution: {result.x}")

More examples in /examples/ directory.

References

@article{adeoye2025pbalm,
  title={A proximal augmented Lagrangian method for nonconvex optimization with equality and inequality constraints},
  author={Adeoye, Adeyemi D. and Latafat, Puya and Bemporad, Alberto},
  journal={arXiv preprint arXiv:2509.02894},
  year={2025}
}

Acknowledgments

This work was funded by the European Union (ERC Advanced Research Grant COMPACT, No. 101141351). Views and opinions expressed are however those of the authors only and do not necessarily reflect those of the European Union or the European Research Council. Neither the European Union nor the granting authority can be held responsible for them.

ERC logo

Default inner solver: PANOC; also calls prox functions from: alpaqa.

Metadata

Release files for pbalm 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pbalm 0.1.7
File Size Uploaded
pbalm-0.1.7.tar.gz 98.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pbalm 0.1.7
File Interpreter ABI Platform
pbalm-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 191.3 kB

Release files / pbalm-0.1.7.tar.gz

Download URL pbalm-0.1.7.tar.gz
Size 98.3 kB
Tags Source
SHA-256 checksum
How to use checksums
da0469c6b6f84d58da35971a53a389cf8bc0011ee888abf3666c558233dd57ed
BLAKE2b-256 checksum
How to use checksums
a1f3a28931913026aa6582725e001b7e5b81121eb20c3a004c2c730cc0cd1e03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pbalm-0.1.7-py3-none-any.whl

Download URL pbalm-0.1.7-py3-none-any.whl
Size 93.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f1603d66efa17e127629fe043401c1ef3fdd78abaf0f65e75ec28bb4aba302a3
BLAKE2b-256 checksum
How to use checksums
b80350af5a543f921b4726c8bd7f7565acbed3459cfd9ed7c753013f50b0546b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page