alpaqa 1.0.0a18
Nonconvex constrained optimization
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
DLControlProblem Class Reference

#include <alpaqa/dl/dl-problem.hpp>

Detailed Description

Class that loads an optimal control problem using dlopen.

The shared library should export a C function with the name function_name that accepts a void pointer with user data, and returns a struct of type alpaqa_control_problem_register_t that contains all data to represent the problem, as well as function pointers for all required operations.

Note
Copies are shallow, they all share the same problem instance, take that into account when using multiple threads.
See also
TypeErasedControlProblem

Definition at line 238 of file dl-problem.hpp.

+ Collaboration diagram for DLControlProblem:

Public Types

using Box = alpaqa::Box< config_t >
 
using instance_t = ExtraFuncs::instance_t
 

Public Member Functions

 DLControlProblem (const std::filesystem::path &so_filename, const std::string &function_name="register_alpaqa_control_problem", alpaqa_register_arg_t user_param={})
 Load a problem from a shared library.
 
length_t get_N () const
 
length_t get_nx () const
 
length_t get_nu () const
 
length_t get_nh () const
 
length_t get_nh_N () const
 
length_t get_nc () const
 
length_t get_nc_N () const
 
void check () const
 
void get_U (Box &U) const
 
void get_D (Box &D) const
 
void get_D_N (Box &D) const
 
void get_x_init (rvec x_init) const
 
void eval_f (index_t timestep, crvec x, crvec u, rvec fxu) const
 
void eval_jac_f (index_t timestep, crvec x, crvec u, rmat J_fxu) const
 
void eval_grad_f_prod (index_t timestep, crvec x, crvec u, crvec p, rvec grad_fxu_p) const
 
void eval_h (index_t timestep, crvec x, crvec u, rvec h) const
 
void eval_h_N (crvec x, rvec h) const
 
real_t eval_l (index_t timestep, crvec h) const
 
real_t eval_l_N (crvec h) const
 
void eval_qr (index_t timestep, crvec xu, crvec h, rvec qr) const
 
void eval_q_N (crvec x, crvec h, rvec q) const
 
void eval_add_Q (index_t timestep, crvec xu, crvec h, rmat Q) const
 
void eval_add_Q_N (crvec x, crvec h, rmat Q) const
 
void eval_add_R_masked (index_t timestep, crvec xu, crvec h, crindexvec mask, rmat R, rvec work) const
 
void eval_add_S_masked (index_t timestep, crvec xu, crvec h, crindexvec mask, rmat S, rvec work) const
 
void eval_add_R_prod_masked (index_t timestep, crvec xu, crvec h, crindexvec mask_J, crindexvec mask_K, crvec v, rvec out, rvec work) const
 
void eval_add_S_prod_masked (index_t timestep, crvec xu, crvec h, crindexvec mask_K, crvec v, rvec out, rvec work) const
 
length_t get_R_work_size () const
 
length_t get_S_work_size () const
 
void eval_constr (index_t timestep, crvec x, rvec c) const
 
void eval_constr_N (crvec x, rvec c) const
 
void eval_grad_constr_prod (index_t timestep, crvec x, crvec p, rvec grad_cx_p) const
 
void eval_grad_constr_prod_N (crvec x, crvec p, rvec grad_cx_p) const
 
void eval_add_gn_hess_constr (index_t timestep, crvec x, crvec M, rmat out) const
 
void eval_add_gn_hess_constr_N (crvec x, crvec M, rmat out) const
 
bool provides_get_D () const
 
bool provides_get_D_N () const
 
bool provides_eval_add_Q_N () const
 
bool provides_eval_add_R_prod_masked () const
 
bool provides_eval_add_S_prod_masked () const
 
bool provides_get_R_work_size () const
 
bool provides_get_S_work_size () const
 
bool provides_eval_constr () const
 
bool provides_eval_constr_N () const
 
bool provides_eval_grad_constr_prod () const
 
bool provides_eval_grad_constr_prod_N () const
 
bool provides_eval_add_gn_hess_constr () const
 
bool provides_eval_add_gn_hess_constr_N () const
 
