Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
7fdca27
Template and Github Action for JOSS paper
cvanaret Feb 12, 2026
69be51a
Forgot paper.bib
cvanaret Feb 12, 2026
f378295
Commit PDF to repo in PR
cvanaret Feb 12, 2026
1e8cec3
Fix for EndBug action
cvanaret Feb 12, 2026
f247d58
(auto) paper draft
cvanaret Feb 12, 2026
6c3e0bd
Update paper.md
amontoison Feb 13, 2026
8f27123
(auto) paper draft
amontoison Feb 13, 2026
658989f
Update the summary
amontoison Feb 13, 2026
e8b2417
(auto) paper draft
amontoison Feb 13, 2026
3e4bd7b
Some progress in the paper
cvanaret Feb 17, 2026
87deab1
(auto) paper draft
cvanaret Feb 17, 2026
885de99
Continue the JOSS paper
amontoison Feb 18, 2026
237cef2
(auto) paper draft
amontoison Feb 18, 2026
bc5546f
[JOSS] Add a section on interfaces
amontoison Feb 18, 2026
7a8fe7f
(auto) paper draft
amontoison Feb 18, 2026
4121b8a
Fix indentation
amontoison Feb 18, 2026
17f4c42
(auto) paper draft
amontoison Feb 18, 2026
f9590d6
Remove a few sentences
amontoison Feb 18, 2026
3cc1016
(auto) paper draft
amontoison Feb 18, 2026
a580981
Replaced wheel.png with wheel.pdf
cvanaret Feb 18, 2026
9b7a99d
A few changes
cvanaret Feb 18, 2026
c0e0d59
(auto) paper draft
cvanaret Feb 18, 2026
1921816
Minor change
cvanaret Feb 18, 2026
248f9e4
Added UML diagram
cvanaret Feb 18, 2026
11db200
Minor change to retrigger CI
cvanaret Feb 18, 2026
4449a25
(auto) paper draft
cvanaret Feb 18, 2026
9b3dfed
Fixed label
cvanaret Feb 18, 2026
e988314
Moved images to /figures
cvanaret Feb 18, 2026
07c21e5
(auto) paper draft
cvanaret Feb 18, 2026
26b52f2
Fix
cvanaret Feb 18, 2026
65f3fa0
(auto) paper draft
cvanaret Feb 18, 2026
7d36e4d
Added some info in Software design section
cvanaret Feb 19, 2026
943af2c
(auto) paper draft
cvanaret Feb 19, 2026
2470d8f
Moved UML diagram to end of section
cvanaret Feb 19, 2026
9dcd37a
Added Research impact (required section)
cvanaret Feb 19, 2026
a7205cd
(auto) paper draft
cvanaret Feb 19, 2026
00465d0
Update paper.md
amontoison Feb 19, 2026
4727a68
(auto) paper draft
amontoison Feb 19, 2026
0652d6b
Added Acknowledgments
cvanaret Feb 19, 2026
aabaaee
Added a few sentences on presets and on the current performance
cvanaret Feb 19, 2026
f2800ba
(auto) paper draft
cvanaret Feb 19, 2026
1690589
Better splitting of the paragraphs in Software design
cvanaret Feb 19, 2026
325c0ba
(auto) paper draft
cvanaret Feb 19, 2026
076b414
Another pass on the paper
amontoison Feb 20, 2026
b814150
(auto) paper draft
amontoison Feb 20, 2026
06ffe12
Add a sentence about future integrations
amontoison Feb 20, 2026
7b0a2cf
(auto) paper draft
amontoison Feb 20, 2026
3315002
Added most DOIs
cvanaret Feb 20, 2026
06d6ea2
(auto) paper draft
cvanaret Feb 20, 2026
80d6477
Fixed underscores in DOIs
cvanaret Feb 20, 2026
99b2c64
Fixed underscores. Again
cvanaret Feb 20, 2026
7437914
(auto) paper draft
cvanaret Feb 20, 2026
a18eb34
Last few changes before submission
cvanaret Feb 20, 2026
05be34f
(auto) paper draft
cvanaret Feb 20, 2026
c98709d
Removed prefix in DOIs
cvanaret Feb 20, 2026
05b4160
(auto) paper draft
cvanaret Feb 20, 2026
b0f4d3a
Update acknowledgments
amontoison Feb 20, 2026
15a1741
(auto) paper draft
amontoison Feb 20, 2026
beec430
Moved some of the text to State of the field + added two references t…
cvanaret Feb 20, 2026
6d53656
(auto) paper draft
cvanaret Feb 20, 2026
603739f
Fixed multiple citations
cvanaret Feb 20, 2026
449db0f
(auto) paper draft
cvanaret Feb 20, 2026
1709505
Last fix
cvanaret Feb 20, 2026
10f14cc
(auto) paper draft
cvanaret Feb 20, 2026
f769b22
Improve the sections statement of need and state of the field
amontoison Feb 21, 2026
5f44246
(auto) paper draft
amontoison Feb 21, 2026
76c48e5
Moved some stuff around and reformulated some other stuff
cvanaret Feb 21, 2026
51ce2a1
(auto) paper draft
cvanaret Feb 21, 2026
5f5f6cb
Update paper.md
amontoison Feb 23, 2026
cf9b487
(auto) paper draft
amontoison Feb 23, 2026
1e395db
Add the corresponding author
amontoison Feb 23, 2026
3830457
(auto) paper draft
amontoison Feb 23, 2026
6767a8e
Added quasi-Newton Hessians to UML diagram and wheel
cvanaret Apr 13, 2026
3519499
Updated citation of Uno paper + a few things in the paper
cvanaret Apr 13, 2026
67b886c
(auto) paper draft
cvanaret Apr 13, 2026
5239132
Updated UML
cvanaret Apr 21, 2026
bdca253
Added changes discussed with Alexis
cvanaret Apr 21, 2026
53269df
(auto) paper draft
cvanaret Apr 21, 2026
b875379
Do a pass on the latest modifications of Charlie
amontoison Apr 22, 2026
80400cb
(auto) paper draft
amontoison Apr 22, 2026
9c8f7f2
Updated interfaces and users in paper
cvanaret Jun 8, 2026
931079e
(auto) paper draft
cvanaret Jun 8, 2026
df2615d
Mentioned CasADi, Krylov.jl and updated MPC citation
cvanaret Jun 12, 2026
ba99079
(auto) paper draft
cvanaret Jun 12, 2026
a2c206c
(auto) paper draft
github-actions[bot] Jun 12, 2026
d273a70
(auto) paper draft
github-actions[bot] Jun 12, 2026
0aba3fa
Added CasADi reference
cvanaret Jun 12, 2026
85a022c
(auto) paper draft
cvanaret Jun 12, 2026
c33a8a3
(auto) paper draft
github-actions[bot] Jun 12, 2026
63043c5
(auto) paper draft
github-actions[bot] Jun 12, 2026
e0e715a
(auto) paper draft
github-actions[bot] Jun 12, 2026
681a569
Improved Research impact statement
cvanaret Jun 12, 2026
fdc4f42
(auto) paper draft
cvanaret Jun 12, 2026
5d9de23
Fixed citations
cvanaret Jun 12, 2026
72e24f1
(auto) paper draft
cvanaret Jun 12, 2026
312f218
Skip CI in the draft JOSS paper workflow
cvanaret Jun 12, 2026
46a6846
(auto) paper draft [skip ci]
cvanaret Jun 12, 2026
60b5c1a
Fixed citations
cvanaret Jun 12, 2026
6136fac
(auto) paper draft [skip ci]
cvanaret Jun 12, 2026
d11071f
Fixed bibtex and added sizes of CUTE instances
cvanaret Jun 13, 2026
9718f3b
Changes wrt second review
cvanaret Jun 19, 2026
92af0cc
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
30c1b7c
Fixes
cvanaret Jun 19, 2026
4e7caf0
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
2683d48
Fixed layout
cvanaret Jun 19, 2026
3252cb0
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
77c9154
Fixed table layout
cvanaret Jun 19, 2026
e10220d
Updated date
cvanaret Jun 19, 2026
cd7e246
Improved positioning of figures
cvanaret Jun 19, 2026
8aa0bca
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
9f7dc18
Improved layout
cvanaret Jun 19, 2026
2c954ca
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
144d18b
Improved layout
cvanaret Jun 19, 2026
3a7c6e5
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
f5f789c
Improved layout
cvanaret Jun 19, 2026
3c88d80
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
dd826bc
Alexis' comments + improved the wheel
cvanaret Jun 19, 2026
c36ec29
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
e48b9cf
Fix
cvanaret Jun 19, 2026
96b36a3
(auto) paper draft [skip ci]
cvanaret Jun 19, 2026
e923acb
Apply suggestion from @amontoison
amontoison Jun 20, 2026
6c06ff9
(auto) paper draft [skip ci]
amontoison Jun 20, 2026
3111756
Add a footnote about my new position
amontoison Jun 21, 2026
35c56ef
(auto) paper draft [skip ci]
amontoison Jun 21, 2026
6cc8034
Added more references
cvanaret Jun 23, 2026
c3bf268
Addressed @amontoison's comments
cvanaret Jun 23, 2026
f602e1d
(auto) paper draft [skip ci]
cvanaret Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/draft-joss-paper.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Draft JOSS paper

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
paper:
runs-on: ubuntu-latest
name: JOSS paper draft
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}

- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# This should be the path to the paper within your repo.
paper-path: joss/paper.md

- name: Upload PDF
uses: actions/upload-artifact@v4
with:
name: paper
# This is the output path where Pandoc will write the compiled
# PDF. Note, this should be the same directory as the input
# paper.md
path: joss/paper.pdf

- name: Commit PDF to repository
uses: EndBug/add-and-commit@v9
with:
message: '(auto) paper draft [skip ci]'
add: 'joss/paper.pdf'
5,378 changes: 5,378 additions & 0 deletions joss/figures/tikz-uml.sty

Large diffs are not rendered by default.

Binary file added joss/figures/uml_diagram.pdf
Binary file not shown.
132 changes: 132 additions & 0 deletions joss/figures/uml_diagram.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
\documentclass[tikz,border=2pt,multi]{standalone}
\usepackage{xcolor}
\usepackage{tikz-uml}
\usetikzlibrary{decorations.text}

\definecolor{constraint_relaxation_color}{HTML}{cab2d6}
\definecolor{inequality_method_color}{HTML}{92b9e1}
\definecolor{mechanism_color}{HTML}{FFCCAC}
\definecolor{strategy_color}{HTML}{FFEB94}
\definecolor{subproblem_color}{HTML}{C1E1DC}

\begin{document}

\begin{tikzpicture}[scale=1.15]
\tikzset{mechanism/.style={fill=mechanism_color}}
\tikzset{constraint_relaxation/.style={fill=constraint_relaxation_color}}
\tikzset{inequality_handling/.style={fill=inequality_method_color}}
\tikzset{strategy/.style={fill=strategy_color}}
\tikzset{subproblem/.style={fill=subproblem_color}}
\tikzset{subclass/.style={opacity=1}}

\umlclass[x=0, y=2.2]{Uno}{
globalization\_mechanism
}{
solve()
}

% GlobalizationMechanism
\umlabstract[mechanism]{GlobalizationMechanism}{
constraint\_relaxation\_strategy
}{
compute\_acceptable\_iterate()
}
\umlsimpleclass[mechanism, subclass, x=-5]{BacktrackingLineSearch}
\umlsimpleclass[mechanism, subclass, x=4.8]{TrustRegionStrategy}

% Constraint relaxation strategy
\umlabstract[constraint_relaxation, x=0, y=-2.4]{ConstraintRelaxationStrategy}{
inequality\_handling\_method
}{
compute\_feasible\_direction() \\
is\_acceptable()
}
\umlsimpleclass[constraint_relaxation, subclass, x=-4.9, y=-2.4]{FeasibilityRestoration}
%\umlsimpleclass[constraint_relaxation, subclass, x=5.25, y=-2.4]{l1Relaxation}

