8 data.n =
static_cast<size_t>(
n);
9 data.m =
static_cast<size_t>(
m);
14 data.q =
const_cast<c_float *
>(
q.data());
26 : work{::
qpalm_setup(data.get_c_data_ptr(), &settings)} {}
33 std::optional<const_ref_vec_t> bmax) {
35 bmax ? bmax->data() :
nullptr);
47 std::optional<const_ref_vec_t> y) {
49 y ? y->data() :
nullptr);
55 assert(work->solution);
56 assert(work->solution->x);
57 assert(work->solution->y);
58 auto en =
static_cast<Eigen::Index
>(work->data->n);
59 auto em =
static_cast<Eigen::Index
>(work->data->m);
61 {work->solution->x, en},
62 {work->solution->y, em},
72 auto em =
static_cast<Eigen::Index
>(work->data->m);
73 return {work->delta_y, em};
77 auto en =
static_cast<Eigen::Index
>(work->data->n);
78 return {work->delta_x, en};
Stores the matrices and vectors that define the problem.
index_t m
Number of constraints (size of bmin and bmax, number of rows of A).
index_t n
Problem dimension (size of x and q, number rows and columns of Q, number of columns of A).
ladel_sparse_matrix_ptr Q
ladel_sparse_matrix_ptr A
QPALM_CXX_EXPORTconst ::QPALMData * get_c_data_ptr() const
Get a pointer to the underlying C data structure.
QPALM_CXX_EXPORT SolutionView get_solution() const
Get the solution computed by solve().
QPALM_CXX_EXPORT void update_Q_A(const_ref_vec_t Q_vals, const_ref_vec_t A_vals)
QPALM_CXX_EXPORT const QPALMInfo & get_info() const
Get the solver information from the last call to solve().
QPALM_CXX_EXPORT void update_q(const_ref_vec_t q)
QPALM_CXX_EXPORT Solver(const Data &data, const Settings &settings)
Create a new solver for the problem defined by data and with the parameters defined by settings.
QPALM_CXX_EXPORT void warm_start(std::optional< const_ref_vec_t > x, std::optional< const_ref_vec_t > y)
QPALM_CXX_EXPORT void update_bounds(std::optional< const_ref_vec_t > bmin, std::optional< const_ref_vec_t > bmax)
QPALM_CXX_EXPORT void solve()
Solve the problem.
QPALM_CXX_EXPORT void update_settings(const Settings &settings)
QPALM_CXX_EXPORT const_borrowed_vec_t get_dual_inf_certificate() const
Get the certificate of dual infeasibility of the problem.
QPALM_CXX_EXPORT const_borrowed_vec_t get_prim_inf_certificate() const
Get the certificate of primal infeasibility of the problem.
ladel_double c_float
type for floating point numbers
void qpalm_warm_start(QPALMWorkspace *work, const c_float *x_warm_start, const c_float *y_warm_start)
Warm start workspace variables x, x_0, x_prev, Ax, Qx, y and sigma.
void qpalm_update_Q_A(QPALMWorkspace *work, const c_float *Qx, const c_float *Ax)
Update the matrix entries of Q and A.
void qpalm_update_bounds(QPALMWorkspace *work, const c_float *bmin, const c_float *bmax)
Update the lower and upper bounds.
void qpalm_set_default_settings(QPALMSettings *settings)
Set default settings from constants.h file.
void qpalm_update_settings(QPALMWorkspace *work, const QPALMSettings *settings)
Update the settings to the new settings.
void qpalm_cleanup(QPALMWorkspace *work)
Cleanup the workspace by deallocating memory.
void qpalm_solve(QPALMWorkspace *work)
Solve the quadratic program.
QPALMWorkspace * qpalm_setup(const QPALMData *data, const QPALMSettings *settings)
Initialize QPALM solver allocating memory.
void qpalm_update_q(QPALMWorkspace *work, const c_float *q)
Update the linear part of the cost.
Eigen::Ref< const vec_t > const_ref_vec_t
Read-only reference to a dense vector (vector view).
Eigen::Map< const vec_t > const_borrowed_vec_t
Read-only borrowed dense vector type (vector view).
Solver return information.
Settings and parameters for the QPALM solver.
QPALM_CXX_EXPORT Settings()
Construct with default settings.
View on the solution returned by the solver.
QPALM_CXX_EXPORT void operator()(::QPALMWorkspace *) const