#include <alpaqa/problem/type-erased-problem.hpp>
The main polymorphic minimization problem interface.
This class wraps the actual problem implementation class, filling in the missing member functions with sensible defaults, and providing a uniform interface that is used by the solvers.
The problem implementations do not inherit from an abstract base class. Instead, structural typing is used. The ProblemVTable constructor uses reflection to discover which member functions are provided by the problem implementation. See Problem formulations for more information, and C++/CustomCppProblem/main.cpp for an example.
Definition at line 243 of file type-erased-problem.hpp.
Problem dimensions | |
length_t | get_num_variables () const |
[Required] Number of decision variables. | |
length_t | get_num_constraints () const |
[Required] Number of constraints. |
Required cost and constraint functions | |
real_t | eval_objective (crvec x) const |
[Required] Function that evaluates the cost, \( f(x) \) | |
void | eval_objective_gradient (crvec x, rvec grad_fx) const |
[Required] Function that evaluates the gradient of the cost, \( \nabla f(x) \) | |
void | eval_constraints (crvec x, rvec gx) const |
[Required] Function that evaluates the constraints, \( g(x) \) | |
void | eval_constraints_gradient_product (crvec x, crvec y, rvec grad_gxy) const |
[Required] Function that evaluates the gradient of the constraints times a vector, \( \nabla g(x)\,y = \tp{\jac_g(x)}y \) |
Projections onto constraint sets and proximal mappings | |
void | eval_projecting_difference_constraints (crvec z, rvec e) const |
[Required] Function that evaluates the difference between the given point \( z \) and its projection onto the constraint set \( D \). | |
void | eval_projection_multipliers (rvec y, real_t M) const |
[Required] Function that projects the Lagrange multipliers for ALM. | |
real_t | eval_proximal_gradient_step (real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) const |
[Required] Function that computes a proximal gradient step. | |
index_t | eval_inactive_indices_res_lna (real_t γ, crvec x, crvec grad_ψ, rindexvec J) const |
[Optional] Function that computes the inactive indices \( \mathcal J(x) \) for the evaluation of the linear Newton approximation of the residual, as in [4]. |
Constraint sets | |
const Box & | get_variable_bounds () const |
[Optional] Get the rectangular constraint set of the decision variables, \( x \in C \). | |
const Box & | get_general_bounds () const |
[Optional] Get the rectangular constraint set of the general constraint function, \( g(x) \in D \). |
Functions for second-order solvers | |
void | eval_constraints_jacobian (crvec x, rvec J_values) const |
[Optional] Function that evaluates the nonzero values of the Jacobian matrix of the constraints, \( \jac_g(x) \) | |
Sparsity | get_constraints_jacobian_sparsity () const |
[Optional] Function that returns (a view of) the sparsity pattern of the Jacobian of the constraints. | |
void | eval_grad_gi (crvec x, index_t i, rvec grad_gi) const |
[Optional] Function that evaluates the gradient of one specific constraint, \( \nabla g_i(x) \) | |
void | eval_lagrangian_hessian_product (crvec x, crvec y, real_t scale, crvec v, rvec Hv) const |
[Optional] Function that evaluates the Hessian of the Lagrangian multiplied by a vector, \( \nabla_{xx}^2L(x, y)\,v \) | |
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, \( \nabla_{xx}^2L(x, y) \) | |
Sparsity | get_lagrangian_hessian_sparsity () const |
[Optional] Function that returns (a view of) the sparsity pattern of the Hessian of the Lagrangian. | |
void | eval_augmented_lagrangian_hessian_product (crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv) const |
[Optional] Function that evaluates the Hessian of the augmented Lagrangian multiplied by a vector, \( \nabla_{xx}^2L_\Sigma(x, y)\,v \) | |
void | eval_augmented_lagrangian_hessian (crvec x, crvec y, crvec Σ, real_t scale, rvec H_values) const |
[Optional] Function that evaluates the nonzero values of the Hessian of the augmented Lagrangian, \( \nabla_{xx}^2L_\Sigma(x, y) \) | |
Sparsity | get_augmented_lagrangian_hessian_sparsity () const |
[Optional] Function that returns (a view of) the sparsity pattern of the Hessian of the augmented Lagrangian. |
Combined evaluations | |
real_t | eval_objective_and_gradient (crvec x, rvec grad_fx) const |
[Optional] Evaluate both \( f(x) \) and its gradient, \( \nabla f(x) \). | |
real_t | eval_objective_and_constraints (crvec x, rvec g) const |
[Optional] Evaluate both \( f(x) \) and \( g(x) \). | |
void | eval_objective_gradient_and_constraints_gradient_product (crvec x, crvec y, rvec grad_f, rvec grad_gxy) const |
[Optional] Evaluate both \( \nabla f(x) \) and \( \nabla g(x)\,y \). | |
void | eval_lagrangian_gradient (crvec x, crvec y, rvec grad_L, rvec work_n) const |
[Optional] Evaluate the gradient of the Lagrangian \( \nabla_x L(x, y) = \nabla f(x) + \nabla g(x)\,y \) |
Augmented Lagrangian | |
real_t | eval_augmented_lagrangian (crvec x, crvec y, crvec Σ, rvec ŷ) const |
[Optional] Calculate both ψ(x) and the vector ŷ that can later be used to compute ∇ψ. | |
void | eval_augmented_lagrangian_gradient (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const |
[Optional] Calculate the gradient ∇ψ(x). | |
real_t | eval_augmented_lagrangian_and_gradient (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const |
[Optional] Calculate both ψ(x) and its gradient ∇ψ(x). |
Checks | |
void | check () const |
[Optional] Check that the problem formulation is well-defined, the dimensions match, etc. |
Metadata | |
std::string | get_name () const |
[Optional] Get a descriptive name for the problem. |
Querying specialized implementations | |
bool | provides_eval_inactive_indices_res_lna () const |
Returns true if the problem provides an implementation of eval_inactive_indices_res_lna. | |
bool | provides_eval_constraints_jacobian () const |
Returns true if the problem provides an implementation of eval_constraints_jacobian. | |
bool | provides_get_constraints_jacobian_sparsity () const |
Returns true if the problem provides an implementation of get_constraints_jacobian_sparsity. | |
bool | provides_eval_grad_gi () const |
Returns true if the problem provides an implementation of eval_grad_gi. | |
bool | provides_eval_lagrangian_hessian_product () const |
Returns true if the problem provides an implementation of eval_lagrangian_hessian_product. | |
bool | provides_eval_lagrangian_hessian () const |
Returns true if the problem provides an implementation of eval_lagrangian_hessian. | |
bool | provides_get_lagrangian_hessian_sparsity () const |
Returns true if the problem provides an implementation of get_lagrangian_hessian_sparsity. | |
bool | provides_eval_augmented_lagrangian_hessian_product () const |
Returns true if the problem provides an implementation of eval_augmented_lagrangian_hessian_product. | |
bool | provides_eval_augmented_lagrangian_hessian () const |
Returns true if the problem provides an implementation of eval_augmented_lagrangian_hessian. | |
bool | provides_get_augmented_lagrangian_hessian_sparsity () const |
Returns true if the problem provides an implementation of get_augmented_lagrangian_hessian_sparsity. | |
bool | provides_eval_objective_and_gradient () const |
Returns true if the problem provides a specialized implementation of eval_objective_and_gradient, false if it uses the default implementation. | |
bool | provides_eval_objective_and_constraints () const |
Returns true if the problem provides a specialized implementation of eval_objective_and_constraints, false if it uses the default implementation. | |
bool | provides_eval_objective_gradient_and_constraints_gradient_product () const |
Returns true if the problem provides a specialized implementation of eval_objective_gradient_and_constraints_gradient_product, false if it uses the default implementation. | |
bool | provides_eval_lagrangian_gradient () const |
Returns true if the problem provides a specialized implementation of eval_lagrangian_gradient, false if it uses the default implementation. | |
bool | provides_eval_augmented_lagrangian () const |
Returns true if the problem provides a specialized implementation of eval_augmented_lagrangian, false if it uses the default implementation. | |
bool | provides_eval_augmented_lagrangian_gradient () const |
Returns true if the problem provides a specialized implementation of eval_augmented_lagrangian_gradient, false if it uses the default implementation. | |
bool | provides_eval_augmented_lagrangian_and_gradient () const |
Returns true if the problem provides a specialized implementation of eval_augmented_lagrangian_and_gradient, false if it uses the default implementation. | |
bool | provides_get_variable_bounds () const |
Returns true if the problem provides an implementation of get_variable_bounds. | |
bool | provides_get_general_bounds () const |
Returns true if the problem provides an implementation of get_general_bounds. | |
bool | provides_check () const |
Returns true if the problem provides an implementation of check. | |
bool | provides_get_name () const |
Returns true if the problem provides an implementation of get_name. |
Querying available functions | |
bool | supports_eval_augmented_lagrangian_hessian_product () const |
Returns true if eval_augmented_lagrangian_hessian_product can be called. | |
bool | supports_eval_augmented_lagrangian_hessian () const |
Returns true if eval_augmented_lagrangian_hessian can be called. |
Helpers | |
real_t | calc_ŷ_dᵀŷ (rvec g_ŷ, crvec y, crvec Σ) const |
Given g(x), compute the intermediate results ŷ and dᵀŷ that can later be used to compute ψ(x) and ∇ψ(x). |
Public Types | |
using | Box = alpaqa::Box<config_t> |
using | VTable = ProblemVTable<config_t> |
using | allocator_type = Allocator |
using | TypeErased = guanaqo::TypeErased<VTable, allocator_type> |
Static Public Member Functions | |
template<class T, class... Args> | |
static TypeErasedProblem | make (Args &&...args) |
using Box = alpaqa::Box<config_t> |
Definition at line 246 of file type-erased-problem.hpp.
using VTable = ProblemVTable<config_t> |
Definition at line 247 of file type-erased-problem.hpp.
using allocator_type = Allocator |
Definition at line 248 of file type-erased-problem.hpp.
using TypeErased = guanaqo::TypeErased<VTable, allocator_type> |
Definition at line 249 of file type-erased-problem.hpp.
|
inlinestatic |
Definition at line 259 of file type-erased-problem.hpp.
|
nodiscard |
[Required] Number of decision variables.
Definition at line 769 of file type-erased-problem.hpp.
|
nodiscard |
[Required] Number of constraints.
Definition at line 773 of file type-erased-problem.hpp.
|
nodiscard |
[Required] Function that evaluates the cost, \( f(x) \)
[in] | x | Decision variable \( x \in \R^n \) |
Definition at line 798 of file type-erased-problem.hpp.
[Required] Function that evaluates the gradient of the cost, \( \nabla f(x) \)
[in] | x | Decision variable \( x \in \R^n \) |
[out] | grad_fx | Gradient of cost function \( \nabla f(x) \in \R^n \) |
Definition at line 802 of file type-erased-problem.hpp.
[Required] Function that evaluates the constraints, \( g(x) \)
[in] | x | Decision variable \( x \in \R^n \) |
[out] | gx | Value of the constraints \( g(x) \in \R^m \) |
Definition at line 806 of file type-erased-problem.hpp.
void eval_constraints_gradient_product | ( | crvec | x, |
crvec | y, | ||
rvec | grad_gxy ) const |
[Required] Function that evaluates the gradient of the constraints times a vector, \( \nabla g(x)\,y = \tp{\jac_g(x)}y \)
[in] | x | Decision variable \( x \in \R^n \) |
[in] | y | Vector \( y \in \R^m \) to multiply the gradient by |
[out] | grad_gxy | Gradient of the constraints \( \nabla g(x)\,y \in \R^n \) |
Definition at line 810 of file type-erased-problem.hpp.
void eval_projecting_difference_constraints | ( | crvec | z, |
rvec | e ) const |
[Required] Function that evaluates the difference between the given point \( z \) and its projection onto the constraint set \( D \).
[in] | z | Slack variable, \( z \in \R^m \) |
[out] | e | The difference relative to its projection, \( e = z - \Pi_D(z) \in \R^m \) |
z
and e
can refer to the same vector. Definition at line 778 of file type-erased-problem.hpp.
[Required] Function that projects the Lagrange multipliers for ALM.
[in,out] | y | Multipliers, \( y \leftarrow \Pi_Y(y) \in \R^m \) |
[in] | M | The radius/size of the set \( Y \). See max_multiplier. |
Definition at line 783 of file type-erased-problem.hpp.
auto eval_proximal_gradient_step | ( | real_t | γ, |
crvec | x, | ||
crvec | grad_ψ, | ||
rvec | x̂, | ||
rvec | p ) const |
[Required] Function that computes a proximal gradient step.
[in] | γ | Step size, \( \gamma \in \R_{>0} \) |
[in] | x | Decision variable \( x \in \R^n \) |
[in] | grad_ψ | Gradient of the subproblem cost, \( \nabla\psi(x) \in \R^n \) |
[out] | x̂ | Next proximal gradient iterate, \( \hat x = T_\gamma(x) = \prox_{\gamma h}(x - \gamma\nabla\psi(x)) \in \R^n \) |
[out] | p | The proximal gradient step, \( p = \hat x - x \in \R^n \) |
Definition at line 787 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Function that computes the inactive indices \( \mathcal J(x) \) for the evaluation of the linear Newton approximation of the residual, as in [4].
[in] | γ | Step size, \( \gamma \in \R_{>0} \) |
[in] | x | Decision variable \( x \in \R^n \) |
[in] | grad_ψ | Gradient of the subproblem cost, \( \nabla\psi(x) \in \R^n \) |
[out] | J | The indices of the components of \( x \) that are in the index set \( \mathcal J(x) \). In ascending order, at most n. |
For example, in the case of box constraints, we have
\[ \mathcal J(x) \defeq \defset{i \in \N_{[0, n-1]}}{\underline x_i \lt x_i - \gamma\nabla_{\!x_i}\psi(x) \lt \overline x_i}. \]
Definition at line 793 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Get the rectangular constraint set of the decision variables, \( x \in C \).
Definition at line 900 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Get the rectangular constraint set of the general constraint function, \( g(x) \in D \).
Definition at line 904 of file type-erased-problem.hpp.
void eval_constraints_jacobian | ( | crvec | x, |
rvec | J_values ) const |
[Optional] Function that evaluates the nonzero values of the Jacobian matrix of the constraints, \( \jac_g(x) \)
[in] | x | Decision variable \( x \in \R^n \) |
[out] | J_values | Nonzero values of the Jacobian \( \jac_g(x) \in \R^{m\times n} \) |
Required for second-order solvers only.
Definition at line 819 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Function that returns (a view of) the sparsity pattern of the Jacobian of the constraints.
Required for second-order solvers only.
Definition at line 823 of file type-erased-problem.hpp.
[Optional] Function that evaluates the gradient of one specific constraint, \( \nabla g_i(x) \)
[in] | x | Decision variable \( x \in \R^n \) |
[in] | i | Which constraint \( 0 \le i \lt m \) |
[out] | grad_gi | Gradient of the constraint \( \nabla g_i(x) \in \R^n \) |
Required for second-order solvers only.
Definition at line 815 of file type-erased-problem.hpp.
void eval_lagrangian_hessian_product | ( | crvec | x, |
crvec | y, | ||
real_t | scale, | ||
crvec | v, | ||
rvec | Hv ) const |
[Optional] Function that evaluates the Hessian of the Lagrangian multiplied by a vector, \( \nabla_{xx}^2L(x, y)\,v \)
[in] | x | Decision variable \( x \in \R^n \) |
[in] | y | Lagrange multipliers \( y \in \R^m \) |
[in] | scale | Scale factor for the cost function. |
[in] | v | Vector to multiply by \( v \in \R^n \) |
[out] | Hv | Hessian-vector product \( \nabla_{xx}^2 L(x, y)\,v \in \R^{n} \) |
Required for second-order solvers only.
Definition at line 827 of file type-erased-problem.hpp.
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, \( \nabla_{xx}^2L(x, y) \)
[in] | x | Decision variable \( x \in \R^n \) |
[in] | y | Lagrange multipliers \( y \in \R^m \) |
[in] | scale | Scale factor for the cost function. |
[out] | H_values | Nonzero values of the Hessian \( \nabla_{xx}^2 L(x, y) \in \R^{n\times n} \). |
Required for second-order solvers only.
Definition at line 833 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Function that returns (a view of) the sparsity pattern of the Hessian of the Lagrangian.
Required for second-order solvers only.
Definition at line 838 of file type-erased-problem.hpp.
void eval_augmented_lagrangian_hessian_product | ( | crvec | x, |
crvec | y, | ||
crvec | Σ, | ||
real_t | scale, | ||
crvec | v, | ||
rvec | Hv ) const |
[Optional] Function that evaluates the Hessian of the augmented Lagrangian multiplied by a vector, \( \nabla_{xx}^2L_\Sigma(x, y)\,v \)
[in] | x | Decision variable \( x \in \R^n \) |
[in] | y | Lagrange multipliers \( y \in \R^m \) |
[in] | Σ | Penalty weights \( \Sigma \) |
[in] | scale | Scale factor for the cost function. |
[in] | v | Vector to multiply by \( v \in \R^n \) |
[out] | Hv | Hessian-vector product \( \nabla_{xx}^2 L_\Sigma(x, y)\,v \in \R^{n} \) |
Required for second-order solvers only.
Definition at line 842 of file type-erased-problem.hpp.
void eval_augmented_lagrangian_hessian | ( | crvec | x, |
crvec | y, | ||
crvec | Σ, | ||
real_t | scale, | ||
rvec | H_values ) const |
[Optional] Function that evaluates the nonzero values of the Hessian of the augmented Lagrangian, \( \nabla_{xx}^2L_\Sigma(x, y) \)
[in] | x | Decision variable \( x \in \R^n \) |
[in] | y | Lagrange multipliers \( y \in \R^m \) |
[in] | Σ | Penalty weights \( \Sigma \) |
[in] | scale | Scale factor for the cost function. |
[out] | H_values | Nonzero values of the Hessian \( \nabla_{xx}^2 L_\Sigma(x, y) \in \R^{n\times n} \) |
Required for second-order solvers only.
Definition at line 847 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Function that returns (a view of) the sparsity pattern of the Hessian of the augmented Lagrangian.
Required for second-order solvers only.
Definition at line 853 of file type-erased-problem.hpp.
auto eval_objective_and_gradient | ( | crvec | x, |
rvec | grad_fx ) const |
[Optional] Evaluate both \( f(x) \) and its gradient, \( \nabla f(x) \).
Definition at line 858 of file type-erased-problem.hpp.
auto eval_objective_and_constraints | ( | crvec | x, |
rvec | g ) const |
[Optional] Evaluate both \( f(x) \) and \( g(x) \).
Definition at line 863 of file type-erased-problem.hpp.
void eval_objective_gradient_and_constraints_gradient_product | ( | crvec | x, |
crvec | y, | ||
rvec | grad_f, | ||
rvec | grad_gxy ) const |
[Optional] Evaluate both \( \nabla f(x) \) and \( \nabla g(x)\,y \).
Definition at line 868 of file type-erased-problem.hpp.
void eval_lagrangian_gradient | ( | crvec | x, |
crvec | y, | ||
rvec | grad_L, | ||
rvec | work_n ) const |
[Optional] Evaluate the gradient of the Lagrangian \( \nabla_x L(x, y) = \nabla f(x) + \nabla g(x)\,y \)
Definition at line 874 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Calculate both ψ(x) and the vector ŷ that can later be used to compute ∇ψ.
\[ \psi(x) = f(x) + \tfrac{1}{2} \text{dist}_\Sigma^2\left(g(x) + \Sigma^{-1}y,\;D\right) \]
\[ \hat y = \Sigma\, \left(g(x) + \Sigma^{-1}y - \Pi_D\left(g(x) + \Sigma^{-1}y\right)\right) \]
[in] | x | Decision variable \( x \) |
[in] | y | Lagrange multipliers \( y \) |
[in] | Σ | Penalty weights \( \Sigma \) |
[out] | ŷ | \( \hat y \) |
Definition at line 879 of file type-erased-problem.hpp.
void eval_augmented_lagrangian_gradient | ( | crvec | x, |
crvec | y, | ||
crvec | Σ, | ||
rvec | grad_ψ, | ||
rvec | work_n, | ||
rvec | work_m ) const |
[Optional] Calculate the gradient ∇ψ(x).
\[ \nabla \psi(x) = \nabla f(x) + \nabla g(x)\,\hat y(x) \]
[in] | x | Decision variable \( x \) |
[in] | y | Lagrange multipliers \( y \) |
[in] | Σ | Penalty weights \( \Sigma \) |
[out] | grad_ψ | \( \nabla \psi(x) \) |
work_n | Dimension \( n \) | |
work_m | Dimension \( m \) |
Definition at line 884 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Calculate both ψ(x) and its gradient ∇ψ(x).
\[ \psi(x) = f(x) + \tfrac{1}{2} \text{dist}_\Sigma^2\left(g(x) + \Sigma^{-1}y,\;D\right) \]
\[ \nabla \psi(x) = \nabla f(x) + \nabla g(x)\,\hat y(x) \]
[in] | x | Decision variable \( x \) |
[in] | y | Lagrange multipliers \( y \) |
[in] | Σ | Penalty weights \( \Sigma \) |
[out] | grad_ψ | \( \nabla \psi(x) \) |
work_n | Dimension \( n \) | |
work_m | Dimension \( m \) |
Definition at line 891 of file type-erased-problem.hpp.
void check | ( | ) | const |
[Optional] Check that the problem formulation is well-defined, the dimensions match, etc.
Throws an exception if this is not the case.
Definition at line 908 of file type-erased-problem.hpp.
|
nodiscard |
[Optional] Get a descriptive name for the problem.
Definition at line 912 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of eval_inactive_indices_res_lna.
Definition at line 601 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of eval_constraints_jacobian.
Definition at line 606 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of get_constraints_jacobian_sparsity.
Definition at line 611 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of eval_grad_gi.
Definition at line 617 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of eval_lagrangian_hessian_product.
Definition at line 622 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of eval_lagrangian_hessian.
Definition at line 628 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of get_lagrangian_hessian_sparsity.
Definition at line 633 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of eval_augmented_lagrangian_hessian_product.
Definition at line 639 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of eval_augmented_lagrangian_hessian.
Definition at line 645 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of get_augmented_lagrangian_hessian_sparsity.
Definition at line 651 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides a specialized implementation of eval_objective_and_gradient, false if it uses the default implementation.
Definition at line 657 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides a specialized implementation of eval_objective_and_constraints, false if it uses the default implementation.
Definition at line 662 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides a specialized implementation of eval_objective_gradient_and_constraints_gradient_product, false if it uses the default implementation.
Definition at line 668 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides a specialized implementation of eval_lagrangian_gradient, false if it uses the default implementation.
Definition at line 674 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides a specialized implementation of eval_augmented_lagrangian, false if it uses the default implementation.
Definition at line 679 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides a specialized implementation of eval_augmented_lagrangian_gradient, false if it uses the default implementation.
Definition at line 684 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides a specialized implementation of eval_augmented_lagrangian_and_gradient, false if it uses the default implementation.
Definition at line 690 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of get_variable_bounds.
Definition at line 696 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of get_general_bounds.
Definition at line 701 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of check.
Definition at line 705 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if the problem provides an implementation of get_name.
Definition at line 707 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if eval_augmented_lagrangian_hessian_product can be called.
Definition at line 717 of file type-erased-problem.hpp.
|
inlinenodiscard |
Returns true if eval_augmented_lagrangian_hessian can be called.
Definition at line 722 of file type-erased-problem.hpp.
Given g(x), compute the intermediate results ŷ and dᵀŷ that can later be used to compute ψ(x) and ∇ψ(x).
Computes the result using the following algorithm:
\[ \begin{aligned} \zeta &= g(x) + \Sigma^{-1} y \\[] d &= \zeta - \Pi_D(\zeta) = \operatorname{eval\_proj\_diff\_g}(\zeta, \zeta) \\[] \hat y &= \Sigma d \\[] \end{aligned} \]
[in,out] | g_ŷ | Input \( g(x) \), outputs \( \hat y \) |
[in] | y | Lagrange multipliers \( y \) |
[in] | Σ | Penalty weights \( \Sigma \) |
Definition at line 896 of file type-erased-problem.hpp.