template<Config Conf = EigenConfigd>
class alpaqa::CasADiProblem< Conf >
Problem definition for a CasADi problem, loaded from a DLL.
- Examples
- C++/CasADi/Rosenbrock/main.cpp.
Definition at line 47 of file CasADiProblem.hpp.
|
| CasADiProblem (const std::string &filename, DynamicLoadFlags dl_flags={}) |
| Load a problem generated by CasADi (with parameters).
|
| CasADiProblem (const SerializedCasADiFunctions &functions) |
| Create a problem from a collection of serialized CasADi functions.
|
| CasADiProblem (const CasADiFunctions &functions) |
| Create a problem from a collection of CasADi functions.
|
| ~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_objective (crvec x) const |
void | eval_objective_gradient (crvec x, rvec grad_fx) const |
real_t | eval_objective_and_gradient (crvec x, rvec grad_fx) const |
void | eval_constraints (crvec x, rvec g) const |
void | eval_constraints_gradient_product (crvec x, crvec y, rvec grad_gxy) const |
void | eval_augmented_lagrangian_gradient (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const |
real_t | eval_augmented_lagrangian_and_gradient (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const |
void | eval_lagrangian_gradient (crvec x, crvec y, rvec grad_L, rvec work_n) const |
real_t | eval_augmented_lagrangian (crvec x, crvec y, crvec Σ, rvec ŷ) const |
void | eval_grad_gi (crvec x, index_t i, rvec grad_i) const |
Sparsity | get_constraints_jacobian_sparsity () const |
void | eval_constraints_jacobian (crvec x, rvec J_values) const |
void | eval_lagrangian_hessian_product (crvec x, crvec y, real_t scale, crvec v, rvec Hv) const |
Sparsity | get_lagrangian_hessian_sparsity () const |
void | eval_lagrangian_hessian (crvec x, crvec y, real_t scale, rvec H_values) const |
void | eval_augmented_lagrangian_hessian_product (crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv) const |
Sparsity | get_augmented_lagrangian_hessian_sparsity () const |
void | eval_augmented_lagrangian_hessian (crvec x, crvec y, crvec Σ, real_t scale, rvec H_values) const |
bool | provides_eval_lagrangian_gradient () const |
bool | provides_eval_augmented_lagrangian () const |
bool | provides_eval_augmented_lagrangian_gradient () const |
bool | provides_eval_augmented_lagrangian_and_gradient () const |
bool | provides_eval_grad_gi () const |
bool | provides_eval_constraints_jacobian () const |
bool | provides_eval_lagrangian_hessian_product () const |
bool | provides_eval_lagrangian_hessian () const |
bool | provides_eval_augmented_lagrangian_hessian_product () const |
bool | provides_eval_augmented_lagrangian_hessian () const |
std::string | get_name () const |
void | resize (length_t num_variables, length_t num_constraints) |
| Change the dimensions of the problem (number of decision variables and number of constraints).
|
length_t | get_num_variables () const |
| Number of decision variables \( n \), num_variables.
|
length_t | get_num_constraints () const |
| Number of constraints \( m \), num_constraints.
|
real_t | eval_proximal_gradient_step (real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) const |
void | eval_projecting_difference_constraints (crvec z, rvec p) const |
void | eval_projection_multipliers (rvec y, real_t M) const |
const Box & | get_variable_bounds () const |
const Box & | get_general_bounds () const |
bool | provides_get_variable_bounds () const |
| Only supported if the ℓ₁-regularization term is zero.
|
index_t | eval_inactive_indices_res_lna (real_t γ, crvec x, crvec grad_ψ, rindexvec J) const |
void | check () const |
|
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) |
template<Config Conf>
CasADiProblem |
( |
const std::string & | filename, |
|
|
DynamicLoadFlags | dl_flags = {} ) |
Load a problem generated by CasADi (with parameters).
- Parameters
-
filename | Filename of the shared library to load the functions from. |
dl_flags | Flags passed to dlopen when loading the problem. |
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.
- Exceptions
-
std::invalid_argument | The dimensions of the loaded functions do not match. |
Definition at line 140 of file CasADiProblem.tpp.
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 115 of file box-constr-problem.hpp.
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 124 of file box-constr-problem.hpp.
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 132 of file box-constr-problem.hpp.