25 #ifndef CASADI_OPTISTACK_HPP
26 #define CASADI_OPTISTACK_HPP
28 #include "function.hpp"
29 #include "callback.hpp"
89 :
public SWIG_IF_ELSE(PrintableCommon, Printable<Opti>),
91 friend class InternalOptiCallback;
99 Opti(
const std::string& problem_type=
"nlp");
112 MX variable(casadi_int n=1, casadi_int m=1,
const std::string& attribute=
"full");
113 MX variable(
const Sparsity& sp,
const std::string& attribute=
"full");
114 MX variable(
const MX& symbol,
const std::string& attribute=
"full");
127 MX parameter(casadi_int n=1, casadi_int m=1,
const std::string& attribute=
"full");
128 MX parameter(
const Sparsity& sp,
const std::string& attribute=
"full");
129 MX parameter(
const MX& symbol,
const std::string& attribute=
"full");
137 void minimize(
const MX& f,
double linear_scale=1);
165 void subject_to(
const MX& g,
const Dict& options=
Dict());
166 void subject_to(
const std::vector<MX>& g,
const Dict& options=
Dict());
167 void subject_to(
const MX& g,
const DM& linear_scale,
const Dict& options=
Dict());
168 void subject_to(
const std::vector<MX>& g,
const DM& linear_scale,
const Dict& options=
Dict());
184 void solver(
const std::string& solver,
195 void set_initial(
const MX& x,
const DM& v);
196 void set_initial(
const std::vector<MX>& assignments);
205 void set_value(
const MX& x,
const DM& v);
206 void set_value(
const std::vector<MX>& assignments);
220 void set_domain(
const MX& x,
const std::string& domain);
236 void set_linear_scale(
const MX& x,
const DM& scale,
const DM& offset=0);
258 native_DM value(
const MX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
259 native_DM value(
const DM& x,
const std::vector<MX>& values=std::vector<MX>())
const;
260 native_DM value(
const SX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
277 std::string return_status()
const;
282 std::vector<MX> initial()
const;
287 std::vector<MX> value_variables()
const;
288 std::vector<MX> value_parameters()
const;
302 MX dual(
const MX& m)
const;
307 casadi_int nx()
const;
312 casadi_int np()
const;
317 casadi_int ng()
const;
345 DM x_linear_scale()
const;
346 DM x_linear_scale_offset()
const;
347 DM g_linear_scale()
const;
348 double f_linear_scale()
const;
371 Function to_function(
const std::string& name,
372 const std::vector<MX>& args,
const std::vector<MX>& res,
375 Function to_function(
const std::string& name,
376 const std::vector<MX>& args,
const std::vector<MX>& res,
377 const std::vector<std::string>& name_in,
378 const std::vector<std::string>& name_out,
381 Function to_function(
const std::string& name,
382 const std::map<std::string, MX>& dict,
383 const std::vector<std::string>& name_in,
384 const std::vector<std::string>& name_out,
396 static MX bounded(
const MX& lb,
const MX& expr,
const MX& ub) {
return (lb<=expr)<= ub; }
433 void update_user_dict(
const MX& m,
const Dict& meta);
434 void update_user_dict(
const std::vector<MX>& m,
const Dict& meta);
436 Dict user_dict(
const MX& m)
const;
442 void disp(std::ostream& stream,
bool more=
false)
const;
445 std::string get_str(
bool more=
false)
const;
454 void callback_class();
542 casadi_error(
"Callback objects cannot be copied");
544 virtual void call(casadi_int i) {
545 uout() <<
"This is a simple callback at iteration" << i << std::endl;
551 friend class InternalOptiCallback;
566 bool is_parametric(
const MX& expr)
const;
575 std::vector<MX> symvar()
const;
576 std::vector<MX> symvar(
const MX& expr)
const;
581 MetaCon canon_expr(
const MX& expr)
const;
590 void set_meta(
const MX& m,
const MetaVar& meta);
593 void set_meta_con(
const MX& m,
const MetaCon& meta);
595 void assert_active_symbol(
const MX& m)
const;
600 MX x_lookup(casadi_index i)
const;
601 MX g_lookup(casadi_index i)
const;
603 casadi_index g_index_reduce_g(casadi_index i)
const;
604 casadi_index g_index_reduce_x(casadi_index i)
const;
605 casadi_index g_index_unreduce_g(casadi_index i)
const;
607 std::string x_describe(casadi_index i,
const Dict& opts=
Dict())
const;
608 std::string g_describe(casadi_index i,
const Dict& opts=
Dict())
const;
609 std::string describe(
const MX& x, casadi_index indent=0,
const Dict& opts=
Dict())
const;
611 void show_infeasibilities(
double tol=0,
const Dict& opts=
Dict())
const;
613 void solve_prepare();
617 void res(
const DMDict& res);
619 std::vector<MX> constraints()
const;
620 MX objective()
const;
624 void assert_empty()
const;
631 void mark_problem_dirty(
bool flag=
true);
632 bool problem_dirty()
const;
635 void mark_solver_dirty(
bool flag=
true);
636 bool solver_dirty()
const;
639 void mark_solved(
bool flag=
true);
642 void assert_solved()
const;
643 void assert_baked()
const;
645 casadi_int instance_number()
const;
661 class CASADI_EXPORT
OptiSol :
public SWIG_IF_ELSE(PrintableCommon, Printable<OptiAdvanced>) {
665 void disp(std::ostream& stream,
bool more=
false)
const;
666 std::string get_str(
bool more=
false)
const;
676 native_DM value(
const MX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
677 native_DM value(
const DM& x,
const std::vector<MX>& values=std::vector<MX>())
const;
678 native_DM value(
const SX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
682 std::vector<MX> value_variables()
const;
683 std::vector<MX> value_parameters()
const;
~OptiAdvanced()
Destructor.
virtual void call(casadi_int i)
OptiCallback(const OptiCallback &obj)
A simplified interface for NLP modeling/solving.
A simplified interface for NLP modeling/solving.
std::string type_name() const
A simplified interface for NLP modeling/solving.
static MX bounded(const MX &lb, const MX &expr, const MX &ub)
Construct a double inequality.
std::string type_name() const
Readable name of the class.
GenericShared implements a reference counting framework similar for efficient and.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
void copy(const T1 *x, casadi_int n, T2 *y)
@ OPTI_GENERIC_INEQUALITY
std::map< std::string, DM > DMDict