This repository contains the source code to reproduce the experiments in the following manuscript:
A. Bodard, P. Pas, A. Themelis, P. Patrinos,
PANOC-lite: A simpler and more efficient algorithm for composite minimization.
# Ensure submodules are present
git submodule update --init --recursive
# Generate the OCP benchmark problems
uv sync
uv run --package alpaqa-mpc-benchmarks --extra test pytest
. .venv/bin/activate
export CFLAGS=-march=native; export CXXFLAGS=-march=native
cmake --fresh -B build -D CMAKE_BUILD_TYPE=Release -G Ninja
cmake --build build -j
cmake --install build --prefix problems/staging
# Install the alpaqa Julia interface
julia -e "using Pkg; Pkg.add(\"BinaryBuilder\")"
julia alpaqa/interfaces/julia/build_tarballs.jl $(gcc -print-multiarch) --deploy=local
julia --project=alpaqa/interfaces/julia/Alpaqa -e "
using Pkg
Pkg.develop(path=joinpath(DEPOT_PATH[1], \"dev\", \"Alpaqa_jll\"))
Pkg.instantiate()
"
julia --project=. -e "
using Pkg
Pkg.develop(path=\"./alpaqa/interfaces/julia/Alpaqa\")
Pkg.instantiate()
"
# Sanity check for loading problems and running alpaqa
julia --project=. benchmarks/alpaqa.jlTo reproduce the MPC experiments, involving a quadcopter and a bicycle model, run
julia --project=. paper-experiments/mpc_plots.jl
To reproduce the sparse logistic regression results, run
julia --project=. paper-experiments/sparse_logistic_regression_tables.jl
The box plot and performance profile from the paper can then be produced by respectively running
julia --project=. paper-experiments/sparse_logistic_regression_box_plot.jl
and
julia --project=. paper-experiments/sparse_logistic_regression_performance_profile.jl
To reproduce the CUTEst experiments, run
julia --project=. paper-experiments/cutest.jl
The performance profile from the paper can then be plotted by running
julia --project=. paper-experiments/cutest_performance_profiles.jl