#include <alpaqa/dl/dl-problem.hpp>
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.
Definition at line 245 of file dl-problem.hpp.
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={}, DynamicLoadFlags dl_flags={}) | |
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(auto) | call_extra_func (const std::string &name, Args &&...args) const |
template<class Signature, class... Args> | |
decltype(auto) | call_extra_func (const std::string &name, Args &&...args) |
Private Attributes | |
std::shared_ptr< void > | handle |
Handle to the shared module defining the problem. | |
std::shared_ptr< void > | instance |
Problem instance created by the registration function, including the deleter to destroy it. | |
control_problem_functions_t * | functions = 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. |
using Box = alpaqa::Box<config_t> |
Definition at line 248 of file dl-problem.hpp.
using instance_t = ExtraFuncs::instance_t |
Definition at line 330 of file dl-problem.hpp.
DLControlProblem | ( | const std::filesystem::path & | so_filename, |
const std::string & | function_name = "register_alpaqa_control_problem", | ||
alpaqa_register_arg_t | user_param = {}, | ||
DynamicLoadFlags | dl_flags = {} ) |
Load a problem from a shared library.
so_filename | Filename of the shared library to load. |
function_name | Name of the problem registration function. Should have signature alpaqa_control_problem_register_t(alpaqa_register_arg_t user_param). |
user_param | Pointer to custom user data to pass to the registration function. |
dl_flags | Flags passed to dlopen when loading the problem. |
Definition at line 312 of file dl-problem.cpp.
|
inline |
Definition at line 276 of file dl-problem.hpp.
|
inline |
Definition at line 277 of file dl-problem.hpp.
|
inline |
Definition at line 278 of file dl-problem.hpp.
|
inline |
Definition at line 279 of file dl-problem.hpp.
|
inline |
Definition at line 280 of file dl-problem.hpp.
|
inline |
Definition at line 281 of file dl-problem.hpp.
|
inline |
Definition at line 282 of file dl-problem.hpp.
|
inline |
Definition at line 284 of file dl-problem.hpp.
auto get_U | ( | Box & | U | ) | const |
Definition at line 361 of file dl-problem.cpp.
auto get_D | ( | Box & | D | ) | const |
Definition at line 362 of file dl-problem.cpp.
auto get_D_N | ( | Box & | D | ) | const |
Definition at line 363 of file dl-problem.cpp.
auto get_x_init | ( | rvec | x_init | ) | const |
Definition at line 364 of file dl-problem.cpp.
Definition at line 365 of file dl-problem.cpp.
Definition at line 366 of file dl-problem.cpp.
Definition at line 367 of file dl-problem.cpp.
Definition at line 368 of file dl-problem.cpp.
Definition at line 369 of file dl-problem.cpp.
Definition at line 370 of file dl-problem.cpp.
|
nodiscard |
Definition at line 371 of file dl-problem.cpp.
Definition at line 372 of file dl-problem.cpp.
Definition at line 373 of file dl-problem.cpp.
Definition at line 374 of file dl-problem.cpp.
Definition at line 375 of file dl-problem.cpp.
auto eval_add_R_masked | ( | index_t | timestep, |
crvec | xu, | ||
crvec | h, | ||
crindexvec | mask, | ||
rmat | R, | ||
rvec | work ) const |
Definition at line 376 of file dl-problem.cpp.
auto eval_add_S_masked | ( | index_t | timestep, |
crvec | xu, | ||
crvec | h, | ||
crindexvec | mask, | ||
rmat | S, | ||
rvec | work ) const |
Definition at line 377 of file dl-problem.cpp.
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 378 of file dl-problem.cpp.
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 379 of file dl-problem.cpp.
|
nodiscard |
Definition at line 380 of file dl-problem.cpp.
|
nodiscard |
Definition at line 381 of file dl-problem.cpp.
Definition at line 382 of file dl-problem.cpp.
Definition at line 383 of file dl-problem.cpp.
Definition at line 384 of file dl-problem.cpp.
Definition at line 385 of file dl-problem.cpp.
Definition at line 386 of file dl-problem.cpp.
Definition at line 387 of file dl-problem.cpp.
|
nodiscard |
Definition at line 389 of file dl-problem.cpp.
|
nodiscard |
Definition at line 390 of file dl-problem.cpp.
|
nodiscard |
Definition at line 391 of file dl-problem.cpp.
|
nodiscard |
Definition at line 392 of file dl-problem.cpp.
|
nodiscard |
Definition at line 393 of file dl-problem.cpp.
|
nodiscard |
Definition at line 394 of file dl-problem.cpp.
|
nodiscard |
Definition at line 395 of file dl-problem.cpp.
|
nodiscard |
Definition at line 396 of file dl-problem.cpp.
|
nodiscard |
Definition at line 397 of file dl-problem.cpp.
|
nodiscard |
Definition at line 398 of file dl-problem.cpp.
|
nodiscard |
Definition at line 399 of file dl-problem.cpp.
|
nodiscard |
Definition at line 400 of file dl-problem.cpp.
|
nodiscard |
Definition at line 401 of file dl-problem.cpp.
|
inline |
Definition at line 333 of file dl-problem.hpp.
|
inline |
Definition at line 341 of file dl-problem.hpp.
|
private |
Handle to the shared module defining the problem.
Definition at line 265 of file dl-problem.hpp.
|
private |
Problem instance created by the registration function, including the deleter to destroy it.
Definition at line 268 of file dl-problem.hpp.
|
private |
Pointer to the struct of function pointers for evaluating the objective, constraints, their gradients, etc.
Definition at line 271 of file dl-problem.hpp.
|
private |
Dictionary of extra functions that were registered by the problem.
Definition at line 273 of file dl-problem.hpp.