#include <alpaqa/dl/dl-problem.hpp>
Class that loads a problem using dlopen
.
The shared library should export a C function with the name <symbol_prefix>_register
that accepts a void pointer with user data, and returns a struct of type alpaqa_problem_register_t that contains all data to represent the problem, as well as function pointers for all required operations. See C++/DLProblem/main.cpp and problems/sparse-logistic-regression.cpp for examples.
Definition at line 93 of file dl-problem.hpp.
Public Types | |
using | Sparsity = alpaqa::Sparsity< config_t > |
using | instance_t = ExtraFuncs::instance_t |
using | Box = alpaqa::Box< config_t > |
Static Public Member Functions | |
static real_t | eval_proj_grad_step_box (const Box &C, real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) |
Projected gradient step for rectangular box C. | |
static void | eval_prox_grad_step_box_l1_impl (const Box &C, const auto &λ, real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) |
Proximal gradient step for rectangular box C with ℓ₁-regularization. | |
static real_t | eval_prox_grad_step_box_l1 (const Box &C, const auto &λ, real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) |
Proximal gradient step for rectangular box C with ℓ₁-regularization. | |
static real_t | eval_prox_grad_step_box_l1_scal (const Box &C, real_t λ, real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) |
Proximal gradient step for rectangular box C with ℓ₁-regularization. | |
static void | eval_proj_multipliers_box (const Box &D, rvec y, real_t M, index_t penalty_alm_split) |
Public Attributes | |
length_t | n |
Number of decision variables, dimension of x. | |
length_t | m |
Number of constraints, dimension of g(x) and z. | |
Box | C |
Constraints of the decision variables, \( x \in C \). | |
Box | D |
Other constraints, \( g(x) \in D \). | |
vec | l1_reg |
\( \ell_1 \) (1-norm) regularization parameter. | |
index_t | penalty_alm_split |
Components of the constraint function with indices below this number are handled using a quadratic penalty method rather than using an augmented Lagrangian method. | |
Private Attributes | |
std::shared_ptr< void > | handle |
Handle to the shared module defining the problem. | |
std::shared_ptr< void > | instance |
Problem instance created by the registration function, including the deleter to destroy it. | |
problem_functions_t * | functions = nullptr |
Pointer to the struct of function pointers for evaluating the objective, constraints, their gradients, etc. | |
ExtraFuncs | extra_funcs |
Dictionary of extra functions that were registered by the problem. | |
using Sparsity = alpaqa::Sparsity<config_t> |
Definition at line 96 of file dl-problem.hpp.
using instance_t = ExtraFuncs::instance_t |
Definition at line 166 of file dl-problem.hpp.
|
inherited |
Definition at line 19 of file box-constr-problem.hpp.
DLProblem | ( | const std::string & | so_filename, |
std::string | symbol_prefix = "alpaqa_problem" , |
||
void * | user_param = nullptr |
||
) |
Load a problem from a shared library.
so_filename | Filename of the shared library to load. |
symbol_prefix | Prefix of the registration function. |
user_param | Pointer to custom user data to pass to the registration function. |
Definition at line 154 of file dl-problem.cpp.
Definition at line 217 of file dl-problem.cpp.
Definition at line 218 of file dl-problem.cpp.
Definition at line 219 of file dl-problem.cpp.
Definition at line 220 of file dl-problem.cpp.
Definition at line 222 of file dl-problem.cpp.
auto get_jac_g_sparsity | ( | ) | const |
Definition at line 223 of file dl-problem.cpp.
Definition at line 221 of file dl-problem.cpp.
Definition at line 224 of file dl-problem.cpp.
Definition at line 225 of file dl-problem.cpp.
auto get_hess_L_sparsity | ( | ) | const |
Definition at line 226 of file dl-problem.cpp.
Definition at line 227 of file dl-problem.cpp.
Definition at line 228 of file dl-problem.cpp.
auto get_hess_ψ_sparsity | ( | ) | const |
Definition at line 229 of file dl-problem.cpp.
Definition at line 230 of file dl-problem.cpp.
Definition at line 231 of file dl-problem.cpp.
Definition at line 232 of file dl-problem.cpp.
Definition at line 233 of file dl-problem.cpp.
Definition at line 234 of file dl-problem.cpp.
Definition at line 235 of file dl-problem.cpp.
Definition at line 236 of file dl-problem.cpp.
bool provides_eval_f | ( | ) | const |
Definition at line 238 of file dl-problem.cpp.
bool provides_eval_grad_f | ( | ) | const |
Definition at line 239 of file dl-problem.cpp.
bool provides_eval_g | ( | ) | const |
Definition at line 240 of file dl-problem.cpp.
bool provides_eval_grad_g_prod | ( | ) | const |
Definition at line 241 of file dl-problem.cpp.
bool provides_eval_jac_g | ( | ) | const |
Definition at line 242 of file dl-problem.cpp.
bool provides_get_jac_g_sparsity | ( | ) | const |
Definition at line 243 of file dl-problem.cpp.
bool provides_eval_grad_gi | ( | ) | const |
Definition at line 244 of file dl-problem.cpp.
bool provides_eval_hess_L_prod | ( | ) | const |
Definition at line 245 of file dl-problem.cpp.
bool provides_eval_hess_L | ( | ) | const |
Definition at line 246 of file dl-problem.cpp.
bool provides_get_hess_L_sparsity | ( | ) | const |
Definition at line 247 of file dl-problem.cpp.
bool provides_eval_hess_ψ_prod | ( | ) | const |
Definition at line 248 of file dl-problem.cpp.
bool provides_eval_hess_ψ | ( | ) | const |
Definition at line 249 of file dl-problem.cpp.
bool provides_get_hess_ψ_sparsity | ( | ) | const |
Definition at line 250 of file dl-problem.cpp.
bool provides_eval_f_grad_f | ( | ) | const |
Definition at line 251 of file dl-problem.cpp.
bool provides_eval_f_g | ( | ) | const |
Definition at line 252 of file dl-problem.cpp.
bool provides_eval_grad_f_grad_g_prod | ( | ) | const |
Definition at line 253 of file dl-problem.cpp.
bool provides_eval_grad_L | ( | ) | const |
Definition at line 254 of file dl-problem.cpp.
bool provides_eval_ψ | ( | ) | const |
Definition at line 255 of file dl-problem.cpp.
bool provides_eval_grad_ψ | ( | ) | const |
Definition at line 256 of file dl-problem.cpp.
bool provides_eval_ψ_grad_ψ | ( | ) | const |
Definition at line 257 of file dl-problem.cpp.
bool provides_get_box_C | ( | ) | const |
Definition at line 258 of file dl-problem.cpp.
Definition at line 169 of file dl-problem.hpp.
Change the dimensions of the problem (number of decision variables and number of constaints).
Destructive: resizes and/or resets the members C, D, l1_reg and penalty_alm_split.
Definition at line 41 of file box-constr-problem.hpp.
|
inlineinherited |
Number of decision variables, n.
Definition at line 75 of file box-constr-problem.hpp.
|
inlineinherited |
Number of constraints, m.
Definition at line 77 of file box-constr-problem.hpp.
|
inlinestaticinherited |
Projected gradient step for rectangular box C.
\[ \begin{aligned} \hat x &= \Pi_C(x - \gamma\nabla\psi(x)) \\ p &= \hat x - x \\ &= \max(\underline x - x, \;\min(-\gamma\nabla\psi(x), \overline x - x) \end{aligned} \]
Definition at line 84 of file box-constr-problem.hpp.
|
inlinestaticinherited |
Proximal gradient step for rectangular box C with ℓ₁-regularization.
\[ \begin{aligned} h(x) &= \|x\|_1 + \delta_C(x) \\ \hat x &= \prox_{\gamma h}(x - \gamma\nabla\psi(x)) \\ &= -\max\big( x - \overline x, \;\min\big( x - \underline x, \;\min\big( \gamma(\nabla\psi(x) + \lambda), \;\max\big( \gamma(\nabla\psi(x) - \lambda), x \big) \big) \big) \big) \end{aligned} \]
Definition at line 107 of file box-constr-problem.hpp.
|
inlinestaticinherited |
Proximal gradient step for rectangular box C with ℓ₁-regularization.
\[ \begin{aligned} h(x) &= \|x\|_1 + \delta_C(x) \\ \hat x &= \prox_{\gamma h}(x - \gamma\nabla\psi(x)) \\ &= -\max\big( x - \overline x, \;\min\big( x - \underline x, \;\min\big( \gamma(\nabla\psi(x) + \lambda), \;\max\big( \gamma(\nabla\psi(x) - \lambda), x \big) \big) \big) \big) \end{aligned} \]
Definition at line 116 of file box-constr-problem.hpp.
|
inlinestaticinherited |
Proximal gradient step for rectangular box C with ℓ₁-regularization.
\[ \begin{aligned} h(x) &= \|x\|_1 + \delta_C(x) \\ \hat x &= \prox_{\gamma h}(x - \gamma\nabla\psi(x)) \\ &= -\max\big( x - \overline x, \;\min\big( x - \underline x, \;\min\big( \gamma(\nabla\psi(x) + \lambda), \;\max\big( \gamma(\nabla\psi(x) - \lambda), x \big) \big) \big) \big) \end{aligned} \]
Definition at line 123 of file box-constr-problem.hpp.
Definition at line 142 of file box-constr-problem.hpp.
|
inlinestaticinherited |
Definition at line 144 of file box-constr-problem.hpp.
Definition at line 166 of file box-constr-problem.hpp.
Definition at line 171 of file box-constr-problem.hpp.
Definition at line 173 of file box-constr-problem.hpp.
|
inlineinherited |
Definition at line 176 of file box-constr-problem.hpp.
|
inlineinherited |
Definition at line 213 of file box-constr-problem.hpp.
|
private |
Handle to the shared module defining the problem.
Definition at line 109 of file dl-problem.hpp.
|
private |
Problem instance created by the registration function, including the deleter to destroy it.
Definition at line 112 of file dl-problem.hpp.
|
private |
Pointer to the struct of function pointers for evaluating the objective, constraints, their gradients, etc.
Definition at line 115 of file dl-problem.hpp.
|
private |
Dictionary of extra functions that were registered by the problem.
Definition at line 117 of file dl-problem.hpp.
|
inherited |
Number of decision variables, dimension of x.
Definition at line 22 of file box-constr-problem.hpp.
|
inherited |
Number of constraints, dimension of g(x) and z.
Definition at line 24 of file box-constr-problem.hpp.
|
inherited |
Constraints of the decision variables, \( x \in C \).
Definition at line 59 of file box-constr-problem.hpp.
|
inherited |
Other constraints, \( g(x) \in D \).
Definition at line 61 of file box-constr-problem.hpp.
|
inherited |
\( \ell_1 \) (1-norm) regularization parameter.
Possible dimensions are: \( 0 \) (no regularization), \( 1 \) (a single scalar factor), or \( n \) (a different factor for each variable).
Definition at line 66 of file box-constr-problem.hpp.
|
inherited |
Components of the constraint function with indices below this number are handled using a quadratic penalty method rather than using an augmented Lagrangian method.
Specifically, the Lagrange multipliers for these components (which determine the shifts in ALM) are kept at zero.
Definition at line 72 of file box-constr-problem.hpp.