26 #ifndef CASADI_SQPMETHOD_HPP
27 #define CASADI_SQPMETHOD_HPP
29 #include "casadi/core/nlpsol_impl.hpp"
30 #include <casadi/solvers/casadi_nlpsol_sqpmethod_export.h>
74 const char*
plugin_name()
const override {
return "sqpmethod";}
77 std::string
class_name()
const override {
return "Sqpmethod";}
91 Dict get_stats(
void* mem)
const override;
94 void init(
const Dict& opts)
override;
100 int init_mem(
void* mem)
const override;
103 void free_mem(
void* mem)
const override;
106 void set_work(
void* mem,
const double**& arg,
double**& res,
107 casadi_int*& iw,
double*& w)
const override;
110 int solve(
void* mem)
const override;
125 casadi_int block_size_ = 0;
190 void print_iteration()
const;
193 void print_iteration(casadi_int iter,
double obj,
double pr_inf,
double du_inf,
194 double dx_norm,
double rg, casadi_int ls_trials,
bool ls_success,
195 bool so_succes, std::string info)
const;
198 virtual int solve_QP(
SqpmethodMemory* m,
const double* H,
const double* g,
199 const double* lbdz,
const double* ubdz,
201 double* x_opt,
double* dlam,
int mode)
const;
204 virtual int solve_ela_QP(
SqpmethodMemory* m,
const double* H,
const double* g,
205 const double* lbdz,
const double* ubdz,
const double* A,
206 double* x_opt,
double* dlam)
const;
209 virtual int solve_elastic_mode(
SqpmethodMemory* m, casadi_int* ela_it,
double gamma_1,
210 casadi_int ls_iter,
bool ls_success,
bool so_succes,
double pr_inf,
211 double du_inf,
double dx_norminf, std::string* info,
int mode)
const;
215 void codegen_qp_solve(
CodeGenerator& cg,
const std::string& H,
const std::string& g,
216 const std::string& lbdz,
const std::string& ubdz,
217 const std::string& A,
const std::string& x_opt,
const std::string& dlam,
int mode)
const;
220 void codegen_qp_ela_solve(
CodeGenerator& cg,
const std::string& H,
const std::string& g,
221 const std::string& lbdz,
const std::string& ubdz,
222 const std::string& A,
const std::string& x_opt,
const std::string& dlam)
const;
225 void codegen_solve_elastic_mode(
CodeGenerator& cg,
int mode)
const;
249 void set_sqpmethod_prob();
Helper class for C code generation.
Helper class for Serialization.
NLP solver storage class.
Base class for FunctionInternal and LinsolInternal.
Helper class for Serialization.
'sqpmethod' plugin for Nlpsol
const Function getConic() const
Access Conic.
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize into MX.
Function qpsol_
QP solver for the subproblems.
bool init_feasible_
Initialize feasible qp's.
casadi_int lbfgs_memory_
Memory size of L-BFGS method.
static Nlpsol * creator(const std::string &name, const Function &nlp)
Create a new NLP Solver.
std::string codegen_mem_type() const override
Thread-local memory object type.
void * alloc_mem() const override
Create memory block.
bool codegen_needs_mem() const override
Is thread-local memory object needed?
double gamma_0_
Initial and maximum penalty parameter for elastic mode.
bool elastic_mode_
Elastic mode.
casadi_sqpmethod_prob< double > p_
ConvexifyData convexify_data_
Data for convexification.
static const Options options_
Options.
const char * plugin_name() const override
casadi_int merit_memsize_
double min_step_size_
Minimum step size allowed.
casadi_int max_iter_
Maximum, minimum number of SQP iterations.
bool convexify_
convexify?
std::string class_name() const override
Get type name.
bool exact_hessian_
Exact Hessian?
static const std::string meta_doc
A documentation string.
Function qpsol_ela_
QP solver for elastic mode subproblems.
const Options & get_options() const override
Options.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
Options metadata for a class.
int iter_count
Iteration count.
double sigma
Linesearch parameters.
const char * return_status
Last return status.
casadi_sqpmethod_data< double > d
double reg
Hessian regularization.