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;
187 void print_iteration()
const;
190 void print_iteration(casadi_int iter,
double obj,
double pr_inf,
double du_inf,
191 double dx_norm,
double rg, casadi_int ls_trials,
bool ls_success,
192 bool so_succes, std::string info)
const;
195 virtual int solve_QP(
SqpmethodMemory* m,
const double* H,
const double* g,
196 const double* lbdz,
const double* ubdz,
198 double* x_opt,
double* dlam,
int mode)
const;
201 virtual int solve_ela_QP(
SqpmethodMemory* m,
const double* H,
const double* g,
202 const double* lbdz,
const double* ubdz,
const double* A,
203 double* x_opt,
double* dlam)
const;
206 virtual int solve_elastic_mode(
SqpmethodMemory* m, casadi_int* ela_it,
double gamma_1,
207 casadi_int ls_iter,
bool ls_success,
bool so_succes,
double pr_inf,
208 double du_inf,
double dx_norminf, std::string* info,
int mode)
const;
212 void codegen_qp_solve(
CodeGenerator& cg,
const std::string& H,
const std::string& g,
213 const std::string& lbdz,
const std::string& ubdz,
214 const std::string& A,
const std::string& x_opt,
const std::string& dlam,
int mode)
const;
217 void codegen_qp_ela_solve(
CodeGenerator& cg,
const std::string& H,
const std::string& g,
218 const std::string& lbdz,
const std::string& ubdz,
219 const std::string& A,
const std::string& x_opt,
const std::string& dlam)
const;
222 void codegen_solve_elastic_mode(
CodeGenerator& cg,
int mode)
const;
246 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.
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.