alpaqa 1.0.0a11
Nonconvex constrained optimization
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Attributes | List of all members
CUTEstProblem Class Reference

#include <alpaqa/cutest/cutest-loader.hpp>

Detailed Description

Wrapper for CUTEst problems loaded from an external shared library.

Definition at line 16 of file cutest-loader.hpp.

+ Inheritance diagram for CUTEstProblem:
+ Collaboration diagram for CUTEstProblem:

Classes

struct  Report
 The report generated by CUTEst. More...
 

Public Types

using Box = alpaqa::Box< config_t >
 

Public Member Functions

 CUTEstProblem (const char *so_fname, const char *outsdif_fname, bool sparse=false)
 Load a CUTEst problem from the given shared library and OUTSDIF.d file.
 
 CUTEstProblem (const CUTEstProblem &)
 
CUTEstProblemoperator= (const CUTEstProblem &)
 
 CUTEstProblem (CUTEstProblem &&) noexcept
 
CUTEstProblemoperator= (CUTEstProblem &&) noexcept
 
 ~CUTEstProblem ()
 
Report get_report () const
 
std::ostream & format_report (std::ostream &os, const Report &r) const
 
std::ostream & format_report (std::ostream &os) const
 
real_t eval_f (crvec x) const
 
void eval_grad_f (crvec x, rvec grad_fx) const
 
void eval_g (crvec x, rvec gx) const
 
void eval_grad_g_prod (crvec x, crvec y, rvec grad_gxy) const
 
void eval_jac_g (crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values) const
 
length_t get_jac_g_num_nonzeros () const
 
void eval_grad_gi (crvec x, index_t i, rvec grad_gi) const
 
void eval_hess_L_prod (crvec x, crvec y, real_t scale, crvec v, rvec Hv) const
 
void eval_hess_L (crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values) const
 
length_t get_hess_L_num_nonzeros () const
 
void eval_hess_ψ_prod (crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv) const
 
real_t eval_f_grad_f (crvec x, rvec grad_fx) const
 
real_t eval_f_g (crvec x, rvec g) const
 
void eval_grad_L (crvec x, crvec y, rvec grad_L, rvec work_n) const
 
void resize (length_t n, length_t m)
 Change the dimensions of the problem (number of decision variables and number of constaints).
 
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 Boxget_box_C () const
 
const Boxget_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

std::string name = "<UNKNOWN>"
 Problem name.
 
vec x0
 Initial value of decision variables.
 
vec y0
 Initial value of Lagrange multipliers.
 
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

util::copyable_unique_ptr< class CUTEstLoaderimpl
 
bool sparse = false
 
int nnz_H = -1
 
int nnz_J = -1
 
Eigen::VectorX< int > H_row
 
Eigen::VectorX< int > H_col
 
Eigen::VectorX< int > J_row
 
Eigen::VectorX< int > J_col
 
vec H_work
 
vec J_work
 
indexvec H_perm
 
indexvec J_perm
 

Class Documentation

◆ alpaqa::CUTEstProblem::Report

struct alpaqa::CUTEstProblem::Report
+ Collaboration diagram for CUTEstProblem::Report:
Class Members
Calls calls Function call counters.
double time_setup = 0 CPU time (in seconds) for CUTEST_csetup.
double time = 0 CPU time (in seconds) since the end of CUTEST_csetup.

Member Typedef Documentation

◆ Box

using Box = alpaqa::Box<config_t>
inherited

Definition at line 19 of file box-constr-problem.hpp.

Constructor & Destructor Documentation

◆ CUTEstProblem() [1/3]

CUTEstProblem ( const char *  so_fname,
const char *  outsdif_fname,
bool  sparse = false 
)

Load a CUTEst problem from the given shared library and OUTSDIF.d file.

Definition at line 242 of file cutest-loader.cpp.

◆ CUTEstProblem() [2/3]

CUTEstProblem ( const CUTEstProblem )
default

◆ CUTEstProblem() [3/3]

CUTEstProblem ( CUTEstProblem &&  )
defaultnoexcept

◆ ~CUTEstProblem()

~CUTEstProblem ( )
default

Member Function Documentation

◆ operator=() [1/2]

CUTEstProblem & operator= ( const CUTEstProblem )
default

◆ operator=() [2/2]

CUTEstProblem & operator= ( CUTEstProblem &&  )
defaultnoexcept

◆ get_report()

auto get_report ( ) const

Definition at line 260 of file cutest-loader.cpp.

◆ format_report() [1/2]

std::ostream & format_report ( std::ostream &  os,
const Report r 
) const

Definition at line 544 of file cutest-loader.cpp.

◆ format_report() [2/2]

std::ostream & format_report ( std::ostream &  os) const

◆ eval_f()

auto eval_f ( crvec  x) const

Definition at line 280 of file cutest-loader.cpp.

◆ eval_grad_f()

void eval_grad_f ( crvec  x,
rvec  grad_fx 
) const

Definition at line 288 of file cutest-loader.cpp.

◆ eval_g()

void eval_g ( crvec  x,
rvec  gx 
) const

Definition at line 296 of file cutest-loader.cpp.

+ Here is the caller graph for this function:

◆ eval_grad_g_prod()

void eval_grad_g_prod ( crvec  x,
crvec  y,
rvec  grad_gxy 
) const

Definition at line 305 of file cutest-loader.cpp.

◆ eval_jac_g()

void eval_jac_g ( crvec  x,
rindexvec  inner_idx,
rindexvec  outer_ptr,
rvec  J_values 
) const

Definition at line 317 of file cutest-loader.cpp.

◆ get_jac_g_num_nonzeros()

auto get_jac_g_num_nonzeros ( ) const

Definition at line 366 of file cutest-loader.cpp.

◆ eval_grad_gi()

void eval_grad_gi ( crvec  x,
index_t  i,
rvec  grad_gi 
) const

Definition at line 381 of file cutest-loader.cpp.

◆ eval_hess_L_prod()

void eval_hess_L_prod ( crvec  x,
crvec  y,
real_t  scale,
crvec  v,
rvec  Hv 
) const

Definition at line 388 of file cutest-loader.cpp.

+ Here is the caller graph for this function:

◆ eval_hess_L()

void eval_hess_L ( crvec  x,
crvec  y,
real_t  scale,
rindexvec  inner_idx,
rindexvec  outer_ptr,
rvec  H_values 
) const

Definition at line 448 of file cutest-loader.cpp.

◆ get_hess_L_num_nonzeros()

auto get_hess_L_num_nonzeros ( ) const

Definition at line 503 of file cutest-loader.cpp.

◆ eval_hess_ψ_prod()

void eval_hess_ψ_prod ( crvec  x,
crvec  y,
crvec  Σ,
real_t  scale,
crvec  v,
rvec  Hv 
) const

Definition at line 406 of file cutest-loader.cpp.

+ Here is the call graph for this function:

◆ eval_f_grad_f()

auto eval_f_grad_f ( crvec  x,
rvec  grad_fx 
) const

Definition at line 517 of file cutest-loader.cpp.

◆ eval_f_g()

auto eval_f_g ( crvec  x,
rvec  g 
) const

Definition at line 526 of file cutest-loader.cpp.

◆ eval_grad_L()

void eval_grad_L ( crvec  x,
crvec  y,
rvec  grad_L,
rvec  work_n 
) const

Definition at line 534 of file cutest-loader.cpp.

◆ resize()

void resize ( length_t  n,
length_t  m 
)
inlineinherited

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.

◆ get_n()

length_t get_n ( ) const
inlineinherited

Number of decision variables, n.

Definition at line 75 of file box-constr-problem.hpp.

◆ get_m()

length_t get_m ( ) const
inlineinherited

Number of constraints, m.

Definition at line 77 of file box-constr-problem.hpp.

◆ eval_proj_grad_step_box()

static real_t eval_proj_grad_step_box ( const Box C,
real_t  γ,
crvec  x,
crvec  grad_ψ,
rvec  ,
rvec  p 
)
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.

◆ eval_prox_grad_step_box_l1_impl()

static void eval_prox_grad_step_box_l1_impl ( const Box C,
const auto &  λ,
real_t  γ,
crvec  x,
crvec  grad_ψ,
rvec  ,
rvec  p 
)
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.

◆ eval_prox_grad_step_box_l1()

static real_t eval_prox_grad_step_box_l1 ( const Box C,
const auto &  λ,
real_t  γ,
crvec  x,
crvec  grad_ψ,
rvec  ,
rvec  p 
)
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.