% Inequality handling method
\umlabstract[inequality_handling, x=-5, y=-4.9]{InequalityHandlingMethod}{
subproblem
}{
reformulate\_problem()
}
\umlsimpleclass[inequality_handling, subclass, x=-5.2, y=-6.5]{InequalityConstrainedMethod}
\umlsimpleclass[inequality_handling, subclass, x=-5.9, y=-7.4]{InteriorPointMethod}

% Subproblem
\umlabstract[subproblem, x=0, y=-4.9]{Subproblem}{
hessian\_model \\
inertia\_correction\_strategy
}{
}

% Subproblem solver
\umlabstract[x=4.5, y=-2.8]{SubproblemSolver}{
}{
solve()
}

% Hessian model
\umlabstract[subproblem, x=-2.5, y=-8.2]{HessianModel}{
}{
evaluate \\
compute\_hv
}
\umlsimpleclass[subproblem, subclass, x=-6, y=-9.8]{ExactHessian}
\umlsimpleclass[subproblem, subclass, x=-5, y=-10.6]{QuasiNewtonHessian}
\umlsimpleclass[subproblem, subclass, x=-6.5, y=-11.4]{IdentityHessian}
\umlsimpleclass[subproblem, subclass, x=-5.5, y=-12.2]{ZeroHessian}

% Inertia correction
\umlabstract[subproblem, x=1.2, y=-8.2]{InertiaCorrectionStrategy}{
}{
regularize\_hessian \\
regularize\_augmented\_matrix
}
\umlsimpleclass[subproblem, subclass, x=2, y=-9.8]{PrimalInertiaCorrection}
\umlsimpleclass[subproblem, subclass, x=3, y=-10.6]{PrimalDualInertiaCorrection}
\umlsimpleclass[subproblem, subclass, x=2, y=-11.4]{NoInertiaCorrection}

% Globalization strategy
\umlabstract[strategy, x=4.5, y=-4.7]{GlobalizationStrategy}{
}{
check\_acceptance()
}
\umlsimpleclass[strategy, subclass, x=5.2, y=-6.3]{MeritFunction}
\umlsimpleclass[strategy, subclass, x=5.5, y=-7.2]{FilterMethod}
\umlsimpleclass[strategy, subclass, x=5, y=-8.1]{FunnelMethod}

% links
\umlcompo{GlobalizationMechanism}{Uno}
\umlimpl[subclass]{BacktrackingLineSearch}{GlobalizationMechanism}
\umlimpl[subclass]{TrustRegionStrategy}{GlobalizationMechanism}

\umlcompo{ConstraintRelaxationStrategy}{GlobalizationMechanism}
\umlimpl[subclass]{FeasibilityRestoration}{ConstraintRelaxationStrategy}
%\umlimpl[subclass]{l1Relaxation}{ConstraintRelaxationStrategy}

\umlcompo{InequalityHandlingMethod}{ConstraintRelaxationStrategy}
\umlimpl[subclass]{InequalityConstrainedMethod}{InequalityHandlingMethod}
\umlimpl[subclass]{InteriorPointMethod}{InequalityHandlingMethod}

\umlcompo{SubproblemSolver}{ConstraintRelaxationStrategy}

\umlcompo{GlobalizationStrategy}{ConstraintRelaxationStrategy}
\umlimpl[subclass]{MeritFunction}{GlobalizationStrategy}
\umlimpl[subclass]{FilterMethod}{GlobalizationStrategy}
\umlimpl[subclass]{FunnelMethod}{GlobalizationStrategy}

\umlcompo{Subproblem}{ConstraintRelaxationStrategy}

\umlcompo{HessianModel}{Subproblem}
\umlimpl[subclass]{ExactHessian}{HessianModel}
\umlimpl[subclass]{QuasiNewtonHessian}{HessianModel}
\umlimpl[subclass]{IdentityHessian}{HessianModel}
\umlimpl[subclass]{ZeroHessian}{HessianModel}

\umlcompo{InertiaCorrectionStrategy}{Subproblem}
\umlimpl[subclass]{PrimalInertiaCorrection}{InertiaCorrectionStrategy}
\umlimpl[subclass]{PrimalDualInertiaCorrection}{InertiaCorrectionStrategy}
\umlimpl[subclass]{NoInertiaCorrection}{InertiaCorrectionStrategy}
\end{tikzpicture}
\end{document}
Binary file added joss/figures/wheel.pdf
Binary file not shown.
127 changes: 127 additions & 0 deletions joss/figures/wheel.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
\documentclass[tikz,border=2pt,multi]{standalone}
\usepackage{xcolor}
\usetikzlibrary{decorations.text}

\definecolor{constraint_relaxation_color}{HTML}{cab2d6}
\definecolor{inequality_method_color}{HTML}{92b9e1}
\definecolor{mechanism_color}{HTML}{FFCCAC}
\definecolor{strategy_color}{HTML}{FFEB94}
\definecolor{subproblem_color}{HTML}{C1E1DC}
\definecolor{darkgreen}{rgb}{0, 0.5, 0}

\begin{document}
\begin{tikzpicture}
\newcommand\smallestradius{ 0.6 cm}
\newcommand\smallradius{ 5.5 cm}
\newcommand\middleradius{ 7 cm}
\newcommand\largeradius{ 8 cm}

% draw colors of layers
\filldraw[fill=white] (0: \largeradius) arc (0:102.85714285714286:\largeradius) -- (102.85714285714286: \middleradius) arc (102.85714285714286:0:\middleradius) -- cycle;
\filldraw[fill=subproblem_color] (102.85714285714286: \largeradius) arc (102.85714285714286:205.71428571428572:\largeradius) -- (205.71428571428572: \middleradius) arc (205.71428571428572:102.85714285714286:\middleradius) -- cycle;
\filldraw[fill=white] (205.71428571428572: \largeradius) arc (205.71428571428572:257.14285714285717:\largeradius) -- (257.14285714285717: \middleradius) arc (257.14285714285717:205.71428571428572:\middleradius) -- cycle;
\filldraw[fill=white] (257.14285714285717: \largeradius) arc (257.14285714285717:360.0:\largeradius) -- (360.0: \middleradius) arc (360.0:257.14285714285717:\middleradius) -- cycle;

% draw colors of ingredients
\filldraw[fill=constraint_relaxation_color] (0: \middleradius) arc (0:51.42857142857143:\middleradius) -- (51.42857142857143: \smallradius) arc (51.42857142857143:0:\smallradius) -- cycle;
\filldraw[fill=inequality_method_color] (51.42857142857143: \middleradius) arc (51.42857142857143:102.85714285714286:\middleradius) -- (102.85714285714286: \smallradius) arc (102.85714285714286:51.42857142857143:\smallradius) -- cycle;
\filldraw[fill=white] (102.85714285714286: \middleradius) arc (102.85714285714286:154.28571428571428:\middleradius) -- (154.28571428571428: \smallradius) arc (154.28571428571428:102.85714285714286:\smallradius) -- cycle;
\filldraw[fill=white] (154.28571428571428: \middleradius) arc (154.28571428571428:205.71428571428572:\middleradius) -- (205.71428571428572: \smallradius) arc (205.71428571428572:154.28571428571428:\smallradius) -- cycle;
\filldraw[fill=white] (205.71428571428572: \middleradius) arc (205.71428571428572:257.14285714285717:\middleradius) -- (257.14285714285717: \smallradius) arc (257.14285714285717:205.71428571428572:\smallradius) -- cycle;
\filldraw[fill=strategy_color] (257.14285714285717: \middleradius) arc (257.14285714285717:308.5714285714286:\middleradius) -- (308.5714285714286: \smallradius) arc (308.5714285714286:257.14285714285717:\smallradius) -- cycle;
\filldraw[fill=mechanism_color] (308.5714285714286: \middleradius) arc (308.5714285714286:360.00000000000006:\middleradius) -- (360.00000000000006: \smallradius) arc (360.00000000000006:308.5714285714286:\smallradius) -- cycle;

