fs-palm
Python implementation of FS-P-ALM.
fs-palm 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 fs-palm
import jax.numpy as jnp
import fs_palm
def f1(x):
return jnp.sum(x ** 2)
# L1 regularization (nonsmooth)
lbda = 0.1
f2 = fs_palm.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([0.0, 0.0, 0.0])
# create problem and solve
problem = fs_palm.Problem(f1=f1, f2=f2, g=[g_1], h=[h_1, h_2])
result = fs_palm.solve(problem, x0=x0, tol=1e-3)
print(f"Solution: {result.x}")
More examples in /examples/ directory.
References
@article{ncvxproxALM2025,
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.
Default inner solver: PANOC; also calls prox functions from: alpaqa.
Metadata
Release files for fs-palm 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fs_palm-0.1.8.tar.gz | 181.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fs_palm-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 309.4 kB
Release files / fs_palm-0.1.8.tar.gz
| Download URL | fs_palm-0.1.8.tar.gz |
|---|---|
| Size | 181.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b1c944cc80581ea8a56d7c35bec8eaa1548527013635b792c30049d6856b12b3
|
|
BLAKE2b-256 checksum How to use checksums |
a3b6342996ad6f7d7673bd05fe14ae4255fb693cf31343a4bae73f5815053b62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / fs_palm-0.1.8-py3-none-any.whl
| Download URL | fs_palm-0.1.8-py3-none-any.whl |
|---|---|
| Size | 128.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
83370c418a0a1e3bf468386ad424f12bc4cd921a18dc3d0e4933af5455c3a501
|
|
BLAKE2b-256 checksum How to use checksums |
241171a09c8b31538369f38c7ccb9f129d8989be4216752f707489d87a176fad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|