16auto make_inner_lbfgsb_solver(
Options &opts) {
 
   18    InnerLBFGSBSolver::Params solver_param;
 
   19    solver_param.max_iter       = 50'000;
 
   20    solver_param.print_interval = 0;
 
   23    return InnerLBFGSBSolver{solver_param};
 
   26template <
class LoadedProblem>
 
   27solver_func_t make_lbfgsb_driver_impl(std::string_view direction,
 
   29    if (!direction.empty())
 
   30        throw std::invalid_argument(
 
   31            "L-BFGS-B solver does not support any directions");
 
   32    auto inner_solver = make_inner_lbfgsb_solver(opts);
 
   36    return [solver{std::move(solver)},
 
   47    static constexpr bool valid_config =
 
   48        std::is_same_v<LoadedProblem::config_t, InnerLBFGSBSolver::config_t>;
 
   49    if constexpr (valid_config)
 
   50        return make_lbfgsb_driver_impl<LoadedProblem>(direction, opts);
 
   52        throw std::invalid_argument(
 
   53            "L-BFGS-B solver only supports double precision");
 
   63    throw std::invalid_argument(
 
   64        "This version of alpaqa was compiled without L-BFGS-B support.");
 
SolverResults run_alm_solver(LoadedProblem &problem, Solver &solver, std::ostream &os, unsigned N_exp)
 
auto make_alm_solver(InnerSolver &&inner_solver, Options &opts)
 
Augmented Lagrangian Method solver.
 
solver_func_t make_lbfgsb_driver(std::string_view, Options &)
 
@ ProjGradUnitNorm
∞-norm of the projected gradient with unit step size:
 
auto attach_cancellation(Solver &solver)
Attach SIGINT and SIGTERM handlers to stop the given solver.
 
decltype(auto) set_params(T &t, std::string_view prefix, Options &opts)
 
std::function< solver_free_func_t > solver_func_t