26 #ifndef CASADI_MADNLP_INTERFACE_HPP
27 #define CASADI_MADNLP_INTERFACE_HPP
31 #include "casadi/core/nlpsol_impl.hpp"
32 #include "casadi/core/timing.hpp"
36 int init_julia(
int,
char**);
37 void shutdown_julia(
int);
42 #include "madnlp_runtime.hpp"
47 #define __attribute__((visibility("default")))
53 struct MadnlpMemory :
public NlpsolMemory {
63 class MadnlpInterface :
public Nlpsol {
69 explicit MadnlpInterface(
const std::string& name,
const Function& nlp);
70 ~MadnlpInterface()
override;
73 const char* plugin_name()
const override {
return "madnlp";}
76 std::string class_name()
const override {
return "MadnlpInterface";}
79 static Nlpsol* creator(
const std::string& name,
const Function& nlp) {
80 return new MadnlpInterface(name, nlp);
85 static const Options options_;
86 const Options& get_options()
const override {
return options_;}
90 void init(
const Dict& opts)
override;
93 void* alloc_mem()
const override {
return new MadnlpMemory();}
96 int init_mem(
void* mem)
const override;
99 void free_mem(
void *mem)
const override;
102 Dict get_stats(
void* mem)
const override;
105 void set_work(
void* mem,
const double**& arg,
double**& res,
106 casadi_int*& iw,
double*& w)
const override;
109 int solve(
void* mem)
const override;
118 static const std::string meta_doc;
123 ConvexifyData convexify_data_;
128 void set_madnlp_prob();
129 void set_madnlp_prob(CodeGenerator& g)
const;
132 void codegen_body(CodeGenerator& g)
const override;
135 void codegen_declarations(CodeGenerator& g)
const override;
138 void codegen_init_mem(CodeGenerator& g)
const override;
141 void codegen_free_mem(CodeGenerator& g)
const override;
144 std::string codegen_mem_type()
const override {
return "struct casadi_madnlp_data"; }
147 void serialize_body(SerializingStream &s)
const override;
150 static ProtoFunction* deserialize(DeserializingStream& s) {
return new MadnlpInterface(s); }
154 explicit MadnlpInterface(DeserializingStream& s);
160 std::vector<madnlp_int> nws_;
161 std::vector<madnlp_int> ngs_;
163 std::vector<madnlp_int> nzj_i_;
164 std::vector<madnlp_int> nzj_j_;
165 std::vector<madnlp_int> nzh_i_;
166 std::vector<madnlp_int> nzh_j_;
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.