% draw layers
\draw [black, thick] (0:0.6) -- (0:8);
\path [decorate, decoration={text along path,, reverse path, text=reformulation, text align=center}] (0: 0.925*8) arc (0:90: 0.925*8);
\draw [black, thick] (102.85714285714286:0.6) -- (102.85714285714286:8);
\path [decorate, decoration={text along path,, reverse path, text=Lagrange-Newton subproblem, text align=center}] (102.85714285714286: 0.925*8) arc (102.85714285714286:192.85714285714286: 0.925*8);
\draw [black, thick] (205.71428571428572:0.6) -- (205.71428571428572:8);
\path [decorate, decoration={text along path, text=subproblem solver, text align=center}] (205.71428571428572: 0.95*8) arc (205.71428571428572:250.71428571428572: 0.95*8);
\draw [black, thick] (257.14285714285717:0.6) -- (257.14285714285717:8);
\path [decorate, decoration={text along path, text=globalization, text align=center}] (257.14285714285717: 0.95*8) arc (257.14285714285717:347.14285714285717: 0.95*8);

% draw ingredients
% reformulation
\draw [black, thick] (0:0.6) -- (0:7);
\path [decorate, decoration={text along path,, reverse path, text=constraint relaxation, text align=center}] (0: 0.925*7) arc (0:{45}:0.925*7);
\draw [black, thick] (51.42857142857143:0.6) -- (51.42857142857143:7);
\path [decorate, decoration={text along path,, reverse path, text=inequality handling, text align=center}] (51.42857142857143: 0.925*7) arc (51.42857142857143:{96.42857142857143}:0.925*7);
% Lagrange-Newton subproblem
\draw [black, thick] (102.85714285714286:0.6) -- (102.85714285714286:7);
\path [decorate, decoration={text along path,, reverse path, text=Hessian model, text align=center}] (102.85714285714286: 0.925*7) arc (102.85714285714286:{147.85714285714286}:0.925*7);
\draw [black, thick] (154.28571428571428:0.6) -- (154.28571428571428:7);
\path [decorate, decoration={text along path,, reverse path, text=regularization strategy, text align=center}] (154.28571428571428: 0.925*7) arc (154.28571428571428:{199.28571428571428}:0.925*7);
% subproblem solver
\draw [black, thick] (205.71428571428572:0.6) -- (205.71428571428572:7);
\path [decorate, decoration={text along path, text=subproblem solver, text align=center}] (205.71428571428572: 0.95*7) arc (205.71428571428572:{250.71428571428572}:0.95*7);
% globalization
\draw [black, thick] (257.14285714285717:0.6) -- (257.14285714285717:7);
\path [decorate, decoration={text along path, text=globalization strategy, text align=center}] (257.14285714285717: 0.95*7) arc (257.14285714285717:{302.14285714285717}:0.95*7);
\draw [black, thick] (308.5714285714286:0.6) -- (308.5714285714286:7);
\path [decorate, decoration={text along path, text=globalization mechanism, text align=center}] (308.5714285714286: 0.95*7) arc (308.5714285714286:{353.5714285714286}:0.95*7);

