5#include <cyqlone/qpalm/export.h>
9#include <guanaqo/atomic-stop-signal.hpp>
10#include <guanaqo/timed.hpp>
35 std::map<std::string, DefaultTimings>
backend;
47 real_t
max_penalty = std::numeric_limits<real_t>::quiet_NaN();
49 std::optional<DetailedStats>
detail = std::nullopt;
61template <
class T,
class D>
79template <
class Backend>
83template <
class Backend>
100 std::unique_ptr<SolverImplementation<backend_type>>
impl{};
101 std::optional<SolverStats>
stats = std::nullopt;
105 [[nodiscard]] index_t get_num_variables()
const;
106 [[nodiscard]] index_t get_num_equality_constraints()
const;
107 [[nodiscard]] index_t get_num_inequality_constraints()
const;
109 [[nodiscard]]
bool has_result()
const;
110 void get_solution(std::span<real_t>)
const;
111 [[nodiscard]] std::vector<real_t> get_solution()
const;
112 void get_equality_multipliers(std::span<real_t>)
const;
113 [[nodiscard]] std::vector<real_t> get_equality_multipliers()
const;
114 void get_equality_constraints(std::span<real_t>)
const;
115 [[nodiscard]] std::vector<real_t> get_equality_constraints()
const;
116 void get_inequality_multipliers(std::span<real_t>)
const;
117 [[nodiscard]] std::vector<real_t> get_inequality_multipliers()
const;
118 void get_inequality_constraints(std::span<real_t>)
const;
119 [[nodiscard]] std::vector<real_t> get_inequality_constraints()
const;
124 std::span<const real_t> λ);
125 bool get_initial_guess(std::span<real_t> x, std::span<real_t> y, std::span<real_t> λ);
126 void set_b_eq(std::span<const real_t> b_eq);
127 void set_b_lb(std::span<const real_t> b_lb);
128 void set_b_ub(std::span<const real_t> b_ub);
bool get_initial_guess(std::span< real_t > x, std::span< real_t > y, std::span< real_t > λ)
std::optional< BackendStats > stats_backend
void set_b_ub(std::span< const real_t > b_ub)
void get_penalty_factors(std::span< real_t >) const
guanaqo::AtomicStopSignal stop_signal
Solver(const Solver &)=delete
Solver(Solver &&) noexcept
std::optional< SolverStats > stats
detail::backend_type_t< Backend > backend_type
SolverStatus operator()()
typename detail::backend_stats_type< backend_type >::type BackendStats
Solver & operator=(const Solver &)=delete
SolverStatus do_solve()
Run QPALM on the scaled problem.
std::unique_ptr< SolverImplementation< backend_type > > impl
void warm_start_solution()
Solver(Backend backend, Settings settings={})
void set_b_eq(std::span< const real_t > b_eq)
void set_initial_guess(std::span< const real_t > x, std::span< const real_t > y, std::span< const real_t > λ)
std::vector< real_t > get_penalty_factors() const
void set_b_lb(std::span< const real_t > b_lb)
std::optional< DetailedStats > detail
real_t primal_residual_norm
SolverStatus
Exit status of a numerical solver.
typename backend_type< T >::type backend_type_t
batmat::DefaultTimings DefaultTimings
cyqlone::TricyqleSolver< v, real_t > Solver
std::map< std::string, DefaultTimings > backend
DefaultTimings recompute_inner
DefaultTimings update_penalty
std::ostream & operator<<(std::ostream &, const SolverTimings &)
DefaultTimings boost_regularization
DefaultTimings line_search
DefaultTimings mat_vec_AT
DefaultTimings update_regularization
DefaultTimings active_set_change
DefaultTimings mat_vec_MT
DefaultTimings recompute_outer