Skip to main content

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.

ERC logo

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)

Source distribution for fs-palm 0.1.8
File Size Uploaded
fs_palm-0.1.8.tar.gz 181.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fs-palm 0.1.8
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.8 This release

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