% draw strategy radii
% constraint relaxation
\draw [black] (12.857142857142858:0.6) -- (12.857142857142858:5.5);
\draw [black] (25.714285714285715:0.6) -- (25.714285714285715:5.5);
\draw [black] (38.57142857142857:0.6) -- (38.57142857142857:5.5);
% inequality handling
\draw [black] (68.57142857142857:0.6) -- (68.57142857142857:5.5);
\draw [black] (85.71428571428572:0.6) -- (85.71428571428572:5.5);
% Hessian model
\draw [black] (115.71428571428572:0.6) -- (115.71428571428572:5.5);
\draw [black] (128.57142857142858:0.6) -- (128.57142857142858:5.5);
\draw [black] (141.42857142857144:0.6) -- (141.42857142857144:5.5);
% regularization strategy
\draw [black] (171.42857142857142:0.6) -- (171.42857142857142:5.5);
\draw [black] (188.57142857142856:0.6) -- (188.57142857142856:5.5);
% subproblem solver
\draw [black] (222.85714285714286:0.6) -- (222.85714285714286:5.5);
\draw [black] (240.0:0.6) -- (240.0:5.5);
% globalization strategy
\draw [black] (274.28571428571433:0.6) -- (274.28571428571433:5.5);
\draw [black] (291.42857142857144:0.6) -- (291.42857142857144:5.5);
% globalization mechanism
\draw [black] (325.7142857142858:0.6) -- (325.7142857142858:5.5);
\draw [black] (342.8571428571429:0.6) -- (342.8571428571429:5.5);

% draw strategies
% constraint relaxation
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={|\color{darkgreen}|feas restoration}}}] (0, 0) -- (6.428571428571429:0.95*5.5);
\path (0, 0) -- (19.285714285714285:0.95*5.5) node[sloped, pos=1, anchor=east, inner sep=0pt] {$\ell_1$ relaxation};
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={augmented Lag}}}] (0, 0) -- (32.142857142857146:0.95*5.5);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={step decomposition}}}] (0, 0) -- (45.0:0.95*5.5);
% inequality handling
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={|\color{darkgreen}|inequality constrained}}}] (0, 0) -- (60.0:0.95*5.5);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={equality constrained}}}] (0, 0) -- (77.14285714285714:0.95*5.5);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={|\color{darkgreen}|interior point}}}] (0, 0) -- (94.28571428571429:0.95*5.5);
% Hessian model
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|exact}}}] (109.28571428571429:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|quasi-Newton}}}] (122.14285714285714:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|identity}}}] (135.0:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|zero}}}] (147.85714285714286:0.95*5.5) -- (0, 0);
% regularization strategy
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|primal}}}] (162.85714285714286:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|primal-dual}}}] (180.0:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|none}}}] (197.14285714285714:0.95*5.5) -- (0, 0);
% subproblem solver
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|QP solver}}}] (214.2857142857143:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|LP solver}}}] (231.42857142857144:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|linear solver}}}] (248.57142857142858:0.95*5.5) -- (0, 0);
% globalization strategy
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|merit function}}}] (265.7142857142857:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|filter method}}}] (282.8571428571429:0.95*5.5) -- (0, 0);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=left, text={|\color{darkgreen}|funnel method}}}] (300.0:0.95*5.5) -- (0, 0);
% globalization mechanism
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={|\color{darkgreen}|line search}}}] (0, 0) -- (317.14285714285717:0.95*5.5);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={|\color{darkgreen}|trust-region method}}}] (0, 0) -- (334.28571428571433:0.95*5.5);
\draw[white, postaction={decorate, decoration={raise=-3pt, text along path, text align=right, text={proximal term}}}] (0, 0) -- (351.42857142857144:0.95*5.5);

% draw circles
\draw [thick] (0, 0) circle (\smallestradius);
\draw [thick] (0, 0) circle (\smallradius);
\draw [thick] (0, 0) circle (\middleradius);
\draw [thick] (0, 0) circle (\largeradius);
\end{tikzpicture}
\end{document}
Loading