25 #ifndef CASADI_MOSEK_INTERFACE_HPP
26 #define CASADI_MOSEK_INTERFACE_HPP
28 #include "casadi/core/conic_impl.hpp"
29 #include <casadi/interfaces/mosek/casadi_conic_mosek_export.h>
35 #include "mosek_runtime.hpp"
55 struct MosekMemory :
public ConicMemory {
68 class MosekInterface :
public Conic {
71 static Conic* creator(
const std::string& name,
72 const std::map<std::string, Sparsity>& st) {
73 return new MosekInterface(name, st);
77 explicit MosekInterface(
const std::string& name,
78 const std::map<std::string, Sparsity>& st);
81 ~MosekInterface()
override;
84 const char* plugin_name()
const override {
return "mosek";}
87 std::string class_name()
const override {
return "MosekInterface";}
91 static const Options options_;
92 const Options& get_options()
const override {
return options_;}
95 void set_mosek_prob();
96 void set_mosek_prob(CodeGenerator& g)
const;
99 void codegen_body(CodeGenerator& g)
const override;
102 void codegen_init_mem(CodeGenerator& g)
const override;
105 void codegen_free_mem(CodeGenerator& g)
const override;
108 std::string codegen_mem_type()
const override {
return "struct casadi_mosek_data"; }
111 bool codegen_needs_mem()
const override {
return true; }
114 void init(
const Dict& opts)
override;
117 void init_dependent();
120 void* alloc_mem()
const override {
return new MosekMemory();}
123 int init_mem(
void* mem)
const override;
126 void free_mem(
void *mem)
const override;
129 void set_work(
void* mem,
const double**& arg,
double**& res,
130 casadi_int*& iw,
double*& w)
const override;
133 Dict get_stats(
void* mem)
const override;
136 int solve(
const double** arg,
double** res,
137 casadi_int* iw,
double* w,
void* mem)
const override;
140 static const std::string meta_doc;
145 void serialize_body(SerializingStream &s)
const override;
148 static ProtoFunction* deserialize(DeserializingStream& s) {
return new MosekInterface(s); }
151 bool integer_support()
const override {
return true; }
154 bool psd_support()
const override {
return true; }
158 explicit MosekInterface(DeserializingStream& s);
166 std::vector<int> colinda_, rowa_;
170 std::vector<int> qobj_row_, qobj_col_;
171 std::vector<int> qobj_nz_idx_;
175 std::vector<char> coltype_;
182 std::vector<casadi_int> socp_r_;
183 std::vector<casadi_int> socp_mq_colind_, socp_mq_row_, socp_mq_data_;
184 std::vector<casadi_int> socp_map_P_;
187 void build_socp_config();
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.