◆ eval_prox_grad_step_box_l1_scal()

static real_t eval_prox_grad_step_box_l1_scal ( const Box C,
real_t  λ,
real_t  γ,
crvec  x,
crvec  grad_ψ,
rvec  ,
rvec  p 
)
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.

◆ eval_prox_grad_step()

real_t eval_prox_grad_step ( real_t  γ,
crvec  x,
crvec  grad_ψ,
rvec  ,
rvec  p 
) const
inlineinherited

◆ eval_proj_diff_g()

void eval_proj_diff_g ( crvec  z,
rvec  p 
) const
inlineinherited
See also
TypeErasedProblem::eval_proj_diff_g

Definition at line 142 of file box-constr-problem.hpp.

◆ eval_proj_multipliers_box()

static void eval_proj_multipliers_box ( const Box D,
rvec  y,
real_t  M,
index_t  penalty_alm_split 
)
inlinestaticinherited

Definition at line 144 of file box-constr-problem.hpp.

◆ eval_proj_multipliers()

void eval_proj_multipliers ( rvec  y,
real_t  M 
) const
inlineinherited

◆ get_box_C()

const Box & get_box_C ( ) const
inlineinherited
See also
TypeErasedProblem::get_box_C

Definition at line 171 of file box-constr-problem.hpp.

◆ get_box_D()

const Box & get_box_D ( ) const
inlineinherited
See also
TypeErasedProblem::get_box_D

Definition at line 173 of file box-constr-problem.hpp.

◆ eval_inactive_indices_res_lna()

index_t eval_inactive_indices_res_lna ( real_t  γ,
crvec  x,
crvec  grad_ψ,
rindexvec  J 
) const
inlineinherited

◆ check()

void check ( ) const
inlineinherited
See also
TypeErasedProblem::check

Definition at line 213 of file box-constr-problem.hpp.

Member Data Documentation

◆ name

std::string name = "<UNKNOWN>"

Problem name.

Definition at line 70 of file cutest-loader.hpp.

◆ x0

vec x0

Initial value of decision variables.

Definition at line 71 of file cutest-loader.hpp.

◆ y0

vec y0

Initial value of Lagrange multipliers.

Definition at line 72 of file cutest-loader.hpp.

◆ impl

Definition at line 75 of file cutest-loader.hpp.

◆ sparse

bool sparse = false
private

Definition at line 76 of file cutest-loader.hpp.

◆ nnz_H

int nnz_H = -1
mutableprivate

Definition at line 77 of file cutest-loader.hpp.

◆ nnz_J

int nnz_J = -1
mutableprivate

Definition at line 78 of file cutest-loader.hpp.

◆ H_row

Eigen::VectorX<int> H_row
mutableprivate

Definition at line 79 of file cutest-loader.hpp.

◆ H_col

Eigen::VectorX<int> H_col
private

Definition at line 79 of file cutest-loader.hpp.

◆ J_row

Eigen::VectorX<int> J_row
private

Definition at line 79 of file cutest-loader.hpp.

◆ J_col

Eigen::VectorX<int> J_col
private

Definition at line 79 of file cutest-loader.hpp.

◆ H_work

vec H_work
mutableprivate

Definition at line 80 of file cutest-loader.hpp.

◆ J_work

vec J_work
private

Definition at line 80 of file cutest-loader.hpp.

◆ H_perm

indexvec H_perm
mutableprivate

Definition at line 81 of file cutest-loader.hpp.

◆ J_perm

indexvec J_perm
private

Definition at line 81 of file cutest-loader.hpp.

◆ n

length_t n
inherited

Number of decision variables, dimension of x.

Definition at line 22 of file box-constr-problem.hpp.

◆ m

length_t m
inherited

Number of constraints, dimension of g(x) and z.

Definition at line 24 of file box-constr-problem.hpp.

◆ C

Box C
inherited

Constraints of the decision variables, \( x \in C \).

Definition at line 59 of file box-constr-problem.hpp.

◆ D

Box D
inherited

Other constraints, \( g(x) \in D \).

Definition at line 61 of file box-constr-problem.hpp.

◆ l1_reg

vec l1_reg
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.

◆ penalty_alm_split

index_t penalty_alm_split
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.


The documentation for this class was generated from the following files: