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);
221 void set_domain(
const MX& x,
const std::string& domain);
237 void set_linear_scale(
const MX& x,
const DM& scale,
const DM& offset=0);
259 native_DM value(
const MX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
260 native_DM value(
const DM& x,
const std::vector<MX>& values=std::vector<MX>())
const;
261 native_DM value(
const SX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
278 std::string return_status()
const;
283 std::vector<MX> initial()
const;
288 std::vector<MX> value_variables()
const;
289 std::vector<MX> value_parameters()
const;
303 MX dual(
const MX& m)
const;
308 casadi_int nx()
const;
313 casadi_int np()
const;
318 casadi_int ng()
const;
346 DM x_linear_scale()
const;
347 DM x_linear_scale_offset()
const;
348 DM g_linear_scale()
const;
349 double f_linear_scale()
const;
372 Function to_function(
const std::string& name,
373 const std::vector<MX>& args,
const std::vector<MX>& res,
376 Function to_function(
const std::string& name,
377 const std::vector<MX>& args,
const std::vector<MX>& res,
378 const std::vector<std::string>& name_in,
379 const std::vector<std::string>& name_out,
382 Function to_function(
const std::string& name,
383 const std::map<std::string, MX>& dict,
384 const std::vector<std::string>& name_in,
385 const std::vector<std::string>& name_out,
397 static MX bounded(
const MX& lb,
const MX& expr,
const MX& ub) {
return (lb<=expr)<= ub; }
434 void update_user_dict(
const MX& m,
const Dict& meta);
435 void update_user_dict(
const std::vector<MX>& m,
const Dict& meta);
437 Dict user_dict(
const MX& m)
const;
443 void disp(std::ostream& stream,
bool more=
false)
const;
446 std::string get_str(
bool more=
false)
const;
455 void callback_class();
543 casadi_error(
"Callback objects cannot be copied");
545 virtual void call(casadi_int i) {
546 uout() <<
"This is a simple callback at iteration" << i << std::endl;
552 friend class InternalOptiCallback;
567 bool is_parametric(
const MX& expr)
const;
576 std::vector<MX> symvar()
const;
577 std::vector<MX> symvar(
const MX& expr)
const;
582 MetaCon canon_expr(
const MX& expr)
const;
591 void set_meta(
const MX& m,
const MetaVar& meta);
594 void set_meta_con(
const MX& m,
const MetaCon& meta);
596 void assert_active_symbol(
const MX& m)
const;
601 MX x_lookup(casadi_index i)
const;
602 MX g_lookup(casadi_index i)
const;
604 casadi_index g_index_reduce_g(casadi_index i)
const;
605 casadi_index g_index_reduce_x(casadi_index i)
const;
606 casadi_index g_index_unreduce_g(casadi_index i)
const;
608 std::string x_describe(casadi_index i,
const Dict& opts=
Dict())
const;
609 std::string g_describe(casadi_index i,
const Dict& opts=
Dict())
const;
610 std::string describe(
const MX& x, casadi_index indent=0,
const Dict& opts=
Dict())
const;
612 void show_infeasibilities(
double tol=0,
const Dict& opts=
Dict())
const;
614 void solve_prepare();
618 void res(
const DMDict& res);
620 std::vector<MX> constraints()
const;
621 MX objective()
const;
625 void assert_empty()
const;
632 void mark_problem_dirty(
bool flag=
true);
633 bool problem_dirty()
const;
636 void mark_solver_dirty(
bool flag=
true);
637 bool solver_dirty()
const;
640 void mark_solved(
bool flag=
true);
643 void assert_solved()
const;
644 void assert_baked()
const;
646 casadi_int instance_number()
const;
662 class CASADI_EXPORT
OptiSol :
public SWIG_IF_ELSE(PrintableCommon, Printable<OptiAdvanced>) {
666 void disp(std::ostream& stream,
bool more=
false)
const;
667 std::string get_str(
bool more=
false)
const;
677 native_DM value(
const MX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
678 native_DM value(
const DM& x,
const std::vector<MX>& values=std::vector<MX>())
const;
679 native_DM value(
const SX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
683 std::vector<MX> value_variables()
const;
684 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