26 #ifndef CASADI_CCOPT_INTERFACE_HPP
27 #define CASADI_CCOPT_INTERFACE_HPP
31 #include "casadi/core/nlpsol_impl.hpp"
32 #include "casadi/core/timing.hpp"
36 #include "ccopt_runtime.hpp"
41 #define __attribute__((visibility("default")))
47 struct MadmpecMemory :
public NlpsolMemory {
57 class MadmpecInterface :
public Nlpsol {
62 explicit MadmpecInterface(
const std::string& name,
const Function& nlp);
63 ~MadmpecInterface()
override;
66 const char* plugin_name()
const override {
return "ccopt";}
69 std::string class_name()
const override {
return "MadmpecInterface";}
72 static Nlpsol* creator(
const std::string& name,
const Function& nlp) {
73 return new MadmpecInterface(name, nlp);
78 static const Options options_;
79 const Options& get_options()
const override {
return options_;}
83 void init(
const Dict& opts)
override;
86 void* alloc_mem()
const override {
return new MadmpecMemory();}
89 int init_mem(
void* mem)
const override;
92 void free_mem(
void *mem)
const override;
95 Dict get_stats(
void* mem)
const override;
98 void set_work(
void* mem,
const double**& arg,
double**& res,
99 casadi_int*& iw,
double*& w)
const override;
102 int solve(
void* mem)
const override;
112 std::vector<libmad_int> ind_cc1_;
113 std::vector<libmad_int> ind_cc2_;
114 std::vector<libmad_int> cctypes_;
117 static const std::string meta_doc;
122 ConvexifyData convexify_data_;
127 void set_ccopt_prob();
128 void set_ccopt_prob(CodeGenerator& g)
const;
130 void codegen_options(CodeGenerator& g,
const Dict& dict,
131 const std::string& field)
const;
134 void codegen_body(CodeGenerator& g)
const override;
137 void codegen_declarations(CodeGenerator& g)
const override;
140 void codegen_init_mem(CodeGenerator& g)
const override;
143 void codegen_free_mem(CodeGenerator& g)
const override;
146 std::string codegen_mem_type()
const override {
return "struct casadi_ccopt_data"; }
149 bool codegen_needs_mem()
const override {
return true; }
152 void serialize_body(SerializingStream &s)
const override;
155 static ProtoFunction* deserialize(DeserializingStream& s) {
return new MadmpecInterface(s); }
159 explicit MadmpecInterface(DeserializingStream& s);
165 std::vector<libmad_int> nws_;
166 std::vector<libmad_int> ngs_;
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.