Skip to content

Add closest point projection based on Projected Gradient with a Simplex projection algorithm#199

Merged
jorgensd merged 35 commits intomainfrom
dokken/closest_point_projection
Mar 24, 2026
Merged

Add closest point projection based on Projected Gradient with a Simplex projection algorithm#199
jorgensd merged 35 commits intomainfrom
dokken/closest_point_projection

Conversation

@jorgensd
Copy link
Copy Markdown
Member

@jorgensd jorgensd commented Mar 20, 2026

After discussing with @thomas-surowiec we decided that the fastest approach is probably the projected gradient method.

Using the algorithms from the following papers:
Simplex projection:

  • Algorithm 1 in Laurent Condat. Fast Projection onto the Simplex and the l1 Ball. (2016) DOI: 10.1007/s10107-015-0946-6, which is from:
    • Held, M., Wolfe, P., Crowder, H.: Validation of subgradient optimization (1974) DOI: 10.1007/BF01580223

Using the Goldstein-Levitin-Polyak gradient projection method, with linesearch method from:

  • Dimitri P. Bertsekas, "On the Goldstein-Levitin-Polyak gradient projection method" (1976) DOI: 10.1109/TAC.1976.1101194

Implements reference solver using scipy, a python implementation for debugging, and a highly optimized C++ version that allows for threading.

@jorgensd jorgensd requested a review from finsberg March 20, 2026 15:46
@jorgensd jorgensd merged commit 1b3eaec into main Mar 24, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants