List of all members | Public Member Functions
casadi::AlpaqaProblem Class Reference

#include <alpaqa_problem.hpp>

Detailed Description

Definition at line 14 of file alpaqa_problem.hpp.

Inheritance diagram for casadi::AlpaqaProblem:
Inheritance graph
[legend]
Collaboration diagram for casadi::AlpaqaProblem:
Collaboration graph
[legend]

Public Member Functions

 AlpaqaProblem (const AlpaqaInterface &solver, AlpaqaMemory *mem)
 
 ~AlpaqaProblem ()
 
real_t eval_f (crvec x) const
 
void eval_grad_f (crvec x, rvec grad_fx) const
 
real_t eval_f_grad_f (crvec x, rvec grad_fx) const
 
void eval_g (crvec x, rvec g) const
 
void eval_grad_g_prod (crvec x, crvec y, rvec grad_gxy) const
 
void eval_grad_ψ (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const
 
real_t eval_ψ_grad_ψ (crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const
 
void eval_grad_L (crvec x, crvec y, rvec grad_L, rvec work_n) const
 
real_t eval_ψ (crvec x, crvec y, crvec Σ, rvec ŷ) const
 
void eval_grad_gi (crvec x, index_t i, rvec grad_i) const
 
length_t get_jac_g_num_nonzeros () const
 
void eval_jac_g (crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values) const
 
void eval_hess_L_prod (crvec x, crvec y, real_t scale, crvec v, rvec Hv) const
 
length_t get_hess_L_num_nonzeros () const
 
void eval_hess_L (crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values) const
 
void eval_hess_ψ_prod (crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv) const
 
length_t get_hess_ψ_num_nonzeros () const
 
void eval_hess_ψ (crvec x, crvec y, crvec Σ, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values) const
 
bool provides_eval_grad_gi () const
 
bool provides_eval_jac_g () const
 
bool provides_eval_hess_L_prod () const
 
bool provides_eval_hess_L () const
 
bool provides_eval_hess_ψ_prod () const
 
bool provides_eval_hess_ψ () const
 

Constructor & Destructor Documentation

◆ AlpaqaProblem()

casadi::AlpaqaProblem::AlpaqaProblem ( const AlpaqaInterface solver,
AlpaqaMemory mem 
)

Definition at line 7 of file alpaqa_problem.cpp.

8  : alpaqa::BoxConstrProblem<alpaqa::DefaultConfig>{solver.nx_, solver.ng_},
9  solver_(solver), mem_(mem) {
10 
11 }

References casadi::Nlpsol::ng_, and casadi::Nlpsol::nx_.

◆ ~AlpaqaProblem()

casadi::AlpaqaProblem::~AlpaqaProblem ( )
default

Member Function Documentation

◆ eval_f()

double casadi::AlpaqaProblem::eval_f ( crvec  x) const

Definition at line 19 of file alpaqa_problem.cpp.

19  {
20  double obj_value;
21  mem_->arg[0] = x.data();
22  mem_->arg[1] = mem_->d_nlp.p;
23  mem_->res[0] = &obj_value;
24  try {
25  casadi_assert(solver_.calc_function(mem_, "nlp_f")==0, "Failing evaluating eval_f");
26  } catch(KeyboardInterruptException& ex) {
27  casadi_warning("KeyboardInterruptException");
28  throw KeyboardInterruptException();
29  } catch (std::exception& ex) {
30  if (solver_.show_eval_warnings_) {
31  casadi_warning("AlpaqaProblem::eval_f failed:" + std::string(ex.what()));
32  }
33  }
34 
35  return obj_value;
36 }
int calc_function(OracleMemory *m, const std::string &fcn, const double *const *arg=nullptr, int thread_id=0) const
bool show_eval_warnings_
Show evaluation warnings.
casadi_nlpsol_data< double > d_nlp
Definition: nlpsol_impl.hpp:42

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

Referenced by casadi::AlpaqaInterface::solve().

◆ eval_f_grad_f()

double casadi::AlpaqaProblem::eval_f_grad_f ( crvec  x,
rvec  grad_fx 
) const

Definition at line 42 of file alpaqa_problem.cpp.

42  {
43  double obj_value;
44  mem_->arg[0] = x.data();
45  mem_->arg[1] = mem_->d_nlp.p;
46  mem_->res[0] = &obj_value;
47  mem_->res[1] = grad_fx.data();
48  try {
49  casadi_assert(solver_.calc_function(mem_, "nlp_f_grad_f")==0, "Failing evaluating eval_f_grad_f");
50  } catch(KeyboardInterruptException& ex) {
51  casadi_warning("KeyboardInterruptException");
52  throw KeyboardInterruptException();
53  } catch (std::exception& ex) {
54  if (solver_.show_eval_warnings_) {
55  casadi_warning("AlpaqaProblem::eval_f_grad_f failed:" + std::string(ex.what()));
56  }
57  }
58  return obj_value;
59 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

Referenced by eval_grad_f().

◆ eval_g()

void casadi::AlpaqaProblem::eval_g ( crvec  x,
rvec  g 
) const

Definition at line 74 of file alpaqa_problem.cpp.

74  {
75  mem_->arg[0] = x.data();
76  mem_->arg[1] = mem_->d_nlp.p;
77  mem_->res[0] = g.data();
78  try {
79  casadi_assert(solver_.calc_function(mem_, "nlp_g")==0, "Failing evaluating eval_f_grad_f");
80  } catch(KeyboardInterruptException& ex) {
81  casadi_warning("KeyboardInterruptException");
82  throw KeyboardInterruptException();
83  } catch (std::exception& ex) {
84  if (solver_.show_eval_warnings_) {
85  casadi_warning("AlpaqaProblem::eval_g failed:" + std::string(ex.what()));
86  }
87  }
88 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

Referenced by casadi::AlpaqaInterface::solve().

◆ eval_grad_f()

void casadi::AlpaqaProblem::eval_grad_f ( crvec  x,
rvec  grad_fx 
) const

Definition at line 38 of file alpaqa_problem.cpp.

38  {
39  eval_f_grad_f(x, grad_fx);
40 }
real_t eval_f_grad_f(crvec x, rvec grad_fx) const

References eval_f_grad_f().

◆ eval_grad_g_prod()

void casadi::AlpaqaProblem::eval_grad_g_prod ( crvec  x,
crvec  y,
rvec  grad_gxy 
) const

Definition at line 163 of file alpaqa_problem.cpp.

163  {
164  casadi_error("Not implemented");
165 }

◆ eval_grad_gi()

void casadi::AlpaqaProblem::eval_grad_gi ( crvec  x,
index_t  i,
rvec  grad_i 
) const

Definition at line 167 of file alpaqa_problem.cpp.

167  {
168  casadi_error("Not implemented");
169 }

◆ eval_grad_L()

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

Definition at line 223 of file alpaqa_problem.cpp.

224  {
225  mem_->arg[0] = x.data();
226  mem_->arg[1] = mem_->d_nlp.p;
227  mem_->arg[2] = y.data();
228  mem_->res[0] = grad_L.data();
229  try {
230  casadi_assert(solver_.calc_function(mem_, "nlp_grad_L")==0, "Failing evaluating eval_f_grad_f");
231  } catch(KeyboardInterruptException& ex) {
232  casadi_warning("KeyboardInterruptException");
233  throw KeyboardInterruptException();
234  } catch (std::exception& ex) {
235  if (solver_.show_eval_warnings_) {
236  casadi_warning("AlpaqaProblem::eval_grad_L failed:" + std::string(ex.what()));
237  }
238  }
239 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

◆ eval_grad_ψ()

void casadi::AlpaqaProblem::eval_grad_ψ ( crvec  x,
crvec  y,
crvec  Σ,
rvec  grad_ψ,
rvec  work_n,
rvec  work_m 
) const

Definition at line 218 of file alpaqa_problem.cpp.

219  {
220  eval_ψ_grad_ψ(x, y, Σ, grad_ψ, a, b);
221 }
real_t eval_ψ_grad_ψ(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const

References eval_ψ_grad_ψ().

◆ eval_hess_L()

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

Definition at line 115 of file alpaqa_problem.cpp.

117  {
118  if (H_values.size()>0) {
119  mem_->arg[0] = x.data();
120  mem_->arg[1] = mem_->d_nlp.p;
121  mem_->arg[2] = y.data();
122  mem_->arg[3] = &scale;
123  mem_->res[0] = H_values.data();
124  try {
125  casadi_assert(solver_.calc_function(mem_, "nlp_hess_L")==0, "Failing evaluating eval_f_grad_f");
126  } catch(KeyboardInterruptException& ex) {
127  casadi_warning("KeyboardInterruptException");
128  throw KeyboardInterruptException();
129  } catch (std::exception& ex) {
130  if (solver_.show_eval_warnings_) {
131  casadi_warning("AlpaqaProblem::eval_hess_L failed:" + std::string(ex.what()));
132  }
133  }
134  } else {
135  const Sparsity& sp = solver_.get_function("nlp_hess_L").sparsity_out(0);
136  if (!sp.is_dense()) {
137  copy(sp.row(), sp.nnz(), inner_idx.data());
138  copy(sp.colind(), get_n()+1, outer_ptr.data());
139  }
140  }
141 }
std::vector< std::string > get_function() const override
Get list of dependency functions.
void copy(const T1 *x, casadi_int n, T2 *y)

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::Sparsity::colind(), casadi::copy(), casadi::NlpsolMemory::d_nlp, casadi::OracleFunction::get_function(), casadi::Sparsity::is_dense(), casadi::Sparsity::nnz(), casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::Sparsity::row(), casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

◆ eval_hess_L_prod()

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

Definition at line 143 of file alpaqa_problem.cpp.

144  {
145  mem_->arg[0] = x.data();
146  mem_->arg[1] = mem_->d_nlp.p;
147  mem_->arg[2] = y.data();
148  mem_->arg[3] = &scale;
149  mem_->arg[4] = v.data();
150  mem_->res[0] = Hv.data();
151  try {
152  casadi_assert(solver_.calc_function(mem_, "nlp_hess_L_prod")==0, "Failing evaluating eval_f_grad_f");
153  } catch(KeyboardInterruptException& ex) {
154  casadi_warning("KeyboardInterruptException");
155  throw KeyboardInterruptException();
156  } catch (std::exception& ex) {
157  if (solver_.show_eval_warnings_) {
158  casadi_warning("AlpaqaProblem::eval_hess_L_prod failed:" + std::string(ex.what()));
159  }
160  }
161 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

◆ eval_hess_ψ()

void casadi::AlpaqaProblem::eval_hess_ψ ( crvec  x,
crvec  y,
crvec  Σ,
real_t  scale,
rindexvec  inner_idx,
rindexvec  outer_ptr,
rvec  H_values 
) const

Definition at line 241 of file alpaqa_problem.cpp.

243  {
244  if (H_values.size()>0) {
245  mem_->arg[0] = x.data();
246  mem_->arg[1] = mem_->d_nlp.p;
247  mem_->arg[2] = y.data();
248  mem_->arg[3] = Σ.data();
249  mem_->arg[4] = &scale;
250  mem_->arg[5] = this->D.lowerbound.data();
251  mem_->arg[6] = this->D.upperbound.data();
252  mem_->res[0] = H_values.data();
253  try {
254  casadi_assert(solver_.calc_function(mem_, "nlp_hess_psi")==0, "Failing evaluating eval_f_grad_f");
255  } catch(KeyboardInterruptException& ex) {
256  casadi_warning("KeyboardInterruptException");
257  throw KeyboardInterruptException();
258  } catch (std::exception& ex) {
259  if (solver_.show_eval_warnings_) {
260  casadi_warning("AlpaqaProblem::eval_hess_psi failed:" + std::string(ex.what()));
261  }
262  }
263  } else {
264  const Sparsity& sp = solver_.get_function("nlp_hess_psi").sparsity_out(0);
265  if (!sp.is_dense()) {
266  copy(sp.row(), sp.nnz(), inner_idx.data());
267  copy(sp.colind(), get_n()+1, outer_ptr.data());
268  }
269  }
270 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::Sparsity::colind(), casadi::copy(), casadi::D, casadi::NlpsolMemory::d_nlp, casadi::OracleFunction::get_function(), casadi::Sparsity::is_dense(), casadi::Sparsity::nnz(), casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::Sparsity::row(), casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

◆ eval_hess_ψ_prod()

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

Definition at line 272 of file alpaqa_problem.cpp.

274  {
275  mem_->arg[0] = x.data();
276  mem_->arg[1] = mem_->d_nlp.p;
277  mem_->arg[2] = y.data();
278  mem_->arg[3] = Σ.data();
279  mem_->arg[4] = &scale;
280  mem_->arg[5] = this->D.lowerbound.data();
281  mem_->arg[6] = this->D.upperbound.data();
282  mem_->arg[7] = v.data();
283  mem_->res[0] = Hv.data();
284  try {
285  casadi_assert(solver_.calc_function(mem_, "nlp_hess_psi_prod")==0, "Failing evaluating eval_f_grad_f");
286  } catch(KeyboardInterruptException& ex) {
287  casadi_warning("KeyboardInterruptException");
288  throw KeyboardInterruptException();
289  } catch (std::exception& ex) {
290  if (solver_.show_eval_warnings_) {
291  casadi_warning("AlpaqaProblem::eval_hess_psi_prod failed:" + std::string(ex.what()));
292  }
293  }
294 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::D, casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

◆ eval_jac_g()

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

Definition at line 90 of file alpaqa_problem.cpp.

91  {
92  if (J_values.size()>0) {
93  mem_->arg[0] = x.data();
94  mem_->arg[1] = mem_->d_nlp.p;
95  mem_->res[0] = J_values.data();
96  try {
97  casadi_assert(solver_.calc_function(mem_, "nlp_jac_g")==0, "Failing evaluating eval_f_grad_f");
98  } catch(KeyboardInterruptException& ex) {
99  casadi_warning("KeyboardInterruptException");
100  throw KeyboardInterruptException();
101  } catch (std::exception& ex) {
102  if (solver_.show_eval_warnings_) {
103  casadi_warning("AlpaqaProblem::eval_jac_g failed:" + std::string(ex.what()));
104  }
105  }
106  } else {
107  const Sparsity& sp = solver_.jacg_sp_;
108  if (!sp.is_dense()) {
109  copy(sp.row(), sp.nnz(), inner_idx.data());
110  copy(sp.colind(), get_n()+1, outer_ptr.data());
111  }
112  }
113 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::Sparsity::colind(), casadi::copy(), casadi::NlpsolMemory::d_nlp, casadi::Sparsity::is_dense(), casadi::AlpaqaInterface::jacg_sp_, casadi::Sparsity::nnz(), casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::Sparsity::row(), casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

◆ eval_ψ()

double casadi::AlpaqaProblem::eval_ψ ( crvec  x,
crvec  y,
crvec  Σ,
rvec  ŷ 
) const

Definition at line 171 of file alpaqa_problem.cpp.

171  {
172  double res;
173  mem_->arg[0] = x.data();
174  mem_->arg[1] = mem_->d_nlp.p;
175  mem_->arg[2] = y.data();
176  mem_->arg[3] = Σ.data();
177  mem_->arg[4] = this->D.lowerbound.data();
178  mem_->arg[5] = this->D.upperbound.data();
179  mem_->res[0] = &res;
180  mem_->res[1] = ŷ.data();
181  try {
182  casadi_assert(solver_.calc_function(mem_, "nlp_psi")==0, "Failing evaluating eval_f_grad_f");
183  } catch(KeyboardInterruptException& ex) {
184  casadi_warning("KeyboardInterruptException");
185  throw KeyboardInterruptException();
186  } catch (std::exception& ex) {
187  if (solver_.show_eval_warnings_) {
188  casadi_warning("AlpaqaProblem::eval_psi failed:" + std::string(ex.what()));
189  }
190  }
191  return res;
192 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::D, casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

◆ eval_ψ_grad_ψ()

double casadi::AlpaqaProblem::eval_ψ_grad_ψ ( crvec  x,
crvec  y,
crvec  Σ,
rvec  grad_ψ,
rvec  work_n,
rvec  work_m 
) const

Definition at line 194 of file alpaqa_problem.cpp.

195  {
196  double res;
197  mem_->arg[0] = x.data();
198  mem_->arg[1] = mem_->d_nlp.p;
199  mem_->arg[2] = y.data();
200  mem_->arg[3] = Σ.data();
201  mem_->arg[4] = this->D.lowerbound.data();
202  mem_->arg[5] = this->D.upperbound.data();
203  mem_->res[0] = &res;
204  mem_->res[1] = grad_ψ.data();
205  try {
206  casadi_assert(solver_.calc_function(mem_, "nlp_grad_psi")==0, "Failing evaluating eval_f_grad_f");
207  } catch(KeyboardInterruptException& ex) {
208  casadi_warning("KeyboardInterruptException");
209  throw KeyboardInterruptException();
210  } catch (std::exception& ex) {
211  if (solver_.show_eval_warnings_) {
212  casadi_warning("AlpaqaProblem::eval_grad_psi failed:" + std::string(ex.what()));
213  }
214  }
215  return res;
216 }

References casadi::OracleMemory::arg, casadi::OracleFunction::calc_function(), casadi::D, casadi::NlpsolMemory::d_nlp, casadi_nlpsol_data< T1 >::p, casadi::OracleMemory::res, casadi::OracleFunction::show_eval_warnings_, and casadi::CasadiException::what().

Referenced by eval_grad_ψ().

◆ get_hess_L_num_nonzeros()

alpaqa::DefaultConfig::length_t casadi::AlpaqaProblem::get_hess_L_num_nonzeros ( ) const

Definition at line 296 of file alpaqa_problem.cpp.

296  {
297  const Sparsity& sp = solver_.get_function("nlp_hess_L").sparsity_out(0);
298  return sp.is_dense() ? 0 : sp.nnz();
299 }

References casadi::OracleFunction::get_function(), casadi::Sparsity::is_dense(), and casadi::Sparsity::nnz().

◆ get_hess_ψ_num_nonzeros()

alpaqa::DefaultConfig::length_t casadi::AlpaqaProblem::get_hess_ψ_num_nonzeros ( ) const

Definition at line 301 of file alpaqa_problem.cpp.

301  {
302  const Sparsity& sp = solver_.get_function("nlp_hess_psi").sparsity_out(0);
303  return sp.is_dense() ? 0 : sp.nnz();
304 }

References casadi::OracleFunction::get_function(), casadi::Sparsity::is_dense(), and casadi::Sparsity::nnz().

◆ get_jac_g_num_nonzeros()

alpaqa::DefaultConfig::length_t casadi::AlpaqaProblem::get_jac_g_num_nonzeros ( ) const

Definition at line 307 of file alpaqa_problem.cpp.

307  {
308  const Sparsity& sp = solver_.jacg_sp_;
309  return sp.is_dense() ? 0 : sp.nnz();
310 }
bool is_dense() const
Is dense?
Definition: sparsity.cpp:273

References casadi::Sparsity::is_dense(), casadi::AlpaqaInterface::jacg_sp_, and casadi::Sparsity::nnz().

◆ provides_eval_grad_gi()

bool casadi::AlpaqaProblem::provides_eval_grad_gi ( ) const
inline
See also
TypeErasedProblem::provides_eval_grad_gi

Definition at line 46 of file alpaqa_problem.hpp.

46 { return false; }

◆ provides_eval_hess_L()

bool casadi::AlpaqaProblem::provides_eval_hess_L ( ) const
inline
See also
TypeErasedProblem::provides_eval_hess_L

Definition at line 52 of file alpaqa_problem.hpp.

52 { return true; }

◆ provides_eval_hess_L_prod()

bool casadi::AlpaqaProblem::provides_eval_hess_L_prod ( ) const
inline
See also
TypeErasedProblem::provides_eval_hess_L_prod

Definition at line 50 of file alpaqa_problem.hpp.

50 { return true; }

◆ provides_eval_hess_ψ()

bool casadi::AlpaqaProblem::provides_eval_hess_ψ ( ) const
inline
See also
TypeErasedProblem::provides_eval_hess_ψ

Definition at line 56 of file alpaqa_problem.hpp.

56 { return true; }

◆ provides_eval_hess_ψ_prod()

bool casadi::AlpaqaProblem::provides_eval_hess_ψ_prod ( ) const
inline
See also
TypeErasedProblem::provides_eval_hess_ψ_prod

Definition at line 54 of file alpaqa_problem.hpp.

54 { return true; }

◆ provides_eval_jac_g()

bool casadi::AlpaqaProblem::provides_eval_jac_g ( ) const
inline
See also
TypeErasedProblem::provides_eval_jac_g

Definition at line 48 of file alpaqa_problem.hpp.

48 { return true; }

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