27 #ifndef CASADI_FEASIBLESQPMETHOD_HPP
28 #define CASADI_FEASIBLESQPMETHOD_HPP
30 #include "casadi/core/nlpsol_impl.hpp"
31 #include <casadi/solvers/casadi_nlpsol_feasiblesqpmethod_export.h>
71 const char*
plugin_name()
const override {
return "feasiblesqpmethod";}
74 std::string
class_name()
const override {
return "Feasiblesqpmethod";}
88 Dict get_stats(
void* mem)
const override;
91 void init(
const Dict& opts)
override;
97 int init_mem(
void* mem)
const override;
103 void set_work(
void* mem,
const double**& arg,
double**& res,
104 casadi_int*& iw,
double*& w)
const override;
106 double eval_m_k(
void* mem)
const;
108 double eval_tr_ratio(
double val_f,
double val_f_corr,
double val_m_k)
const;
110 void tr_update(
void* mem,
double& tr_rad,
double tr_ratio)
const;
112 int step_update(
void* mem,
double tr_ratio)
const;
115 int feasibility_iterations(
void* mem,
double tr_rad)
const;
117 void anderson_acc_step_update(
void* mem, casadi_int iter_index)
const;
119 void anderson_acc_init_memory(
void* mem,
double* step,
double* iterate)
const;
121 void anderson_acc_update_memory(
void* mem,
double* step,
double* iterate)
const;
124 int solve(
void* mem)
const override;
145 casadi_int block_size_ = 0;
216 void print_iteration()
const;
219 void print_iteration(casadi_int iter,
double obj,
double m_k,
220 double tr_ratio,
double pr_inf,
double du_inf,
221 double dx_norm,
double rg,
double tr_rad,
222 std::string info)
const;
226 const double* lbdz,
const double* ubdz,
228 double* x_opt,
double* dlam,
int mode)
const;
232 const double* lbdz,
const double* ubdz,
234 double* x_opt,
double* dlam,
int mode)
const;
237 void codegen_qp_solve(
CodeGenerator& cg,
const std::string& H,
const std::string& g,
238 const std::string& lbdz,
const std::string& ubdz,
239 const std::string& A,
const std::string& x_opt,
240 const std::string& dlam,
int mode)
const;
243 const std::string& tr_rad,
const std::string& tr_ratio)
const;
248 const std::string& val_f,
const std::string& val_f_corr,
const std::string& val_m_k)
const;
250 void codegen_step_update(
CodeGenerator& cg,
const std::string& tr_ratio)
const;
252 void codegen_feasibility_iterations(
CodeGenerator& cg,
const std::string& tr_rad)
const;
284 void set_feasiblesqpmethod_prob();
Helper class for C code generation.
Helper class for Serialization.
'feasiblesqpmethod' plugin for Nlpsol
const char * plugin_name() const override
static const std::string meta_doc
A documentation string.
casadi_int max_inner_iter_
static const Options options_
Options.
casadi_int lbfgs_memory_
Memory size of L-BFGS method.
bool init_feasible_
Initialize feasible qp's.
void * alloc_mem() const override
Create memory block.
ConvexifyData convexify_data_
Data for convexification.
void free_mem(void *mem) const override
Free memory block.
bool use_sqp_
Exact Hessian?
std::string class_name() const override
Get type name.
bool use_anderson_
Use Anderson Acceleration.
casadi_int max_iter_
Maximum, minimum number of SQP iterations.
casadi_feasiblesqpmethod_prob< double > p_
std::vector< double > tr_scale_vector_
static Nlpsol * creator(const std::string &name, const Function &nlp)
Create a new NLP Solver.
const Function getConic() const
Access Conic.
bool convexify_
convexify?
const Options & get_options() const override
Options.
casadi_int sz_anderson_memory_
Function qpsol_ela_
QP solver for elastic mode subproblems.
Function qpsol_
QP solver for the subproblems.
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize into MX.
bool exact_hessian_
Exact Hessian?
double contraction_acceptance_value_
NLP solver storage class.
Base class for FunctionInternal and LinsolInternal.
Helper class for Serialization.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
const char * return_status
Last return status.
double sigma
Linesearch parameters.
casadi_feasiblesqpmethod_data< double > d
double reg
Hessian regularization.
int iter_count
Iteration count.
Options metadata for a class.