26 #ifndef CASADI_OSQP_INTERFACE_HPP
27 #define CASADI_OSQP_INTERFACE_HPP
29 #include "casadi/core/conic_impl.hpp"
30 #include <casadi/interfaces/osqp/casadi_conic_osqp_export.h>
49 struct OsqpMemory :
public ConicMemory {
70 class OsqpInterface :
public Conic {
73 explicit OsqpInterface(
const std::string& name,
74 const std::map<std::string, Sparsity>& st);
77 static Conic* creator(
const std::string& name,
78 const std::map<std::string, Sparsity>& st) {
79 return new OsqpInterface(name, st);
83 ~OsqpInterface()
override;
86 const char* plugin_name()
const override {
return "osqp";}
89 void deps_version_check(
const std::string& stage)
const override;
92 std::string class_name()
const override {
return "OsqpInterface";}
96 static const Options options_;
97 const Options& get_options()
const override {
return options_;}
101 void init(
const Dict& opts)
override;
104 void* alloc_mem()
const override {
return new OsqpMemory();}
107 int init_mem(
void* mem)
const override;
110 void free_mem(
void *mem)
const override {
delete static_cast<OsqpMemory*
>(mem);}
113 int solve(
const double** arg,
double** res,
114 casadi_int* iw,
double* w,
void* mem)
const override;
117 bool integer_support()
const override {
return true;}
120 bool psd_support()
const override {
return true;}
123 static const std::string meta_doc;
126 Dict get_stats(
void* mem)
const override;
129 casadi_int nnzHupp_, nnzA_;
131 OSQPSettings settings_;
138 double overrun_check_[10000];
140 bool warm_start_primal_, warm_start_dual_;
143 void codegen_body(CodeGenerator& g)
const override;
146 void codegen_init_mem(CodeGenerator& g)
const override;
149 void codegen_free_mem(CodeGenerator& g)
const override;
153 std::string codegen_mem_type()
const override {
return "OSQPSolver*"; }
155 std::string codegen_mem_type()
const override {
return "OSQPWorkspace*"; }
158 bool codegen_needs_mem()
const override {
return true; }
160 void serialize_body(SerializingStream &s)
const override;
163 static ProtoFunction* deserialize(DeserializingStream& s) {
return new OsqpInterface(s); }
167 explicit OsqpInterface(DeserializingStream& e);
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.