template<class Signature , class... Args>
decltype(autocall_extra_func (const std::string &name, Args &&...args) const
 
template<class Signature , class... Args>
decltype(autocall_extra_func (const std::string &name, Args &&...args)
 

Private Attributes

std::shared_ptr< voidhandle
 Handle to the shared module defining the problem.
 
std::shared_ptr< voidinstance
 Problem instance created by the registration function, including the deleter to destroy it.
 
control_problem_functions_tfunctions = 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.
 

Member Typedef Documentation

◆ Box

using Box = alpaqa::Box<config_t>

Definition at line 241 of file dl-problem.hpp.

◆ instance_t

using instance_t = ExtraFuncs::instance_t

Definition at line 321 of file dl-problem.hpp.

Constructor & Destructor Documentation

◆ DLControlProblem()

DLControlProblem ( const std::filesystem::path &  so_filename,
const std::string &  function_name = "register_alpaqa_control_problem",
alpaqa_register_arg_t  user_param = {} 
)

Load a problem from a shared library.

Parameters
so_filenameFilename of the shared library to load.
function_nameName of the problem registration function. Should have signature alpaqa_control_problem_register_t(alpaqa_register_arg_t user_param).
user_paramPointer to custom user data to pass to the registration function.

Definition at line 302 of file dl-problem.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ get_N()

length_t get_N ( ) const
inline

Definition at line 267 of file dl-problem.hpp.

◆ get_nx()

length_t get_nx ( ) const
inline

Definition at line 268 of file dl-problem.hpp.

◆ get_nu()

length_t get_nu ( ) const
inline

Definition at line 269 of file dl-problem.hpp.

◆ get_nh()

length_t get_nh ( ) const
inline

Definition at line 270 of file dl-problem.hpp.

◆ get_nh_N()

length_t get_nh_N ( ) const
inline

Definition at line 271 of file dl-problem.hpp.

◆ get_nc()

length_t get_nc ( ) const
inline

Definition at line 272 of file dl-problem.hpp.

◆ get_nc_N()

length_t get_nc_N ( ) const
inline

Definition at line 273 of file dl-problem.hpp.

◆ check()

void check ( ) const
inline

Definition at line 275 of file dl-problem.hpp.

◆ get_U()

auto get_U ( Box U) const

Definition at line 350 of file dl-problem.cpp.

◆ get_D()

auto get_D ( Box D) const

Definition at line 351 of file dl-problem.cpp.

◆ get_D_N()

auto get_D_N ( Box D) const

Definition at line 352 of file dl-problem.cpp.

◆ get_x_init()

auto get_x_init ( rvec  x_init) const

Definition at line 353 of file dl-problem.cpp.

◆ eval_f()

auto eval_f ( index_t  timestep,
crvec  x,
crvec  u,
rvec  fxu 
) const

Definition at line 354 of file dl-problem.cpp.

◆ eval_jac_f()

auto eval_jac_f ( index_t  timestep,
crvec  x,
crvec  u,
rmat  J_fxu 
) const

Definition at line 355 of file dl-problem.cpp.

◆ eval_grad_f_prod()

auto eval_grad_f_prod ( index_t  timestep,
crvec  x,
crvec  u,
crvec  p,
rvec  grad_fxu_p 
) const

Definition at line 356 of file dl-problem.cpp.

◆ eval_h()

auto eval_h ( index_t  timestep,
crvec  x,
crvec  u,
rvec  h 
) const

Definition at line 357 of file dl-problem.cpp.

◆ eval_h_N()

auto eval_h_N ( crvec  x,
rvec  h 
) const

Definition at line 358 of file dl-problem.cpp.

◆ eval_l()

auto eval_l ( index_t  timestep,
crvec  h 
) const

Definition at line 359 of file dl-problem.cpp.

◆ eval_l_N()

auto eval_l_N ( crvec  h) const

Definition at line 360 of file dl-problem.cpp.

◆ eval_qr()

auto eval_qr ( index_t  timestep,
crvec  xu,
crvec  h,
rvec  qr 
) const

Definition at line 361 of file dl-problem.cpp.

◆ eval_q_N()

auto eval_q_N ( crvec  x,
crvec  h,
rvec  q 
) const

Definition at line 362 of file dl-problem.cpp.

◆ eval_add_Q()

auto eval_add_Q ( index_t  timestep,
crvec  xu,
crvec  h,
rmat  Q 
) const

Definition at line 363 of file dl-problem.cpp.

◆ eval_add_Q_N()

auto eval_add_Q_N ( crvec  x,
crvec  h,
rmat  Q 
) const

Definition at line 364 of file dl-problem.cpp.

◆ eval_add_R_masked()

auto eval_add_R_masked ( index_t  timestep,
crvec  xu,
crvec  h,
crindexvec  mask,
rmat  R,
rvec  work 
) const

Definition at line 365 of file dl-problem.cpp.

◆ eval_add_S_masked()

auto eval_add_S_masked ( index_t  timestep,
crvec  xu,
crvec  h,
crindexvec  mask,
rmat  S,
rvec  work 
) const

Definition at line 366 of file dl-problem.cpp.

◆ eval_add_R_prod_masked()

auto eval_add_R_prod_masked ( index_t  timestep,
crvec  xu,
crvec  h,
crindexvec  mask_J,
crindexvec  mask_K,
crvec  v,
rvec  out,
rvec  work 
) const

Definition at line 367 of file dl-problem.cpp.

◆ eval_add_S_prod_masked()

auto eval_add_S_prod_masked ( index_t  timestep,
crvec  xu,
crvec  h,
crindexvec  mask_K,
crvec  v,
rvec  out,
rvec  work 
) const

Definition at line 368 of file dl-problem.cpp.

◆ get_R_work_size()

auto get_R_work_size ( ) const

Definition at line 369 of file dl-problem.cpp.

◆ get_S_work_size()

auto get_S_work_size ( ) const

Definition at line 370 of file dl-problem.cpp.

◆ eval_constr()

auto eval_constr ( index_t  timestep,
crvec  x,
rvec  c 
) const

Definition at line 371 of file dl-problem.cpp.

◆ eval_constr_N()

auto eval_constr_N ( crvec  x,
rvec  c 
) const

Definition at line 372 of file dl-problem.cpp.

◆ eval_grad_constr_prod()

auto eval_grad_constr_prod ( index_t  timestep,
crvec  x,
crvec  p,
rvec  grad_cx_p 
) const

Definition at line 373 of file dl-problem.cpp.

◆ eval_grad_constr_prod_N()

auto eval_grad_constr_prod_N ( crvec  x,
crvec  p,
rvec  grad_cx_p 
) const

Definition at line 374 of file dl-problem.cpp.

◆ eval_add_gn_hess_constr()

auto eval_add_gn_hess_constr ( index_t  timestep,
crvec  x,
crvec  M,
rmat  out 
) const

Definition at line 375 of file dl-problem.cpp.

◆ eval_add_gn_hess_constr_N()

auto eval_add_gn_hess_constr_N ( crvec  x,
crvec  M,
rmat  out 
) const

Definition at line 376 of file dl-problem.cpp.

◆ provides_get_D()

bool provides_get_D ( ) const

Definition at line 378 of file dl-problem.cpp.

◆ provides_get_D_N()

bool provides_get_D_N ( ) const

Definition at line 379 of file dl-problem.cpp.

◆ provides_eval_add_Q_N()

bool provides_eval_add_Q_N ( ) const

Definition at line 380 of file dl-problem.cpp.

◆ provides_eval_add_R_prod_masked()

bool provides_eval_add_R_prod_masked ( ) const

Definition at line 381 of file dl-problem.cpp.

◆ provides_eval_add_S_prod_masked()

bool provides_eval_add_S_prod_masked ( ) const

Definition at line 382 of file dl-problem.cpp.

◆ provides_get_R_work_size()

bool provides_get_R_work_size ( ) const

Definition at line 383 of file dl-problem.cpp.

◆ provides_get_S_work_size()

bool provides_get_S_work_size ( ) const

Definition at line 384 of file dl-problem.cpp.

◆ provides_eval_constr()

bool provides_eval_constr ( ) const

Definition at line 385 of file dl-problem.cpp.

◆ provides_eval_constr_N()

bool provides_eval_constr_N ( ) const

Definition at line 386 of file dl-problem.cpp.

◆ provides_eval_grad_constr_prod()

bool provides_eval_grad_constr_prod ( ) const

Definition at line 387 of file dl-problem.cpp.

◆ provides_eval_grad_constr_prod_N()

bool provides_eval_grad_constr_prod_N ( ) const

Definition at line 388 of file dl-problem.cpp.

◆ provides_eval_add_gn_hess_constr()

bool provides_eval_add_gn_hess_constr ( ) const

Definition at line 389 of file dl-problem.cpp.

◆ provides_eval_add_gn_hess_constr_N()

bool provides_eval_add_gn_hess_constr_N ( ) const

Definition at line 390 of file dl-problem.cpp.

◆ call_extra_func() [1/2]

template<class Signature , class... Args>
decltype(auto) call_extra_func ( const std::string &  name,
Args &&...  args 
) const
inline

Definition at line 324 of file dl-problem.hpp.

+ Here is the call graph for this function:

◆ call_extra_func() [2/2]

template<class Signature , class... Args>
decltype(auto) call_extra_func ( const std::string &  name,
Args &&...  args 
)
inline

Definition at line 332 of file dl-problem.hpp.

+ Here is the call graph for this function:

Member Data Documentation

◆ handle

std::shared_ptr<void> handle
private

Handle to the shared module defining the problem.

Definition at line 256 of file dl-problem.hpp.

◆ instance

std::shared_ptr<void> instance
private

Problem instance created by the registration function, including the deleter to destroy it.

Definition at line 259 of file dl-problem.hpp.

◆ functions

control_problem_functions_t* functions = nullptr
private

Pointer to the struct of function pointers for evaluating the objective, constraints, their gradients, etc.

Definition at line 262 of file dl-problem.hpp.

◆ extra_funcs

ExtraFuncs extra_funcs
private

Dictionary of extra functions that were registered by the problem.

Definition at line 264 of file dl-problem.hpp.


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