37 vec x = vec::Zero(n), y = vec::Zero(m), g(m);
43 using qp_idx_t = qpalm::sp_index_t;
44 using SparseCSC = sparsity::SparseCSC<qp_idx_t, qp_idx_t>;
45 using SparsityConv = sparsity::SparsityConverter<Sparsity, SparseCSC>;
49 SparsityConv sp_Q{sp_Q_orig, {.order = SparseCSC::SortedRows}};
50 auto nnz_Q =
static_cast<qp_idx_t
>(sp_Q.get_sparsity().nnz());
51 auto symm = convert_symmetry(sp_Q.get_sparsity().symmetry);
52 qp.
sto->Q = qpalm::ladel_sparse_create(n, n, nnz_Q, symm);
53 qp.Q = qp.
sto->Q.get();
55 std::ranges::copy(sp_Q.get_sparsity().inner_idx, qp.Q->i);
56 std::ranges::copy(sp_Q.get_sparsity().outer_ptr, qp.Q->p);
58 mvec H_values{qp.Q->x,
static_cast<index_t>(nnz_Q)};
59 sp_Q.convert_values_into(
as_span(H_values), [&](std::span<real_t> v) {
65 SparsityConv sp_A{sp_A_orig, {.order = SparseCSC::SortedRows}};
66 auto nnz_A =
static_cast<qp_idx_t
>(sp_A.get_sparsity().nnz());
67 auto symm = convert_symmetry(sp_A.get_sparsity().symmetry);
68 qp.
sto->A = qpalm::ladel_sparse_create(m, n, nnz_A + n, symm);
69 qp.A = qp.
sto->A.get();
71 std::ranges::copy(sp_A.get_sparsity().inner_idx, qp.A->i);
72 std::ranges::copy(sp_A.get_sparsity().outer_ptr, qp.A->p);
74 mvec J_values{qp.A->x,
static_cast<index_t>(nnz_A)};
75 sp_A.convert_values_into(
as_span(J_values), [&](std::span<real_t> v) {
80 ConstrConv::SparseView A{
83 .inner_idx = span{qp.A->i,
static_cast<size_t>(qp.A->nzmax)},
84 .outer_ptr = span{qp.A->p,
static_cast<size_t>(qp.A->ncol) + 1},
85 .values = span{qp.A->x,
static_cast<size_t>(qp.A->nzmax)},
87 ConstrConv::add_box_constr_to_constr_matrix(
96 qp.q = qp.
sto->q.data();
100 qp.
sto->b.lower.resize(qp.A->nrow);
101 qp.
sto->b.upper.resize(qp.A->nrow);
102 qp.bmin = qp.
sto->b.lower.data();
103 qp.bmax = qp.
sto->b.upper.data();
107 ConstrConv::combine_bound_constr(C, D, qp.
sto->b, g);
109 qp.m =
static_cast<size_t>(qp.A->nrow);
110 qp.n =
static_cast<size_t>(qp.Q->nrow);
void eval_lagrangian_hessian(crvec x, crvec y, real_t scale, rvec H_values) const
[Optional] Function that evaluates the nonzero values of the Hessian of the Lagrangian,