#include <interop/casadi/include/alpaqa/casadi/CasADiProblem.hpp>
Problem definition for a CasADi problem, loaded from a DLL.
Definition at line 18 of file CasADiProblem.hpp.
Public Types | |
using | Box = alpaqa::Box< config_t > |
Public Member Functions | |
CasADiProblem (const std::string &filename) | |
Load a problem generated by CasADi (with parameters). | |
~CasADiProblem () | |
CasADiProblem (const CasADiProblem &) | |
CasADiProblem & | operator= (const CasADiProblem &) |
CasADiProblem (CasADiProblem &&) noexcept | |
CasADiProblem & | operator= (CasADiProblem &&) noexcept |
void | load_numerical_data (const std::filesystem::path &filepath, char sep=',') |
Load the numerical problem data (bounds and parameters) from a CSV file. | |
real_t | eval_f (crvec x) const |
void | eval_grad_f (crvec x, rvec grad_fx) const |
real_t | eval_f_grad_f (crvec x, rvec grad_fx) const |
void | eval_g (crvec x, rvec g) const |
void | eval_grad_g_prod (crvec x, crvec y, rvec grad_gxy) const |
void | eval_grad_ψ (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const |
real_t | eval_ψ_grad_ψ (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const |
void | eval_grad_L (crvec x, crvec y, rvec grad_L, rvec work_n) const |
real_t | eval_ψ (crvec x, crvec y, crvec Σ, rvec ŷ) const |
void | eval_grad_gi (crvec x, index_t i, rvec grad_i) const |
length_t | get_jac_g_num_nonzeros () const |
void | eval_jac_g (crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values) const |
void | eval_hess_L_prod (crvec x, crvec y, real_t scale, crvec v, rvec Hv) const |
length_t | get_hess_L_num_nonzeros () const |
void | eval_hess_L (crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values) const |
void | eval_hess_ψ_prod (crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv) const |
length_t | get_hess_ψ_num_nonzeros () const |
void | eval_hess_ψ (crvec x, crvec y, crvec Σ, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values) const |
bool | provides_eval_grad_gi () const |
bool | provides_eval_jac_g () const |
bool | provides_eval_hess_L_prod () const |
bool | provides_eval_hess_L () const |
bool | provides_eval_hess_ψ_prod () const |
bool | provides_eval_hess_ψ () const |
void | resize (length_t n, length_t m) |
length_t | get_n () const |
Number of decision variables, n. | |
length_t | get_m () const |
Number of constraints, m. | |
real_t | eval_prox_grad_step (real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) const |
void | eval_proj_diff_g (crvec z, rvec p) const |
void | eval_proj_multipliers (rvec y, real_t M) const |
const Box & | get_box_C () const |
const Box & | get_box_D () const |
index_t | eval_inactive_indices_res_lna (real_t γ, crvec x, crvec grad_ψ, rindexvec J) const |
void | check () const |
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 | |
vec | param |
length_t | n |
Number of decision variables, dimension of x. | |
length_t | m |
Number of constraints, dimension of g(x) and z. | |
index_t | penalty_alm_split = 0 |
Components of the constraint function with indices below this number are handled using a quadratic penalty method rather than using an augmented Lagrangian method. | |
Box | C {this->n} |
Constraints of the decision variables, \( x \in C \). | |
Box | D {this->m} |
Other constraints, \( g(x) \in D \). | |
vec | l1_reg {} |
\( \ell_1 \) (1-norm) regularization parameter. | |
Private Types | |
using | Functions = casadi_loader::CasADiFunctionsWithParam< Conf > |
Private Attributes | |
util::copyable_unique_ptr< Functions > | impl |
|
private |
Definition at line 95 of file CasADiProblem.hpp.
|
inherited |
Definition at line 16 of file box-constr-problem.hpp.
CasADiProblem | ( | const std::string & | filename | ) |
Load a problem generated by CasADi (with parameters).
filename | Filename of the shared library to load the functions from. |
The file should contain functions with the names f
, grad_f
, g
and grad_g
. These functions evaluate the objective function, its gradient, the constraints, and the constraint gradient times a vector respectively. For second order solvers, additional functions hess_L
, hess_ψ
, hess_L_prod
and hess_ψ_prod
can be provided to evaluate the Hessian of the (augmented) Lagrangian and Hessian-vector products.
std::invalid_argument | The dimensions of the loaded functions do not match. |
Definition at line 60 of file CasADiProblem.tpp.
|
default |
|
default |
|
defaultnoexcept |
|
default |
|
defaultnoexcept |
void load_numerical_data | ( | const std::filesystem::path & | filepath, |
char | sep = ',' |
||
) |
Load the numerical problem data (bounds and parameters) from a CSV file.
The file should contain 7 rows, with the following contents:
Line endings are encoded using a single line feed (\n
), and the column separator can be specified using the sep
argument.
Definition at line 146 of file CasADiProblem.tpp.
auto eval_f | ( | crvec | x | ) | const |
Definition at line 209 of file CasADiProblem.tpp.
Definition at line 216 of file CasADiProblem.tpp.
Definition at line 222 of file CasADiProblem.tpp.
Definition at line 229 of file CasADiProblem.tpp.
Definition at line 235 of file CasADiProblem.tpp.
Definition at line 240 of file CasADiProblem.tpp.
CasADiProblem< Conf >::real_t eval_ψ_grad_ψ | ( | crvec | x, |
crvec | y, | ||
crvec | Σ, | ||
rvec | grad_ψ, | ||
rvec | work_n, | ||
rvec | work_m | ||
) | const |
Definition at line 258 of file CasADiProblem.tpp.
Definition at line 268 of file CasADiProblem.tpp.
Definition at line 279 of file CasADiProblem.tpp.
Definition at line 291 of file CasADiProblem.tpp.
auto get_jac_g_num_nonzeros |
Definition at line 296 of file CasADiProblem.tpp.
Definition at line 323 of file CasADiProblem.tpp.
auto get_hess_L_num_nonzeros |
Definition at line 331 of file CasADiProblem.tpp.
Definition at line 360 of file CasADiProblem.tpp.
auto get_hess_ψ_num_nonzeros |
Definition at line 371 of file CasADiProblem.tpp.
bool provides_eval_grad_gi |
Definition at line 401 of file CasADiProblem.tpp.
bool provides_eval_jac_g |
Definition at line 405 of file CasADiProblem.tpp.
bool provides_eval_hess_L_prod |
Definition at line 409 of file CasADiProblem.tpp.
bool provides_eval_hess_L |
Definition at line 413 of file CasADiProblem.tpp.
bool provides_eval_hess_ψ_prod |
Definition at line 417 of file CasADiProblem.tpp.
bool provides_eval_hess_ψ |
Definition at line 421 of file CasADiProblem.tpp.
Definition at line 37 of file box-constr-problem.hpp.
|
inlineinherited |
Number of decision variables, n.
Definition at line 60 of file box-constr-problem.hpp.
|
inlineinherited |
Number of constraints, m.
Definition at line 62 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 69 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 92 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 101 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 108 of file box-constr-problem.hpp.
|
inlineinherited |
Definition at line 117 of file box-constr-problem.hpp.
|
inlineinherited |
Definition at line 156 of file box-constr-problem.hpp.
|
inlineinherited |
Definition at line 158 of file box-constr-problem.hpp.
|
inlineinherited |
Definition at line 161 of file box-constr-problem.hpp.
|
inlineinherited |
Definition at line 198 of file box-constr-problem.hpp.
vec param |
Definition at line 21 of file CasADiProblem.hpp.
|
private |
Definition at line 96 of file CasADiProblem.hpp.
|
inherited |
Number of decision variables, dimension of x.
Definition at line 19 of file box-constr-problem.hpp.
|
inherited |
Number of constraints, dimension of g(x) and z.
Definition at line 21 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 27 of file box-constr-problem.hpp.
Constraints of the decision variables, \( x \in C \).
Definition at line 50 of file box-constr-problem.hpp.
Other constraints, \( g(x) \in D \).
Definition at line 52 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 57 of file box-constr-problem.hpp.